CS 1: Winter 2016

**Subject to change with minimal notice.** Short assignments will be posted as they go out.

- Monday, January 4. Lecture 1: Introduction. CS in arts, sciences, engineering. Simple programs and the program counter. Short assignment 1 out.
- Wednesday, January 6. Lecture 2: Commands and function calls.
- Friday, January 8. Lecture 3: Variables, memory, data types, expressions, and operators. Short assignment 2 out.

- Monday, January 11. Lecture 4: Boolean expressions. Flow of control: while-loops, if-statements, else-statements, if-ladders. Animations. Short assignment 3 out.
- Wednesday, January 13. Lecture 4, continued: if-ladders, animations. Lecture 5: Function definitions and function calls. Built-in functions. Functions that return random numbers. Local and global variables. More on functions. Debugging. Short assignment 4 out.
- Thursday, January 14 (x-hour). Lecture 5, continued.
- Friday, January 15. Lecture 6: Mouse and keyboard input. Lab assignment 1 out.

- Monday, January 18.
*No class*: MLK Day. Recitation sections held at their usual times. - Wednesday, January 20. Lecture 7: Lists and for-loops. Short assignment 5 out.
- Thursday, January 21 (x-hour). Lecture 8: More about lists. Nested loops. Selection sort. Lab assignment 1 checkpoint due.
- Friday, January 22. Lecture 9: More about lists. Physics and physical simulation.

- Monday, January 25. Lecture 9, continued. Lecture 10: Introduction to classes and objects. Lists of objects. Lab assignment 1 due.
- Wednesday, January 27. Lecture 10, continued: More on classes and objects.
- Thursday, January 28 (x-hour). Optional review session.
**Exam 1, 6:00 to 9:00 pm, LSC 100.** - Friday, January 29. Lecture 11: Object-oriented design example, part 1: The Game of Life. Short assignment 6 out.

- Monday, February 1. Lecture 11, continued: Object-oriented design example, part 2. Lab assignment 2 out.
- Wednesday, February 3. Lecture 11, continued: Object-oriented design example, part 3.
- Thursday, February 4:
*No class.*Lab assignment 2 checkpoint due. - Friday, February 5. Lecture 12: Reading and writing files. Lecture 13: Recursion.

- Monday, February 8. Lecture 13, continued: More on recursion. Lecture 14: Sorting: insertion sort, merge sort. Lab assignment 2 due. Lab assignment 3 out. Short assignment 7 out.
- Wednesday, February 10. Lecture 14, continued. Lecture 15: Analysis of algorithm running times. Big-O notation. Binary search vs. linear search.
- Thursday, February 11.
*No class.*Lab assignment 3 checkpoint due. - Friday, February 12. Lecture 15, continued. Lecture 16: Analysis of sorting algorithms.

- Monday, February 15. Lecture 17: Linked lists. Lab assignment 3 due.
- Wednesday, February 17. Lecture 17, continued: More on linked lists.
- Thursday, February 18 (x-hour). Optional review session.
**Exam 2, 6:00 pm to 9:00 pm, LSC 100.** - Friday, February 19. Lecture 18: Dictionaries.

- Monday, February 22. Lecture 19: Graphs: representation, breadth-first seach. Lab assignment 4 out.
- Wednesday, February 24. Lecture 20: Cryptography.
- Thursday, February 25.
*No class.*Lab assignment 4 checkpoint due. - Friday, February 26. Lecture 20, continued: More cryptography.

- Monday, February 29. Finish cryptography. Lecture 21: Computer systems. Lab assignment 4 due. Lab assignment 5 out.
- Wednesday, March 2. Lecture 22: Computer circuits.
- Thursday, March 3.
*No class.*Lab assignment 5 checkpoint due. - Friday, March 4. Lecture 23: Computer circuits, continued.

- Monday, March 7. Lecture 24: Limits of computation. Lab assignment 5 due.
- Wednesday, March 9. Review session for final exam, 10:00–11:30 am in LSC 100.
- Saturday, March 12.
**Final exam, 11:30 am to 2:30 pm, location TBA.**