Fall 2023
Welcome to CS 32! This is the class Git repo. Assignments will be posted here as they're released; they can be turned in on Gradescope. If you're looking for administrative information, see the syllabus. If you have any questions, you can ask on Piazza; there are more links there as well, on the class links post.
- Lectures 14:00 to 15:15 on Mondays and Wednesdays in TD-W 1701
- Labs 14:00 to 19:00 on Tuesdays in Phelps 3525
- Jiayi's Office Hours 10:00 to 11:00 on Tuesdays in CSIL
- Shinda's Office Hours 12:45 to 13:45 on Tuesdays in the TA Trailer
- Maya's Office Hours 11:00 to 12:00 on Wednesdays in CSIL
- Roman’s Office Hours 12:30 to 13:30 on Wednesdays in CSIL
- Kevin's Office Hours 15:30 to 16:30 on Wednesdays in CSIL
- Tim's Office Hours 15:30 to 16:30 on Wednesdays in CSIL
- Mujia's Office Hours 16:00 to 17:00 on Wednesdays in CSIL
- Ethan's Office Hours 09:30 to 10:30 on Thursdays in CSIL
- Peter's Office Hours 14:00 to 15:00 on Thursdays in CSIL
- Jason's Office Hours 15:00 to 16:00 on Thursdays in CSIL
Assignments are due before midnight Pacific Time unless otherwise noted
Scrypt - a lightweight scripting language.
- Checkpoint 01 - due Monday, October 16th.
- Track A: The lexer.
- Track B: The S expression parser.
- Checkpoint 02 - due Thursday, October 26th.
- Track A: Variables.
- Track B: Infix expressions.
- Checkpoint 03 - due Monday, November 6th.
- Track A: Booleans.
- Track B: Statements.
- Checkpoint 04 - due Friday, November 17th.
- Track A: Support.
- Track B: Functions.
- Track C: Arrays.
Arcade - a simple video game.
- Checkpoint 01 - due Tuesday, November 28th.
- Find a group, decide on a game, and sign up with a TA.
- Checkpoint 02 - due Friday, December 1st, at 10:00 AM.
- Track A: Create an OpenGL window.
- Track B: Draw a user-controlled player object.
- Track C: Draw some animated non-player objects.
- Checkpoint 03 - due Friday, December 8th, at 10:00 AM.
- Add the minimum set of features for a playable game.
- Add some bonus features for extra credit.
- This is the final assignment!
14:00 to 15:15 on Mondays and Wednesdays in TD-W 1701
Date | Topics |
---|---|
October 2nd | Administrative stuff; overview of the projects |
October 4th | Git review; branches and code review; interfaces and module boundaries |
October 9th | Inheritance; virtual functions |
October 11th | The implementation of inheritance and virtual functions |
October 16th | Abstract classes; template functions and classes |
October 18th | |
October 23rd | Template specialization; unions; tagged unions |
October 25th | Unique pointers |
October 30th | Statements vs expressions; shared pointers |
November 1st | More shared pointers; weak pointers; lambda functions |
November 6th | More lambda functions; functional(-ish) programming |
November 8th | Templated functional(-ish) programming; operator precedence parsing |
November 13th | Multithreading; race conditions; mutexes |
November 15th | More multithreading; mutexes; deadlock |
November 20th | Hacking 101: function calls, stack layout, and buffer overflows |
November 22nd | Hacking 102: stack canaries, ASLR, shellcode, return-to-libc |
November 27th | Multiprocessing and multithreading; process-level memory layout |
November 29th | More multithreading; atomic variables; async; promises and futures |
December 4th | Basic OpenGL with GLUT; Boids |
December 6th | More Boids; the end - good luck! |