CS 3 (Spring 2025)

Welcome to CS 3! We’re super excited to have you here this term!

Most Recent Announcements

Due Next

Calendar

Wellness and Inclusion

It is very important to us that you succeed in CS 3. We provide many extra resources to help you. The professors and the TAs hold many office hours.

It is also very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary. You can also visit the counseling center if you find you need help beyond the course staff. If you have a temporary health condition or permanent disability (either mental health or physical health related), you should contact accessibility services if you have not already. Additionally, if there is something we can do to make your experience better, please let us know.

Diversity, inclusion, and belonging are all core values of this course. All participants in this course must be treated with respect by other members of the community in accordance with the honor code. If you feel unwelcome or unsafe in any way, no matter how minor, we encourage you to talk to Adam or one of the Deans. We view these sorts of honor code violations as completely unacceptable, and we take them very seriously.

Tools

Course Staff

Instructors

they/them
Book an appointment!
Annenberg 115
blank@caltech.edu
(626) 395-1765
he/him
Book an appointment by email!
Annenberg 245
tsang@caltech.edu
(626) 395-6251

Teaching Assistants

Hopper
she/her
hopper@
Max Chen
he/him
mfchen@
Ellie Chen
she/her
echen2@
Marco Yang
he/him
myang2@
Reiden Walker
he/they
rrwalker@
Ryan Lin
he/him
rylin@
Simone Shevchuk
she/her
sshevchu@
Thanhthanh Nguyen
they/she
tnguyen8@
Vansh Tibrewal
he/him
vtibrewa@

Handouts

The following is a list of handouts that you might find helpful throughout the course. We’ve categorized them by when they are useful.

Course Information

Syllabus – an overview of the course and administrative information

Setup Instructions – setup instructions for the course

Collaboration

Pair Programming – introduction to pair programming

Collaboration Policy – the course collaboration policy

Code Quality and Docs

Code Quality Guidelines – guidelines for how you should write C code

C Documentation – documentation for C standard library functions

Projects and Submission

Merge Requests – instructions on to make a merge request to complete reworks

Debugging with VSCode and Emscripten – an introduction to debugging strategies

Debugging Guide for C – a list of common error messages in C and potential causes

Schedule

L00 Tue, Apr 01 Introduction / Basic C [ pdf ]
L01 Thu, Apr 03 Pointers [ pdf ]
DUE Fri, Apr 04
11:30 pm
project00 (abc's) [ guide ]
This project helps us learn the basics of C.
L02 Tue, Apr 08 More Pointers
DUE Fri, Apr 11
11:30 pm
project01 (star) [ guide ]
This project introduces us to creating a demo using emscripten and SDL.
L03 Tue, Apr 15 Common C Bugs
DUE Wed, Apr 16
11:30 pm
webserver01 (dictionary) [ guide ]
This project focuses on memory ownership and implementing a basic dictionary in C.
L04 Thu, Apr 17 Abstraction in C
DUE Fri, Apr 18
11:30 pm
project02 (SDL) [ guide ]
This project helps us learn how to render images and text using SDL.
L05 Tue, Apr 22 String Library (Practicum)
DUE Wed, Apr 23
11:30 pm
webserver02 (requests) [ guide ]
This project introduces us to http requests.
L06 Thu, Apr 24 Addresses and More More Pointers
DUE Fri, Apr 25
11:30 pm
project03 (keyboard) [ guide ]
This project helps us learn how to use key handlers with SDL.
L07 Tue, Apr 29 More More More Pointers
DUE Thu, May 01
01:55 pm
quiz01
L08 Thu, May 01 In-Class Quiz
L09 Tue, May 06 BMP Library 1
L10 Thu, May 08 BMP Library 2
DUE Sat, May 10
11:30 pm
project04 (collision) [ guide ]
This project introduces us to collision detection.
L11 Tue, May 13 BMP Library 3 (Practicum)
DUE Wed, May 14
11:30 pm
game_design_document (gdd) [ guide ]
This document will be used to outline the design of your final game.
L12 Thu, May 15 Regular Expression Library (Practicum)
DUE Fri, May 16
11:30 pm
project05 (assets) [ guide ]
This project introduces us to an asset management library.
L13 Tue, May 20 Bitops
DUE Wed, May 21
11:30 pm
webserver03 (routers) [ guide ]
This project introduces us to routers.
L14 Thu, May 22 TBD
DUE Fri, May 23
11:30 pm
project06
DUE Tue, May 27
01:55 pm
quiz02
L15 Tue, May 27 In-Class Quiz
L16 Thu, May 29 Llama VM
L17 Tue, Jun 03 LLama VM Part 2
L18 Thu, Jun 05 Victory Lap
DUE Fri, Jun 06
11:30 pm
webserver04
DUE Sun, Jun 08
11:30 pm
game