Lab Overview
Lab sessions are held every week and will be conducted by a team of TAs and Tutors. Labs are NOT just summaries of previous lecture content. While you will do some review, the labs will often teach new tools (debuggers, unit testing, Makefiles, etc.) or have you practice skills in more depth than lecture was able to cover. Thus, it is very important you attend labs and give your best effort. This may be different from previous CS courses where labs/discussions were optional or done ahead of time. In CS104, you should treat labs as you do lectures and make it a priority to attend each week.
Policies
- Attendance: You must attend lab in person and in your registered section (seating is limited; do not attend a different lab).
- Allowed absences: You may miss at most 2 labs during the semester and still receive credit for the lab portion. You have 2 excused lab sessions (illness/emergency only). To use an excused absence, email your lab instructor in advance.
- Grading (CR/NC): To receive credit, attend for the vast majority of the session, participate in exercises, and achieve 50% or more on any assessments. Effort matters — ask questions and engage; lack of effort/work may result in no credit.
- Collaboration: Light pair collaboration is allowed and encouraged only when both partners clearly contribute. Do not direct or code for your partner. Staff may require independent work if needed.
- Make‑ups: Labs generally cannot be made up after the session unless pre‑approved for documented emergencies; otherwise, a missed lab counts toward your allowed absences.
- Disputes: If you have a dispute about attendance, contact your discussion/lab leader within 1 week.
Schedule
| ID | Week | Title | Topics | Slides |
|---|---|---|---|---|
| 0 | Week 1 | Class Setup | Compiler Toolchain, VSCode, and Github | No slides |
| 1 | Week 2 | Git | Git, GitHub | See shared folder |
| 2 | Week 3 | GDB | Debugging | See shared folder |
| 3 | Week 4 | Makefiles | Make, Build Systems | See shared folder |
| 4 | Week 5 | Inheritance | Inheritance, Polymorphism, OOP | See shared folder |
| 5 | Week 6 | Heaps | Heaps, Priority Queues | See shared folder |
| 6 | Week 7 | Midterm 1 Review Lab | See shared folder | |
| 7 | Week 8 | Templates | OOP | See shared folder |
| 8 | Week 9 | Binary Trees | AVL, BST | See shared folder |
| 9 | Spring Break | See shared folder | ||
| 10 | Week 10 | Backtracking | Recursion, Graph Algorithms | See shared folder |
| 11 | Week 11 | Hashtables | Hashtables, Hashing | See shared folder |
| 12 | Week 12 | Midterm 2 Review Lab | See shared folder | |
| 13 | Week 13 | Counting | Counting | See shared folder |
| 14 | Week 14 | Probability & Number Theory | Probability, Number Theory | See shared folder |
| 15 | Week 15 | Final Review | See shared folder |