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 3 0 - Welcome! Class Survey
1 Feb 5 1 - Java Review Lecture 1 Code
Handout Lecture 1 (Answers)
Lab 0: HelloWorld
[lab0-slides]
Feb 7 2 - Conditionals & Loops Lecture 2 Code
Feb 9 3 - Scope & Objects Lecture 3 Code
2 Feb 12 4 - OOP & Memory Management Lecture 4 Code Lab 1: Lightswitch
[lab1-slides]
Feb 14 5 - Arrays Lecture 5 Code
Feb 16 No lecture: Winter Carnival
3 Feb 19 6 - ArrayLists & Inheritance Lecture 6 Code Lab 2: Coinstrip
[lab2-slides]
Feb 21 7 - Interfaces & Implementing ArrayLists Lecture 7 Code
Feb 23 8 - Analysis & Big-O See Lecture 7 Code
4 Feb 26 9 - Recursion Lecture 9 Code Lab 3: Recursion
[lab3-slides]
Feb 28 10 - Branching Recursion Lecture 10 Code
Mar 1 11 - ADTs & LinkedLists Lecture 11 Code
5 Mar 4 12 - Stacks Lecture 12 Code Lab 4: Queues
Mar 6 13 - Queues Lecture 13 Code
Mar 8 Lecture cancelled
6 Mar 11 14 - Testing & Debugging Lecture 14 Code Review for Midterm
Mar 13 15 - Ethics & AI
Mar 14 Evening Midterm 6-7:30 or 8-9:30
Mar 15 No lecture
Mar 16 - 31 Spring Break
7 Apr 1 16 - Sorting, Part 1 Lecture 16 Code Lab 5: Sorting Phonebooks
[lab5-slides]
Apr 3 17 - Sorting, Part 2 See Lecture 16 Code
Apr 5 18 - Sorting, Part 3 Lecture 18 Code
8 Apr 8 19 - Symbol Tables & Search Lecture 19 Code Lab 6: Searching for IP Addresses
[lab6-slides]
Apr 10 20 - Binary Search Trees No code
Apr 12 21 - Hash Tables, Part 1 Lecture 21 Code
9 Apr 15 22 - Hash Tables, Part 2 Lecture 22 Code Lab 7: Trie for a Lexicon
Apr 17 23 - Graphs See Lecture 24 Code
Apr 19 24 - BFS & DFS Lecture 24 Code
10 Apr 22 25 - Graph Fun Lecture 25 Code Lab 8: Flight Graphs
Apr 24 26 - Dijkstra’s algorithm See Lecture 25 Code
Apr 26 27 - Graph Wrap-Up Graph algorithm worksheet
11 Apr 29 28 - Advanced Topics, Part 1 Final Project
May 1 29 - Advanced Topics, Part 2
May 3 30 - Review & Wrap-Up
12 May 6 Final Project Presentations Final Project &
Review for Final Exam
May 8 Final Project Presentations
May 10 Final Project Presentations
May 14, 4pm Final Project Due (Hard Deadline)
May 16, 9:30am Final Exam