Lab Overview
NOTE: Due to summer staffing, Labs may use our scheduled Quiz section instead, or the hour immediately after class with student consent.
Lab sessions are held every week with the possible exception of Exam weeks, and will be conducted by a team of TAs or the Instructor. Labs are NOT just summaries of previous lecture content and may contain completely new 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 3 labs during the semester and still receive credit for the lab portion. You have 3 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 show honest effort on the assigned work. 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 consent and 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 |
|---|---|---|---|---|
| 1 | Week 2 | Git | Git, GitHub | See shared folder |
| 2 | Week 2 | GDB | Debugging | See shared folder |
| 3 | Week 3 | Makefiles | Make, Build Systems | See shared folder |
| 4 | Week 3 | Inheritance | Inheritance, Polymorphism, OOP | See shared folder |
| 5 | Week 4 | Templates | Templates | See shared folder |
| 6 | Week 4 | Midterm 1 Review Lab | Midterm1Lab_Student.pdf | |
| 7 | Week 5 | Heaps | Heaps, Priority Queues | See shared folder |
| 8 | Week 5 | Binary Trees | AVL, BST | See shared folder |
| 9 | Week 6 | MT2 Review | Recursion, Graph Algorithms | See shared folder |
| 10 | Week 6 | Hashtables | Hashtables, Hashing | See shared folder |
| 11 | Week 7 | Recursive Backtracking & Counting | See shared folder | |
| 12 | Week 7 | Counting & Probability | Counting | See shared folder |
| 13 | Week 8 | Number Theory | Number Theory | See shared folder |
| 14 | Week 9 | Final Review | See shared folder |