Welcome to CS 2! We’re super excited to have you here this term!
Most Recent Announcements
Due Next
-
project06 (beavermaps) due @ 11:30 pm on Sat, Mar 07 -
Final due @ 03:00 pm on Wed, Mar 11
Calendar
Wellness and Inclusion
It is very important to us that you succeed in CS 2. We provide many extra resources to help you. Prof. Blank and the TAs hold many office hours!
It is also very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary. You can also visit the counseling center if you find you need help beyond the course staff. If you have a temporary health condition or permanent disability (either mental health or physical health related), you should contact accessibility services if you have not already. Additionally, if there is something we can do to make your experience better, please let us know.
Diversity, inclusion, and belonging are all core values of this course. All participants in this course must be treated with respect by other members of the community in accordance with the honor code. If you feel unwelcome or unsafe in any way, no matter how minor, we encourage you to talk to Prof. Blank or one of the Deans. We view these sorts of honor code violations as completely unacceptable, and we take them very seriously.
Tools
Course Staff
Instructor
Instructor
Teaching Assistants















Handouts
The following is a list of handouts that you might find helpful throughout the course. We’ve categorized them by when they are useful.
Course
Syllabus – an overview of the course and administrative information
Policies – an overview of the late policy and DUETs
Pair Programming – introduction to pair programming
Collaboration Policy – the course collaboration policy
DUETs – guide to understanding DUETs for labs and projects
Grading – guide to understanding project grading
Week 0
Java/Python Comparison – a comparison of the basic syntax of Python with Java
Software Setup – instructions on how to get Java, IntelliJ, and git for the course
Schedule
| L00 | Mon, Jan 05 |
Introduction and OOP
Course administrivia. Designing Java classes. Designing data structures. Object oriented programming. |
| L01 | Wed, Jan 07 |
Problem Decomposition
Using an API. Helper methods. Quadgrams. Log likelihoods. Java String API. Reading documentation. |
| L02 | Fri, Jan 09 |
Basic Data Structure Trade-Offs
Lists. Sets. Maps. Nested data structures. Efficiency. |
| DUE | Fri, Jan 09 11:30 pm |
project01
(ciphers)
[ guide ]
This project helps us transition fully over to Java.
|
| L03 | Mon, Jan 12 |
More Data Structure Trade-Offs
More Lists. Sets. Maps. Nested data structures. Efficiency. |
| DUE | Tue, Jan 13 11:30 pm |
lab01
(explosive-debugging)
[ guide ]
Debugging JUnit tests. Prints. The IntelliJ debugger. Breakpoints.
|
| L04 | Wed, Jan 14 |
Stacks and Queues
How do we characterize data structures? Client usage of stacks and queues. |
| L05 | Fri, Jan 16 |
Regular Expressions
Strings, parsing, and regular expressions. |
| DUE | Fri, Jan 16 11:30 pm |
project02
(hangman)
[ guide ]
This project focuses on using the built-in Java collections as a client.
|
| :( | Mon, Jan 19 | No Class (Martin Luther King Day) |
| DUE | Tue, Jan 20 11:30 pm |
lab02
(restaurants)
[ guide ]
Maps and Lists. Data structure trade-offs.
|
| L06 | Wed, Jan 21 |
The Power of Recursion
RECURSION |
| L07 | Fri, Jan 23 |
Recursive Backtracking I
The recursive backtracking pattern. |
| DUE | Fri, Jan 23 11:30 pm |
project03
(html fixer)
[ guide ]
This project focuses on algorithmic efficiency and using stacks and queues.
|
| L08 | Mon, Jan 26 |
Recursive Backtracking II
The recursive backtracking pattern. |
| L09 | Wed, Jan 28 | Asymptotic Analysis I: Big-Theta |
| L10 | Fri, Jan 30 | Asymptotic Analysis II: Recurrences |
| L11 | Mon, Feb 02 | Memoization I |
| L12 | Wed, Feb 04 | Memoization II |
| L13 | Fri, Feb 06 | Quiz |
| DUE | Fri, Feb 06 03:00 pm |
Quiz |
| L14 | Mon, Feb 09 | Graphs I: Representation |
| L15 | Wed, Feb 11 | Graphs II: DAGs |
| L16 | Fri, Feb 13 | Graphs III: Single-Source Shortest Paths |
| DUE | Fri, Feb 13 11:30 pm |
project04
(json and webcrawler)
[ guide ]
This project focuses on implementing recursion.
|
| :( | Mon, Feb 16 | No Class (President’s Day) |
| L17 | Wed, Feb 18 | Graphs IV |
| L18 | Fri, Feb 20 | Graphs V |
| DUE | Fri, Feb 20 11:30 pm |
project05
(beaversearch)
[ guide ]
This project focuses on implementing the backend of a search engine.
|
| L19 | Mon, Feb 23 |
Implementation: ArrayIntList I
Arrays. Implementing an ArrayList. Designing a class to fit an API. |
| L20 | Wed, Feb 25 | Midterm |
| DUE | Wed, Feb 25 03:00 pm |
Midterm |
| DUE | Wed, Feb 25 11:30 pm |
lab05
(review recursive backtracking)
[ guide ]
Three recursive backtracking problems for extra practice.
|
| L21 | Fri, Feb 27 |
Implementation: ArrayIntList II
Arrays. Implementing an ArrayList. Designing a class to fit an API. |
| L22 | Mon, Mar 02 | LinkedLists I |
| L23 | Wed, Mar 04 | LinkedLists II |
| L24 | Fri, Mar 06 | Hash Tables and BitSets |
| DUE | Sat, Mar 07 11:30 pm |
project06
(beavermaps)
[ guide ]
This project focuses on building and using a graph data structure.
|
| L25 | Mon, Mar 09 | Victory Lap |
| L26 | Wed, Mar 11 | Final |
| DUE | Wed, Mar 11 03:00 pm |
Final |


