CS2110 has twice-weekly lectures. Attendance is required.

Lecture notes are usually posted the day/evening before the lecture. Please download the lecture notes the evening before a lecture, peruse them to get a sense of what the lecture is about, and have the lecture notes handy during the lecture (either on paper or on your laptop/tablet/phone). During the lecture, we use not only the ppt slides but also Eclipse, DrJava, and the web, and when we are not using the ppt slides it will be useful for you to have them to look at.


It is important to attend a weekly recitation, which are considered to be part of the required classwork for the course. We often present material in recitation that is required but not covered in the main lectures. You can switch from recitation to recitation but we like to know which one you are in, in case the University needs to contact you. We added some recitations at a late date; please switch to them if you can to balance out the number of students in each recitation. Use add/drop if you switch sections.

Weekly recitation notes will be posted below as we finalize them.


This 1-credit S/U optional enrichment class is offered for people who are concerned that CS2110 might move too quickly and would like a bit of additional help understanding the key ideas. Students taking CS2111 must ALSO attend the main lectures and a recitation section. You must be enrolled in ENGRD/CS2110 in oder to take CS2111.

Weekly PDF files for the materials covered in CS2111 are posted on the course CS2111 website ---get to it from a link on the Links page.

Course text

You don't have to buy a book! We have produced online materials for most of the course: JavaHyperText and Data Structures. Part of this "book" consists of over 50 short (2-6 minute) tutorial/videos, which you will look at at the appropriate time.

Lecture schedule

Below is a tentative list of lecture topics, times for handing out assignments, deadlines for submitting assignments, and times for the prelims and prelim review sessions. The order and content of lectures may be changed as the course progresses.

/ Day
1 01/22 Course policies/procedures.
Java strong typing.
Lecture notes (pptx)  (pdf)  (pdf-6up)
Why software is so bad
First day handout      Eclipse tutorial
Hand out A0
Recitation 01: Packages, API Specs, String: tutorial to watch beforehand
2 01/24
OO: Objects and classes
Lecture notes (ppt) (pdf)  (pdf-6up)  C.java Hand out HW1
3 01/29
OO: Fields and their conse-
quences. JUnit testing
Lecture Notes (ppt) (pdf) (pdf-6up)
A0 due
Hand out A1
Recitation 02: Exception handling. Watch tutorial beforehand (see Piazza). Problem set: E.java 
4 01/31
OO: The class hierarchy
Static components
Lecture notes (ppt) (pdf) (pdf-6up)
Hand out A2
5 02/05

OO: Inside-out / bottom-up,
local vars, constructors
Lecture Notes (ppt) (pdf) (pdf-6up) demo A1 due
Recitation 03: Testing (pdf-6up) Rectangle.java TODO.txt
6 02/07
OO: Types and their conse-
quences. function equals
Lecture notes (ppt) (pdf) (pdf-6up) demo  
7 02/12 Interfaces and abstract classes Lecture notes (pptx) (pdf) (pdf-6up)

Recitation 04: Collections Framework, Program Correctness. 
Watch tutorial on Program correctness before recitation
8 02/14
Recursion 1

Lecture notes (pptx)  (pdf)  (pdf-6up)      recursionDemo.zip A2 due
Hand out A3
9 02/19
Recursion 2

Lecture notes (pptx)  (pdf)  (pdf-6up)
A3 notes: (pptx)  (pdf)  (pdf-6up)
recursionDemo.zip   Iterative palindrome (ppt) (pdf)
Recitation 05. Loop invariants (pptx) (pdf) (pdf-6up)  
10 02/21
Complexity Lecture Notes (pptx)  (pdf)  (pdf-6up)  
February break
February break
February break. No recitation
11 02/28
Sorting Lecture notes (pptx)  (pdf)  (pdf-6up)
A3 due
12 03/05
Trees Lecture notes (pptx) (pdf) (pdf-6up)
Tree.java BST.java
Hand out A4
Recitation 06: Review for prelim 1   (pptx)  (pdf)  (pdf-6up)
13 03/07
Tree traversals, syntax trees Lecture notes (pptx) (pdf) (pdf-6up)
Demo (OO tree design), Demo (syntax trees)
               Review for Prelim 1, Sunday 3/10, 1-3PM
14 03/12 Priority queues, heaps
Lecture notes (pptx) (pdf) (pdf-6up) PRELIM 1, 5:30  7:30
Recitation 07. I/O (pptx) (pdf) (pdf-6up)     iodemo.zip      IOProblems.java
15 03/14
GUIs: Placing components

Lecture notes (ppt) (pdf) (pdf-6up)
16 03/19
GUIs: handling events Lecture notes (pptx)  (pdf)  (pdf-6up)
A4 due
Hand out A5
Recitation 08: Iterator, Iterable.    Watch tutorial beforehand  
iterableProblemSet.pdf     DLTest.java
17 03/21 Graphs I: Introduction Lecture Notes (pptx) (pdf) (pdf-6up)
18 03/26
Graphs II: Graph traversal Lecture Notes (pptx) (pdf) (pdf-6up)
Recitation 9. Anonymous functions (pptx)
19 03/28 Graphs III: Graph algorithms
Lecture Notes (pptx) (pdf) (pdf-6up) A5 due

20 04/09 Graphs IV. Dijkstra's
shortest path algorithm
Presentation slides (pptx) (pdf(pdf-6up)
Watch tutorial before lecture. Do CMS quiz Monday.
Separation of concerns (pptx) (pdf) (pdf-6up)
Hand out A6
Recitation 10. Enums. See pinned Piazza note on Recitations for material
21 04/11 Graphs V. Spanning trees Lecture notes (pptx)   (pdf)   (pdf-6up)  
22 04/16 Hashing
Lecture notes (pptx)   (pdf)   (pdf-6up)
chainingDemo.zip   openAddressingDemo.zip
Hand out A7
Recitation 11. Prelim Review. See Piazza note on Recitations/HWS for material
23 04/18

Generics Lecture notes (pptx)  (pdf)   (pdf-6up)
A6 due
               Review for Prelim 2, Sunday 4/21, 1-3PM
24 04/23 Concurrency
Lecture notes (pptx) (pdf) (pdf-6up)

PRELIM 2, 5:30  7:30
Recitation 12: Optional: ask questions about prelim 2 or assignment A7
25 04/25
ConcurrencyLecture notes (pptx) (pdf) (pdf-6up)
boundedBuffer.zip   ConcurrentLinkedQueue.java
26 04/30 Fibonacci Lecture notes (pptx)  (pdf)  (pdf-6up)  
Recitation 13: A7 Help
27 05/02 Electronic Voting Lecture notes (pptx) (pdf) (pdf-6up)  
28 05/07 Conclusions! Lecture notes
No Recitations this week
Optional Final: Saturday, 11 May, 2PM