Piazza: Join the class discussion on Piazza. All CS32 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.

As of July 30 the course is full. No additional students will be added to the class at this time.


Dates and Times

Lectures: Monday, Tuesday, and Wednesday 12:30 - 13:55 in Phelps 2510
Labs: Thursday 14:30 - 15:55 in ESB 1003 (Cooper Lab)
Final: Wednesday August 12 12:30 - 13:55 in Phelps 2510

Course Description

Advanced topics in object-oriented computing. Topics include encapsulation, data hiding, inheritance, polymorphism, compilation, linking and loading, memory management, and debugging; recent advances in design and development tools, practices, libraries, and operating system support.

Required Texts

  • Problem Solving with C++, 8th edition
    Author: Walter Savitch (Wikipedia info)
    ISBN: 9780132162739
    Links: Amazon
    Note: Previous editions of the textbook are suitable for the class. However, you will need to be aware of any discrepancies.
  • Computer Science 32 Reader
    Available at the Alternative Digital Printing in the UCEN
    Note: The reader from spring 2012 is identical save for the cover page.

Student Learning Outcomes

  • By the end of this course, you will be able to use the shell to start processes in all possible input/output redirection states.
  • By the end of this course, you will have designed an object-oriented project that demonstrates the use of templates, inheritance, polymorphism, friend classes and operator overloading.
  • By the end of this course, you will be able to justify the selection of a particular sort algorithm for a given task.
  • By the end of this course, you will be able to step-through the process the operating system performs to load a program into memory.
  • By the end of this course, you will be able to identify where in a process's memory structure a defined variable is located.

Assignments and Grading

  • 24% Projects (2, split evenly)
  • 24% Labs (5, split evenly)
  • 24% Final
  • 16% Midterm
  • 08% Homeworks (2, split evenly)
  • 04% Participation

You are expected to work individually on all assignments save for the labs.

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.


Late Submissions

All submissions are considered late when the submission log date (from turnin) is later than the deadline. The submission log date is the time of the CSIL server under normal-operating conditions. 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. 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

Lecture attendance is not mandatory but always 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. Only one student in the pair needs to submit the project.

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. CS32 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 "Ask questions privately to instructors").

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.

Excluded Topics

Given that this course is normally taught in 10 weeks instead of 6 weeks, there are a number of topics that won't be covered. It is strongly encouraged that you familiarize yourself with this material in order to be on par with students who take CS32 in other quarters.

We are skipping the following sections in the reader:

  • Unix Programming Tools
  • Program Building
  • Libraries

Similarly, we are skipping chapter 18, The Standard Template Library, in the textbook.

The following chapters from the textbook are skipped because they should mostly be review from CS16 and CS24:

  • Chapters 1-9, Basic programing concepts
  • Chapter 13, Pointers and Linked Lists
  • Chapter 14, Recursion

Finally, chapter 12, Separate Compilation and Namespaces, and chapter 16, Exception Handling, are not typically covered in this class; therefore, we are also excluding them.


Template design by Andreas Viklund