Wednesday, October 16: Bryce's office hours will be in the GSL as Google will be using the regular location.

Academic Integrity Violation Counter: 15 (let's try not to raise it please)

Wednesday, November 27: There will not be class on this date. Happy early Thanksgiving!

First Lab: The first lab is Monday September 30 at your designated lab time. Note that this lab occurs before the first lecture. Anyone who does not complete this lab, will be dropped from the course. If you are not yet enrolled in the course please attend the 9AM lab if your perm number ends with an odd digit, or the 10AM lab if your perm number ends with an even digit.

Piazza: Join the class discussion on Piazza. All CS24 related questions must be asked through Piazza when not asked in-person; emailed questions will not be answered. Snail-mailed questions require a stamped and addressed return envelope. However, such questions will likely not receive a timely response.


Dates and Times

Lectures: Monday and Wednesday 14:00 - 15:15 in Psychology 1924
Labs: Monday 09:00-09:50, 10:00-10:50, 11:00-11:50, 12:00-12:50 in Phelps 3525
Final: Monday, December 09 16:00-19:00 in Psychology 1924

Course Description

Intermediate building blocks for solving problems using computers. Topics include data structures, object-oriented design and development, algorithms for manipulating these data structures and their runtime analyses. Data structures introduced include stacks, queues, lists, trees, and sets.

Required Texts

  • C++ Plus Data Structures, 5th edition
    Author: Nell Dale
    ISBN: 978-1449646752
    Links: Amazon
    Note: Previous editions of the textbook are suitable for the class. However, you will need to be aware of any discrepancies.

Course Objectives

  • "Become a programmer" – make programming a tool, not a challenge in itself
  • Learn how to design and implement programs using object-oriented design principles
  • Learn basic data structures and how to choose between them.
  • Apply new concepts to design efficient code.

Assignments and Grading (tentative to change prior to the start of class)

  • 42% Projects (3, split evenly)
  • 20% (*) Final
  • 18% Labs (10, split evenly)
  • 16% (*) Midterm
  • 04% Participation

(*) While the midterm and final are not worth a huge percentage of the grade, your overall score in the class will be capped at 15% above the weighted average of your midterm and final exam scores. For example, if you average (weighted) 68.34% (D+) on the midterm and the final, then the best grade you can receive in the class is 83.34% (B).

You are expected to work individually on all assignments unless explicitly stated otherwise.

Participation points can be gained both through participation in class and online, via Piazza. Additionally, participation points can be earned by being the first student to notify me of any errors (grammar, spelling, code, etc.) on any of the course material.

Letter Grades

Letter grades will be assigned as follows (the number listed is the lower bound):

A+ 96 2/3
A  93 1/3
A- 90
B+ 86 2/3
B  83 1/3
B- 80
C+ 76 2/3
C  73 1/3
C- 70
D+ 66 2/3
D  63 1/3
D- 60
F  0


Late Submissions

All submissions are considered late when the submission log date later than the deadline. Late submissions will be penalized one percentage point for every five-minute interval late. The following are a few examples for clarity assuming a deadline of 23:59:59 on the previous day:

  • A submission recorded at 00:00:00 will receive 99% of its assigned score. The same is true for a submission received at 00:04:59.
  • A submission recorded at 00:45:00 will receive 90% of its assigned score.
  • A submission recorded at 04:05:00 will receive 50% of its assigned score.
  • A submission recorded at 08:15:00 or later following or a 23:59:59 deadline will receive a zero.

Grading Petitions

Grading petitions apply only to handwritten work (includes exams). If you feel such work was incorrectly graded, you may ask for it to be re-graded only after the following conditions are met:

  • 24 hours have passed since the work has been returned to you.
  • You have written a clear, detailed argument in favor of your answer. In your argument, you need to demonstrate a clear understanding of the expected answer and compare the two.

When both these conditions are met, please deliver both your written work and written argument to the instructor.

Note that you needn't follow this procedure if your answer matches the expected answer and it was marked incorrect. In that case, you may indicate the mistake to the instructor during office hours.

Lecture Attendance

Neither lecture, nor lab attendance (after the first lab) is mandatory. Lecture attendance is always strongly encouraged.


Attendance at the first lab is mandatory so that you can be paired up with another student. This pairing will persist throughout the class, and may only be changed with instructor approval. Subsequent lab attendance is not required, but strongly encouraged. Each lab is due by 23:59:59 on the day of the lab. If you are working in a group, make sure to create the group (for each assignment) on the submission system.

Academic Integrity

Students of this course are expected to support the ideal of academic integrity as described on UCSB's Office of Judicial Affairs website. Students discovered to be cheating, plagiarizing or colluding will at the very least receive a zero on the assignment and may be suspended from UCSB pending severity.

Below are some examples of violations of academic integrity. Note that this list isn't exhaustive:

  • Showing any portion of your code to another student
  • Viewing any portion of another student's code
  • Copying another student's work
  • Modifying another student's work to make it "your own"
  • Copying or modifying anyone else's work without attribution

The following are some examples of acceptable forms of help:

  • Discussing your assignment with the Professor and TA
  • Discussing the general details of the assignment with others

Online Interaction

All announcements and online discussion will occur via Piazza. CS24 related questions asked via email will not be answered. Personal questions or questions that contain too much information specific to your implementation should be sent as a private question via Piazza (see "Post privately to instructors or students").

You are encouraged and will be rewarded with participation points for non-anonymously asking and responding to questions via Piazza. While you may currently post questions or provide feedback anonymously, this feature will be removed if it becomes abused. Finally, as a hopefully unnecessary reminder, please be respectful to your peers when responding to questions.


Template design by Andreas Viklund