CS 32 Fall '21

1 General info

Instructor: Mehmet Emre – emre@cs.ucsb.edu

Teaching Assistants: Bowen Zhang, Jiarui Zhu, Samridhi Maheshwari

Learning Assistants: Ben Darnell, Qiru Hu

Reader: TBD

This course is a continuation of introductory classes CS 16 and CS 24. We are going to explore more features of C++, generic programming, object-oriented programming, programming tools and compilation pipeline, and some data structures and algorithms along the way.

More details about course objectives and structure are in the syllabus.

We are using

  • GauchoSpace for class forums,
  • this website for disseminating materials, and
  • GradeScope for submitting assignments.

2 Open Lab Hours

You can see the open lab hours for Phelps 3525 here. You can go to the lab to work on your assignments during those times. See the Office Hours section below for when there will be a course staff member available in the lab to answer your questions.

3 Office Hours (tentative)

Check back this section on 10/4. If none of the office hours work for you, please let the instructor know.

Time Person Location
Monday 2–3pm Samridhi Online (see GauchoSpace for the Zoom link)
Monday 4:15–6pm Bowen Phelps 3525
Tuesday 5–7pm Ben Phelps 3525
Wednesday 4–5pm Jack Phelps 3526
Thursday 12:45–1:45pm Mehmet Phelps 3525
Friday 3–5pm Qiru Phelps 3525 (Starts on 10/8)

4 Calendar

See the calendar for the full details (I have entered all exams but not all labs/homework assignments yet), you can also add this calendar to any calendar app you use. The general outline is:

  • The homework assignments are due Tuesday before class. They are assigned in pairs most of the time.
  • The labs are due Wednesday 11:59pm, so you will have a chance to work on them in the lab hours.
  • The tentative exam dates are:
    • Midterm 1: Thursday, 10/21 in class.
    • Midterm 2: Thursday, 11/18 in class.
    • Final: Tuesday 12/7 4–7pm according to the registrar. Subject to change.
  • The lab on the Wednesday before Thanksgiving is happening but there is no attendance requirement (like all other labs) if you want to leave for home early. The lab is due on the same day.
  • The labs after Thanksgiving are due Friday so you don't have to work on a lab while on a break.

5 What to do by the first lab

5.1 Make sure you have a CSIL account and know how to use it

Ideally, before this lab begins, you will have been instructed to visit this link, and create your College of Engineering (CoE) computer account. You need to do this only if you don't have a CSIL account already.

You should already know the following from CS16 / CS24. If not, alert your TA/instructor immediately:

  • How to log in with your CoE/CSIL account.
  • How to use the Linux computers in:

    • Phelps 3525 (the computer lab where your sections are scheduled in), and
    • Computer Science Instructional Lab (CSIL) at Harold Frank Hall (accessed through an outside door on the side facing the ocean).

    The Linux computers in both places work the same way.

After making sure of this, go on to read the instructions for Lab 1.

6 Working in pairs

You can choose to work in pairs for some of the labs, in that case:

  • Review the following explanation on pair programming and Falco's definition for "strong-style pair programming".
  • Make an agreement to be respectful and work together to maximize your learning benefit.
  • There are many ways to do pair programming, we suggest:
    • Finding a partner of a similar skill level/confidence with C++ programming.
    • Finding a style that works best for you and your partner.
      • You can switch roles once per "step" (section) in the lab.
      • Or, you can switch roles periodically (e.g. every 10/15/20 minutes).
  • When you are not working at the physical lab, you and your partner can work using Zoom and screen sharing. If you are using Visual Studio Code, it has a pair programming plug-in. I have not personally used it, so you are on your own if you want to use it.
  • If you don't have a partner, you can use this GauchoSpace forum to find partners. Mention which section you are in, when you are making a post. If you don't have a partner by 9/27, I will send out a survey to match up people who are still looking for a partner.
  • You don't need to have the same lab partner for the whole class. If you want to change lab partners or work by yourself for any reason, let your current partner know as soon as possible and finish up any labs you have started working on together.

Make sure that you are both working on the lab assignment actively and together. The following arrangement is NOT OK:

  1. Students A and B form a pair.
  2. A works on the lab by themselves on Tuesday.
  3. B takes the work A has done so far and finishes the lab on Wednesday.

In the scenario above, A and B worked on only half of the lab assignment and did not practice half of the material in the lab, so it is not OK.

6.1 Additional requirements when working in pairs

  • Your partner must be enrolled in the same lab section as you.
  • You and your partner must agree to work together outside of lab section in case you do not finish the lab during your lab section. You must agree to reserve at least two hours outside of lab section to work together if needed (preferrably during an open lab hour where you can work in Phelps 3525 and ask a mentor for help). You are responsible for exchanging contact information in case you need to reach your partner. You can also work over Zoom, but make sure you know how to use SSH to connect to CSIL computers in that case.
  • You must write your names and perm numbers on each file submitted to Gradescope.

7 Lectures

8 Homeworks

This section contains the homework descriptions and any supplementary material you may need for the homework assignments. You are going to submit your homeworks to Gradescope. You can choose to type it up or fill the blanks in the PDFs provided below:

Homework Assigned Due
Homework 1 HTML / PDF / LaTeX <2021-09-23 Thu> <2021-10-05 Tue> @ 2pm
Homework 2 HTML / PDF / LaTeX <2021-09-23 Thu> <2021-10-05 Tue> @ 2pm
Homework 3 HTML / PDF / LaTeX <2021-09-23 Thu> <2021-10-05 Tue> @ 2pm
Homework 4 HTML / PDF / LaTeX <2021-10-05 Tue> <2021-10-12 Tue> @ 2pm
Homework 5 HTML / PDF / LaTeX <2021-10-05 Tue> <2021-10-12 Tue> @ 2pm
Homework 6 HTML / PDF / LaTeX <2021-10-12 Tue> <2021-10-19 Tue> @ 2pm
Homework 7 HTML / PDF / LaTeX <2021-10-12 Tue> <2021-10-19 Tue> @ 2pm
Homework 8 HTML / PDF / LaTeX <2021-10-19 Tue> <2021-10-26 Tue> @ 2pm

If you are using the LaTeX files to write up your homework (completely optional), you can download the preamble file, you need to put it in the parent directory as preamble.tex or change the \input{../preamble} line to point to the file.

9 Labs

Lab Assigned Due
Lab 1 <2021-09-27 Mon> <2021-10-06 Wed>
Lab 2 <2021-10-06 Wed> <2021-10-13 Wed>
Lab 3 <2021-10-13 Wed> <2021-10-20 Wed>
Lab 4 <2021-10-20 Wed> <2021-10-27 Wed>

10 Exams

11 Resources

  • cppreference.com – A good C++ reference website that also shows what is available different versions of the language. Avoid cplusplus.com if possible, as it contains subtly outdated information sometimes.
  • Abseil – a C++ library that provides near-equivalent of C++ standard library containers with better performance. It also has equivalents of parts of the new versions of the standard library. So it allows using modern-ish C++ constructs even if you are stuck with a C++11 compiler.

Author: Mehmet Emre


The material for this class is based on Prof. Richert Wang's material for CS 32