CS 32: Introduction to Computer Science II

Computer Science Department
University of California, Los Angeles
Winter 2022

SYLLABUS

Course Objectives Lecture and Discussion Sections
Course Website Programming Projects and Homeworks
Instructors and Class Meetings Examinations
Schedule of Lecture Topics and Exams Grading
Textbook

Course Objectives

In this course, you will learn how to employ data abstraction to build programs larger than those you constructed in CS 31. You will learn how to use a variety of data structures in the course of solving problems, and importantly, how to analyze what data structures and algorithms are most appropriate for a given problem. In addition, you will deepen your understanding of modern programming by learning the principles of object-oriented and generic programming.

Course Website

The URL for the course website is https://cs.ucla.edu/classes/winter22/cs32. You must check the site for announcements at least every other weekday. You must also check your email as regularly. The course Bruin Learn site is used mostly to house Zoom links to lectures, discussions, office hours, and learning assistant workshops; recorded lectures and discussions; and material posted by TAs.

Instructors and Class Meetings

Lecture 1
MW 10-11:50
Franz 1178
Carey Nachenberg
climberkip@gmail.com
Lecture 2
MW 12-1:50
Boelter 3400
David Smallberg
das@cs.ucla.edu
Lecture 3
MW 4-5:50
Boelter 3400
David Smallberg
das@cs.ucla.edu
Discussion 1A
F 10-11:50
Haines A2
Jason Panelli
panelli@ucla.edu
Discussion 1C
F 10-11:50
Rolfe 1200
Kareem Ahmed
kareem.yousrii@gmail.com
Discussion 2A
F 12-1:50
Pub Aff 2232
Jake Wallin
jakewallin82@gmail.com
Discussion 2C
F 12-1:50
Rolfe 3126
Yiyou Chen
gerry99@ucla.edu
Discussion 3A
F 12-1:50
Dodd 167
Sandeep Sandha
sandha.iitr@gmail.com
Discussion 3C
F 2-3:50
Dodd 167
Qian Long
longqian@ucla.edu
Discussion 1B
F 10-11:50
Dodd 78
Shikha Mody
smody@ucla.edu
Discussion 1D
F 10-11:50
Franz 2258A
Nikki Woo
nikki.k.woo@gmail.com
Discussion 2B
F 12-1:50
Dodd 170
Manoj Reddy
mdareddy@cs.ucla.edu
Discussion 2D
F 2-3:50
Pub Aff 2232
Song Jiang
songjiang@cs.ucla.edu
Discussion 3B
F 2-3:50
Rolfe 3126
Daniel Tan
bochentan@ucla.edu
 

Office hours for the instructors, TAs, and LAs are on the class web page.

Schedule of Lecture Topics and Exams

Week Date Topics Book
1 Jan.    3 Introduction, C++ Review Chapter 1
  Jan.    5 Data Abstraction, C++ Classes Chapter 1
  Jan.    7 Pointers, Dynamic Arrays, Resource Management Chapter 3
2 Jan.  10 Linked Lists Chapters 4 and 8
  Jan.  12 Stacks and Queues Chapters 6, 7, 13, and 14
3 Jan.  17 M. L. King, Jr., Day holiday  
  Jan.  19 Inheritance and Polymorphism Chapter 3
4 Jan.  24 Inheritance and Polymorphism Chapter 3
  Jan.  26 Object-Oriented Design Principles  
5 Jan.  31 Recursion, Midterm Review Chapters 2 and 5
  Feb.   1 (Tue.) Midterm exam, part 1 (6:30 pm to 7:30 pm)  
  Feb.   2 Recursion Chapters 2 and 5
6 Feb.   7 Templates, Iterators, STL  
  Feb.   9 Algorithmic Efficiency, Sorting Chapters 10 and 11
7 Feb. 14 Sorting Chapter 11
  Feb. 16 Trees, Midterm review Chapter 15
8 Feb. 21 Presidents' Day holiday  
  Feb. 22 (Tue.) Midterm exam, part 2 (6:30 pm to 8:00 pm)  
  Feb. 23 Trees Chapter 16
9 Feb. 28 Tables, Tree-based Tables, Hash Tables Chapter 18
  Mar.   2 Trees and Arrays, Priority Queues, Heaps Chapter 17
10 Mar.   7 Graphs Chapter 20
  Mar.   9 Review  
end of 10 Mar. 12 (Sat.) Final exam (11:30 am to 2:30 pm)  

Textbook

If you prefer a traditional textbook for coverage of the course material in a form other than the live or recorded lectures or Carey Nachenberg's online slides, we recommend Data Abstraction and Problem Solving with C++: Walls and Mirrors, Seventh Edition, by Frank M. Carrano, Pearson, 2017. The Sixth Edition, the Fifth Edition or even the Fourth Edition would do as well.

Lecture and Discussion Sections

Lectures will present the material you'll need to know for this class. In discussion sections, your TA may review material covered in the lectures, discuss homeworks and programming projects, and answer questions. Your LA and TA will pose problems to solve collaboratively in class to help build your problem solving skills and ensure you understand key concepts.

Programming Projects and Homeworks

You cannot learn how to write large programs without writing large programs. There will be four programming projects. Each project specification will detail any requirements that differ from the general project requirements. Your program correctness score is based on your program's correctness as determined by our testing. The amount of time you spent working on the program is irrelevant; indeed, if you follow our software development advice, you'll probably spend less time and get a higher score than if you don't.

Since the projects cannot give you experience with all the material in the course, there will be five homework assignments in addition to the projects. These may require you to answer some questions and analyze or write small programs. Some of the work you put into the homework will do double duty: it will help you with a programming project or will serve as a good study guide for an exam. If you are seriously interested in mastering the course material, you will do every homework problem, even though not every problem of every homework assignment will be graded. (You won't know which problems won't be graded.)

Every C++ program you turn in for this class must run successfully using two compilers, as specified in the Project Requirements document.

Programming projects and homeworks are due at 11 PM on the dates listed below. Late submissions will be penalized by 0.0034722% per second (which comes to 12.5% per hour), making a submission worthless if submitted after 7 AM the next morning. It is your responsibility to start early and to make backups to removable devices or to online storage

Project 1  Wednesday, January 12
Homework 1  Tuesday, January 18
Project 2  Tuesday, January 25
Homework 2  Wednesday, February 2
Homework 3  Wednesday, February 9
Project 3  Part 1: Thursday, February 17 Sunday, February 20
Part 2: Thursday, February 24 Sunday, February 27
Homework 4  Tuesday, March 1
Project 4  Thursday, March 10 Tuesday, March 15
Homework 5  Thursday, March 10

Examinations

The midterms will cover material from the lectures. The final examination will cover material from the entire course.

Grading

Your grade in the course will be determined from your total score, although a final exam score below 40 may subject you to a failing grade regardless of your total score. The total score is determined from the graded materials as follows:

Project 1     1%
Project 2     8%
Project 3   13%
Project 4   13%
Homeworks   25%
Midterm   15%
Final exam   25%

In the event that the class is forced to be online for more than three weeks, we may alter the weights of these components.

The total points you earn from projects and homeworks (scaled to 0 through 100) will be capped at 30 points above the mean of your exam scores (scaled to 0 through 100). For example, if you average 90 on the assignments, your midterm score is 60, and your final is 40, then your assignment average is treated as only 80 (because that's 30 more than the mean of 60 and 40). In other words, your assignment scores won't count fully if you can't show from your exam scores that you learned what you should have from the assignments.

A request for reconsideration of the grading for an item must be made within one week of our sending you your score for that item.

Be sure that you have read and understood our expectations about academic integrity.