Welcome!

This course builds on the programming skills acquired in Computer Science 134. It couples work on program design, analysis, and verification with an introduction to the study of data structures. Data structures capture common ways in which to store and manipulate data, and they are important in the construction of sophisticated computer programs. Students are introduced to some of the most important and frequently used data structures: lists, stacks, queues, trees, hash tables, graphs, and files. Students will be expected to write several programs, ranging from very short programs to more elaborate systems. Emphasis will be placed on the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify.

Logistics

Team

Schedule

Week Date Lecture Slides Lecture Demo/Handouts Lab
0 Feb 7 0 - Welcome! [Recording] Class Survey
Due: Sunday 2/9 at 10pm
1 Feb 10 1 - Syntax Review [Recording]
Lecture 1 Code
Handout Lecture 1 ( Answers )
Lab 0: HelloWorld
[lab0-slides]
Feb 12 2 - Conditionals & Loops [Recording]
Lecture 2 Code
Feb 14 No lecture: Winter Carnival
2 Feb 17 3 - Scope [Recording]
Lecture 3 Code
Lab 1: Lightswitch
[lab1-slides]
Feb 19 4 - Reference Types [Recording]
Lecture 4 Code
Feb 21 5 - Arrays [Recording]
Lecture 5 Code
3 Feb 24 6 - ArrayLists & Inheritance [Recording]
Lecture 6 Code
Lab 2: Coinstrip
[lab2-slides]
Feb 26 7 - ADTs & Interfaces [Recording]
Lecture 7 Code
Feb 28 8 - Recursion & Quiz 1 [Recording]
Lecture 8 Code
4 Mar 3 9 - Branching Recursion
+ Nick Handford's slides
[Recording]
Lecture 9 Code
Lab 3: Recursion
[lab3-slides]
Mar 5 10 - Analysis & Big-O [Recording]
Lecture 10 Code
Mar 7 11 - LinkedLists [Recording]
Lecture 11 Code
5 Mar 10 12 - Stacks [Recording]
Lecture 12 Code
Lab 4: Big-O & Queues
Mar 12 13 - Queues [Recording]
Lecture 13 Code
Mar 14 14 - Data Structures Practice [Recording]
Lecture 14 Code
6 Mar 17 Guest Speaker - Murat Kurtcephe [slides] Review for Midterm
Mar 19 15- Ethics of Development
Mar 20 Evening Midterm 6-7:30 or 8-9:30
Mar 21 No lecture
Mar 22-Apr 6 Spring Break
7 Apr 7 16 - Sorting, Part 1 [Recording]
Lecture 16 Code
Lab 5: Sorting Phonebooks
[lab5-slides]
Apr 9 17 - Sorting, Part 2 [Recording]
Lecture 17 Code
Apr 11 18 - Sorting, Part 3 [Recording]
Lecture 18 Code
8 Apr 14 19 - Symbol Tables [Recording]
Lecture 19 Code
Lab 6: Searching for IP Addresses
[lab6-slides]
Apr 16 20 - Binary Search Trees [Recording]
See Lecture 19 Code
Apr 18 21 - Hash Tables, Part 1 [Recording]
Lecture 21 Code
9 Apr 21 22 - Hash Tables, Part 2 [Recording]
No Code
Lab 7: Trie for a Lexicon
[lab7-slides]
Apr 23 23 - Final Projects & Priority Queues [Recording]
No Code
Apr 25 24 - Graphs & Iterators [Recording]
Lecture 24 Code
10 Apr 28 25 - BFS & DFS [Recording]
No Code
Lab 8: Flight Graphs
[lab8-slides]
Apr 30 26 - Graph Practice
May 2 27 - Dijkstra’s algorithm
11 May 5 28 - Advanced: A* Algorithm Final Project
May 7 29 - Advanced: LLMs
May 9 30 - Review & Wrap-Up
12 May 12 Final Project Presentations Final Project &
Review for Final Exam
May 14 Final Project Presentations
May 16 Final Project Presentations
May 19, 10pm Final Project Due (Hard Deadline)
Sat, May 24 1pm Final Exam