Schedule
This page contains the course schedule for CS35.
Each week includes a list of topics, lecture videos (if applicable), optional readings, and a link to any tasks or lab assignments.
[+]Week 1 - Getting Started
Lecture Videos - Week 1 Playlist - Example Code
Optional Readings
- Goldwasser and Letscher: Ch 1-6
- Schaffer: Ch 1
Tasks
[+]Week 2 - Programming in C++
Lecture Topics - Week 2 Playlist - Example Code
- Debugging
- Code Style
- Command Line Arguments
- Functions
- Static Arrays
- Loops
- Pointers
- Dynamic Arrays
- Memory Management
- FileIO
Optional Readings
- Review the readings from Week 1
- Start looking at Goldwasser and Letscher: Ch 7-8, 12
Tasks
[+]Week 3 - Classes and Objects
Lecture Topics - Example Code
- Casting
- Source files (.cpp) and header files (.h)
- Declaration vs definition
- Classes and objects
- Member variables and methods
- Constructors
- Stack diagrams
- Inheritance
- Parent and child classes
- Polymorphism
- Virtual methods and method overriding
Optional Readings
Tasks
[+]Week 4 - Finishing OOP and Runtime Analysis
Lecture Topics - Example Code
- More polymorphism examples
- Access modifiers
- Parent constructors
- Arrays with mixed type objects using polymorphism
- Basic Functions and Introduction to Big-O
- Big-O Proofs
- Definition of Runtime
- Computational Problems, Algorithms, and Runtime
Optional Readings
Tasks
- Lab Assignment 2 Due on Wednesday, February 9th @ 11:59pm ET
- Lab Assignment 3: Shapes (Due on Wednesday, February 16th @ 11:59pm ET)
[+]Week 5 - Sorting
Lecture Topics - Example Code
- Introduction to Sorting
- Selection Sort
- Insertion Sort
- Quick Sort
- Quick Sort Implementation
- Merge Sort
Optional Readings
- Finish up reading Schaffer: Ch 3, Ch 7 Secs 1,2,4,5
Tasks
[+]Week 6 - Lists
Lecture Topics - Example Code
- Abstract Data Types (ADT's)
- Introduction to Lists
- ArrayLists
- LinkedLists
- Templates and Specialization
Optional Readings
- Schaffer: Ch 4 Sec 1
- Start looking at Schaffer: Ch 4 Secs 2-3
Tasks
- Lab Assignment 4 Due on Wednesday, February 23rd @ 11:59pm ET
- Lab 5: ASCIImation (Due on Wednesday, March 2nd @ 11:59pm ET)
[+]Week 7 - Stacks; Queues; Search Algorithms
Lecture Topics - Example Code
- Runtime Analysis for Lists
- Stacks
- Queues
- OrderedCollection
- Maze Game
- Depth First Search (DFS)
- Breadth First Search (BFS)
- Mathematical Properties
Optional Readings
- Finish up reading Schaffer: Ch 4 Secs 2-3
- Start looking at Schaffer: Ch 2 Secs 4-6
- Start looking at Schaffer: Ch 5 Sec 1
Tasks
- Lab Assignment 5 Due on Wednesday, March 2nd @ 11:59pm ET
- Lab 6: Labyrinth (Due on Wednesday, March 23rd @ 11:59pm ET)
[+]Week 8 - Mathematical Induction; Midterm Exam
Lecture Topics - Example Code
- Proof by Mathematical Induction
- Strong Induction
- Midterm Exam
Optional Readings
Tasks
[+]Week 9 - Dictionaries; Binary Search Trees
Lecture Topics - Example Code
- Dictionaries
- Rooted Trees and Binary Trees
- Tree Traversals
- Binary Search Trees
- Runtime Analysis for BST's
Optional Readings
- Finish up reading Schaffer: Ch 5 Sec 1
- Schaffer: Ch 5 Secs 2 - 4
- Start looking at Schaffer: Ch 13 Sec 2
- BST Animations
Tasks
[+]Week 10 - Balanced BST's; Priority Queues
Lecture Topics - Example Code
- Balanced BST's
- AVL Trees
- Tree Rotations and Rebalancing
- Priority Queues
- Binary Heaps
- Insert and RemoveMax Operations
- Efficient Heap Construction
Optional Readings
Tasks
[+]Week 11 - Heap Sort; Hash Tables
Lecture Topics - Example Code
- Heap Sort
- Hash Tables
- Hash Functions
- Collisions
- Hash Tables with Separate Chaining
Optional Readings
- Start looking at Schaffer: Ch 9 Sec 4
Tasks
[+]Week 12 - Linear Probing; Graphs
Lecture Topics - Example Code
- Hash Tables with Linear Probing
- Runtimes for Dictionary Operations
- Introduction to Graphs
- Four Ways to Represent Graphs
- Simple Graphs
- Connectedness
- Graph Reachability Problem
- Depth First Search
Optional Readings
- Finish up reading Schaffer: Ch 9 Sec 4
- Start looking at Schaffer: Ch 11
Tasks
[+]Week 13 - Graph Algorithms: Part 1
Lecture Topics
- Graph Implementations
- Trees as Graphs
- Sizes of Vertex and Edge Sets
- Breadth First Search; Shortest Length Paths
- Weighted Graphs; Minimum Weight Paths
- Directed Graphs; Directed Acyclic Graphs
- Dijkstra's Algorithm
Optional Readings
- Continue looking at Schaffer: Ch 11
Tasks
[+]Week 14 - Graph Algorithms: Part 2; References
Lecture Topics - Example Code
- Runtime Analysis of Dijkstra's Algorithm
- Topological Sort
- Binary Search
- References
Optional Readings
- Finish up reading Schaffer: Ch 11
- Look again at Goldwasser and Letscher: Ch 8 Sec 2
Tasks