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 day before the lecture. Lectures that have not been changed from a previous semester yet are marked "old".

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, 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. Siddhartha Chaudhuri 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 1/22 Course policies/procedures.
Java strong typing
Lecture Notes (pptx) (pdf) (pdf 6-up)    Why software is so bad
First day handout    Eclipse: Part 1        Eclipse: Part 2        Eclipse: Part 3
Chap 1, App A
Hand out A0
2 1/27
OO: Objects and classes
Lecture Notes (pptx)   (pdf)   (pdf 6-up)   C.java Chap 1, App A
Recitation 01: basicJavaEclipse.pdf     ppt slides (6up)    Eclipse: 1   Eclipse: 2   Eclipse: 3
3 1/29
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 1/30
4 2/3
OO: The class hierarchy
Static components
Lecture Notes (pptx)    (pdf)   (pdf 6-up)
W.java  Point.java
Recitation 02: Packages, char and Character, Strings   pdf-6up,   pptx
5 2/5

OO: Inside-out / bottom-up, local vars, constructors
Lecture Notes (pptx)    (pdf)   (pdf 6-up) Chap 3.
Hand out A2. A1 due 2/6
6 2/10
OO: Types and their consequences. instanceof
Lecture Notes (pptx)   (pdf)   (pdf 6-up)
Recitation 03. 2-D arrays, Exception handling    Slides (pdf)   demoJava
7 2/12 Recursion Lecture Notes (pptx)    (pdf)   (pdf 6-up)
Recursion.java:   practice /  solution
Power.java (See difference between the linear and logarithmic versions)
Chap 10
A2 due 2/13. Hand out A3
8 2/19
Loop invariants
Lecture Notes (pptx)    (pdf)   (pdf 6-up)  
9 2/24
Lecture Notes (pptx)    (pdf)   (pdf 6-up)        searchSortAlgorithms.zip
Chaps 4-7
Recitation 04: Abstract classes and interfaces   (pptx)   (pdf)    demos.zip
10 2/26
Asymptotic complexity
Completion of sorting
Lecture Notes (pptx)    (pdf)   (pdf 6-up)
searchSortAlgorithms.zip      Complexity exercises
Chap 16
Hand out A4
11 3/03
Trees Lecture Notes (ppt)    (pdf)   (pdf 6-up)
BST.java           BSTTest.java
Chaps 25-27
A3 due
Recitation 05. Loop invariants and prelim review   (pptx)        (pdf 6-up)
12 3/05
ADTs, grammars, trees, parsing Lecture Notes (ppt)    (pdf)   (pdf 6-up)     java for expression trees (zip) Chap 16
             Review session for Prelim 1: Sunday, 3/8. 1-3PM
13 3/10
GUIs: Component layout Lecture Notes (pptx)    (pdf)    (pdf 6-up)     GuiDemos.zip (demos for GUIs)           PRELIM 1 THIS EVENING
Swing Tutorial
Chaps 11, 12
Recitation 06. Enums and the Java Collections classes   pptx    pdf 6-up
14 3/12
GUIs: handling events Lecture Notes (pptx)    (pdf)    (pdf 6-up)     GuiDemos.zip (demos for GUIs) A4 due 3/16
15 3/17 Generics, Collections Lecture notes (ppt) (pdf) (pdf 6-up)  
Recitation 07. Hashing    (ppt)    (pdf)    (summary)    (HashSet.java)    (HashSetTester.java)
16 3/19 Priority Queues, Heaps Lecture Notes (pptx)    (pdf)   (pdf 6-up) heapsort.zip
Hand out A5
17 3/24 Graphs I: Topological sort, Coloring, Planar graphs, Bipartite graphs Lecture Notes (pptx)    (pdf)    (pdf 6-up) Chaps 28, 29
Hand out A6.
Recitation 08. Nested cases, inner classes, Iterator, and Iterable    (pdf 6-up)
18 3/26 Graphs II: DFS and BFS Lecture Notes (pptx)    (pdf)    (pdf 6-up)  
19 4/07
Graphs III: Dijkstra's shortest-path algorithm
Lecture Notes (pptx)    (pdf)   (pdf 6-up)

Recitation 09. Tree rotations and AVL trees.  (pptx)    (pdf 6-up)
20 4/09

Graphs IV: Spanning trees, etc.
Lecture Notes (ppt)   (pdf)   (pdf-6up) Hand out A7. A6 due soon
21 4/14 Concurrency/threads 1 Lecture Notes (pptx)    (pdf)    (pdf 6-up)  
Recitation 10. Prelim review (pptx)   (pdf)
22 4/16
Concurrency/threads 2 Lecture Notes (pptx)    (pdf)    (pdf 6-up)
A7 due 4/16
            Review session for Prelim 2: Sunday, 4/19, 1-3PM
23 4/21
Mathematical Induction Lecture Notes (ppt)    (pdf)   (pdf 6-up)
Developing progs  (ppt)   (pdf)  (pdf 6-up)
Hand out A8
Recitation 11. Analysis of algorithms /proof by induction (pptx)  (pdf)    (pdf 6-up)
24 4/23
Recurrences: Class not held because of fire in Statler
25 4/28 Solving prelim 2 questions
Fibonacci numbers
Lecture Notes (ppt)    (pdf)   (pdf 6-up)
Lecture Notes (ppt)   (pdf)  (pdf 6-up)
Recitation 12. Software engineering practices, design patterns (pptx)   (pdf)
26 4/30
Sid Talks about his research and how he uses tree/graph algorithms
No slides
27 5/05
Skyping with Pooja Pooja Shankar, CEO of Piazza, chats with us A8 due 5/6
Final: TBA