CS2110 centers on the twice-weekly lectures. Attendance is required. We may have in-class quizzes without prior notice. We often cover material in different ways than what is in the book, and sometimes the material we cover is not covered at all in the textbook.

Lecture notes are usually posted the da/eveningy 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 then have the lecture notes handy during the lecture (either on paper or on your laptop/tablet). During the lecture, we use not only the ppt slides but also Eclipse or DrJava, and when we are using Eclipse, it will be useful for you to have the ppt slides 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 belowas we finalize them.


This 1-credit S/U optional enrichment class is offered for people who are concerned that that CS2110 might move too quickly and would like a bit of additional help understanding the key ideas. Mike George and David Gries will be teaching it. Students taking cs2111 must ALSO attend the main lectures and a recitation section. CS2111 is not open to students who are notenrolled in cs2110.

Weekly PDF files for the materials covered in CS2111 are posted on the course CS2111 website.

Course text

Readings refer to the course text: Data Structures and Abstractions with Java, 3rd edition by Frank M. Carrano, Prentice Hall, 2007. ISBN 0-13-237045-X. See also the Prentice Hall website for additional material.  Readings are intended to be complementary to the lecture: you can do the reading before class, or after class, but should certainly read the chapter at some point to make sure you fully understand the material.  Exams tend to focus on things we covered in class.

You do not need your own copy of the textbook; sharing is fine. You do not need to have access to the e-book; Prentice offers the ebook to people who purchase a new copy, but a used copy of the book is fine. There aren't very many differences between the 2nd and 3rd edition, so you can manage quite well with a used copy of the 2nd edition.

/ Day
1 08/23 Course policies/procedures.
Java strong typing.
Lecture Notes (pptx) (pdf) (pdf 6-up)
Why software is so bad
First day handout
Learn about Eclipse
Chap 1, App A
Hand out A0
Recitation 01: Using Eclipse:    ppt.pdf    First.java     Learn about Eclipse
2 08/25
OO: Objects and classes
Lecture Notes (pptx)   (pdf)   (pdf 6-up)   C.java Chap 1, App A
Hand out A2.
3 08/30
OO: Fields and their conse-quences. JUnit testing
Lecture Notes (pptx)    (pdf)   (pdf 6-up)
demoTime.zip (Time/TimeTester)
Chap 2, App B
Hand out A1. A0 due
Recitation 02: Packages, API Specs,  Character, String   tutorial   (pptx)     (pdf-6up)     (problems.docx)
4 09/01
OO: The class hierarchy
Static components
Lecture Notes (pptx)    (pdf)    (6up)
VowelUtility.java    VowelUtilityTester.java
W.java (before)    (after)
some notes on
software engineering (video)
5 09/06

OO: Inside-out / bottom-up, local vars, constructors
Lecture Notes (pptx)    (pdf)    (6up)
Middle.java (before)    (after)
Person.java (before)    (after)
Chap 3.
A1 due
Recitation 03. Exception handling  tutorial    problemSet.docx    problemSet.pdf
6 09/08
OO: Types and their consequences. instanceof
Lecture Notes (pptx)    (pdf)    (6up)  
7 09/13 Interfaces and abstract classes Lecture notes (pptx)   (pdf)   (6up)
Shape.java (initial)    (final)
Circle.java (initial)    (final)
Rectangle.java (initial)    (final)
Chap 10
A2 due. Hand out A3
Recitation 04: Loop invariants    program correctness (first 3 videos)    loop invariants
                                     problem-set  (docx) (pdf)                problem-set solution
8 09/15

Lecture Notes (pptx)    (pdf)   (pdf 6-up)
9 09/20

Lecture Notes (pptx)    (pdf)   (pdf 6-up) D2.java    SierpinskiTriangle.java kitchen.zip  
Recitation 05: Enums and Java Collections classes     (pptx)     (pdf-6up)     demo.zip
10 09/22
Lecture Notes (ppt)    (pdf)   (pdf 6-up) searchSortAlgorithms.zip
evaluate (D.java)
Chaps 4-7
                Review for Prelim, Sunday 9/25
11 09/27
Asymptotic complexity
Completion of sorting
Lecture Notes (ppt)    (pdf)   (pdf 6-up)
Chap 16
A3 due
Recitation 06: Review for prelim pptx    pdf    pdf-6up
               Prelim 1: Thu 9/29. 5:30 and 7:30
12 09/29
Trees Lecture Notes (ppt)    (pdf)  (pdf 6-up)
Chaps 25-27
Hand out A4
13 10/04
Grammars, trees, parsing Lecture Notes (pptx)    (pdf)    (6up)   
Chap 23
Recitation 07. Iterator, Iterable    Watch tutorial beforehand    a3solution.zip    
                                                                  problemSet.pdf    problemset.docx
14 10/06
Generics Lecture Notes (pptx)    (pdf)    (6up)
  10/11 Fall Break Fall Break
No recitation this week
15 10/13 GUIs: structure Lecture Notes (ppt)    (pdf)    (6up)
demo code
Swing Tutorial
Chaps 11, 12
Extra demos
16 10/18
GUIs: handling events Lecture notes (ppt)    (pdf)    (6up)
demo code
A4 due
Hand out A5
Recitation 08. Help on A4, Answer questions on Java or hashing tutorial
17 10/20 Priority Queues, Heaps Lecture Notes (ppt)   (pdf)   (6up)
18 10/25 Graphs I: Topological sort, Coloring, Planar graphs, Bipartite graphs Lecture Notes (pptx)    (pdf)    (pdf 6-up)
Chaps 28, 29
Recitation 09. Hashing    tutorial     summary.pdf     HashSetDemo.zip   hashingProblemSet.pdf
19 10/27 Graphs II: DFS and BFS Lecture Notes (pptx)      (pdf)     (pdf 6-up) dfsBfsDemo.zip
20 11/01 Graphs III: Dijkstra's shortest-path algorithm Lecture Notes (pptx)    (pdf)   (pdf 6-up) A5 due
Recitation 10. I/O    (pptx)      (pdf)      (pdf 6-up)      DemoIO.java
21 11/03 Graphs IV: Spanning trees, algorithms
Lecture Notes (ppt)   (pdf)   (pdf-6up)
Hand out A7. A6 due
22 11/08

A5 debrief
(no lecture notes)  
Recitation 11. Analysis of Algorithms. TA will one of these two:     (pptx)   (pdf 6-up)     (pptx) (pdf 6-up)
23 11/10 Fibonacci numbers and
the golden ratio
Lecture Notes    (pptx)    (pdf)    (pdf 6-up)
demoFib.zip    Fib-history.pdf
Hand our A8. A7 due
                Review for Prelim, Sunday 11/13
24 11/15
Concurrency/threads 1 Lecture notes (ppt)   (pdf)   (6up)  
Recitation 12. Review for prelim
               Prelim 2. Thursday, 11/17, 5:30 and 7:30
25 11/17
Concurrency/threads 2 Lecture notes   (ppt)   (pdf)   (6up)

26 11/22 Concurrency/threads 3
Lecture notes (pptx)   (pdf)   (6up)  
Recitation 13. Lambdas     (pptx)     (pdf)     (pdf 6-up)
  11/24 Thanksgiving break
Thanksgiving break
27 11/29
Organizing big programs Lecture notes (pdf)    (6up)     
Recitation: individual and group help on A8
28 12/01 TBA
Final: TBA