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 |
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.
The URL for the main course website is https://cs.ucla.edu/classes/winter23/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 2 and 3 and learning assistant workshops; recorded lectures and workshops; and material posted by TAs.
Lecture 1 TR 4-5: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 Dodd 161 Chelsey Wang chelseyyywang@gmail.com |
Discussion 1D F 10-11:50 Franz 1260 Meihua Dang mhdang@cs.ucla.edu |
Discussion 2A F 12-1:50 Dodd 167 Rohan Wadhawan rwadhawan7@g.ucla.edu |
Discussion 2D F 2-3:50 Rolfe 3126 Rahul Kapur rahulkapur@g.ucla.edu |
Discussion 3A F 12-1:50 Royce 164 Kevin Tang kevintang@cs.ucla.edu |
Discussion 3D F 4-5:50 Dodd 78 Rakesh Bal rakeshbal99@g.ucla.edu |
Discussion 1B F 10-11:50 Dodd 121 Kimberly Shi kimberlyshi@cs.ucla.edu |
Discussion 1E F 10-11:50 Royce 190 Evelyn Qiang evelynqiang@ucla.edu |
Discussion 2B F 12-1:50 Royce 156 Andrew Choi asjchoi@g.ucla.edu |
Discussion 2E F 2-3:50 Boelter 5264 Srinath Naik Ajmeera srinath@g.ucla.edu |
Discussion 3B F 2-3:50 Dodd 167 Gan Kang gakangla@ucla.edu |
Discussion 3E F 10-11:50 PAB 1434A Albert Stanley albertstanley@ucla.edu |
Discussion 1C F 10-11:50 Franz 1178 Ruining Ding rding1507@ucla.edu |
Discussion 2C F 12-1:50 Kaufman 101 Arjun Subramonian arjunsub@cs.ucla.edu |
Discussion 2F F 10-11:50 PAB 1434A Albert Stanley albertstanley@ucla.edu |
Discussion 3C F 2-3:50 Royce 156 David Kao davidkao41@g.ucla.edu |
Office hours for the instructors, TAs, and LAs are on the class web page.
Week | Date | Topics | Book | |
---|---|---|---|---|
1 | Jan. 9/10 | Introduction, C++ Review | Chapter 1 | |
Jan. 11/12 | Data Abstraction, C++ Classes | Chapter 1 | ||
Jan. 13 | Pointers, Dynamic Arrays, Resource Management | Chapter 3 | ||
2 | Jan. 16/17 | Resource Management | Chapter 3 | |
Jan. 18/19 | Linked Lists | Chapters 4 and 8 | ||
3 | Jan. 23/24 | Stacks and Queues | Chapters 6, 7, 13, and 14 | |
Jan. 25/26 | Inheritance | Chapter 3 | ||
4 | Jan. 30/31 | Inheritance and Polymorphism | Chapter 3 | |
Feb. 1/2 | Object-Oriented Design Principles, Midterm Review | |||
5 | Feb. 6/7 | Recursion | Chapters 2 and 5 | |
Feb. 6 (Mon.) | Midterm 1 (6:00 pm to 7:30 pm) | |||
Feb. 8/9 | Recursion | Chapters 2 and 5 | ||
6 | Feb. 13/14 | Templates, Iterators, STL | ||
Feb. 15/16 | Algorithmic Efficiency, Sorting | Chapters 10 and 11 | ||
7 | Feb. 20/21 | Sorting | Chapter 11 | |
Feb. 22/23 | Trees | Chapter 15 | ||
8 | Feb. 27/28 | Trees, Midterm Review | Chapter 16 | |
Mar. 1 (Wed.) | Midterm 2 (6:00 pm to 7:30 pm) | |||
Mar. 1/2 | Tables, Tree-based Tables, Hash Tables | Chapter 18 | ||
9 | Mar. 6/7 | Hash Tables | Chapter 18 | |
Mar. 8/9 | Trees and Arrays, Priority Queues, Heaps | Chapter 17 | ||
10 | Mar. 13/14 | Graphs | Chapter 20 | |
Mar. 15/16 | Review | |||
end of 10 | Mar. 18 (Sat.) | Final exam (11:30 am to 2:30 pm) |
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, Fifth Edition, or even the Fourth Edition would do as well.
Lectures will present the material you'll need to know for this class. In discussion sections, your TA along with a learning assistant (LA) will pose problems to solve collaboratively in class to help build your problem solving skills and ensure you understand key concepts. They may answer questions that arise about these concepts, lecture topics, and programming projects.
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 18 | |
Homework 1 | Tuesday, January 24 | |
Project 2 | Tuesday, January 31 | |
Homework 2 | Wednesday, February 8 | |
Homework 3 | Wednesday, February 15 | |
Project 3 | Part 1: Part 2: |
|
Homework 4 | Tuesday, March 7 | |
Project 4 | Thursday, March 16 | |
Homework 5 | Thursday, March 16 |
The midterms will cover material from the lectures. The final examination will cover material from the entire course.
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 | 10% | |
Project 3 | 10% | |
Project 4 | 10% | |
Homeworks | 19% | |
Midterm 1 | 7% | |
Midterm 2 | 13% | |
Final exam | 30% |
The weights of these components may be altered if unforeseen circumstances affect an exam offering.
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 scores are 50 and 60, and your final is 40, then your assignment average is treated as only 80 (because that's 30 more than the mean of 50, 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.