Lectures
CS2110 has twiceweekly 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.
Recitations
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.
CS2111
This 1credit 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 (26 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.
LECTURE / Day 
TOPICS  NOTES  READING / ASSIGNMENTS  

1  01/22  Course
policies/procedures. Java strong typing. 
Lecture
notes (pptx)
(pdf)
(pdf6up) 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) (pdf6up) C.java  Hand out HW1  
3  01/29 
OO: Fields and their conse quences. JUnit testing 
Lecture Notes
(ppt)
(pdf)
(pdf6up) demoTime.zip 
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)
(pdf6up) W.java 
Hand out A2  
5  02/05 
OO: Insideout / bottomup, local vars, constructors 
Lecture Notes (ppt) (pdf) (pdf6up) demo  A1 due 

Recitation 03: Testing (pdf6up) Rectangle.java TODO.txt  
6  02/07 
OO: Types and their conse quences. function equals 
Lecture notes (ppt) (pdf) (pdf6up) demo  
7  02/12  Interfaces and abstract classes  Lecture notes
(pptx)
(pdf)
(pdf6up) 

Recitation 04: Collections Framework, Program Correctness. Watch tutorial on Program correctness before recitation 

8  02/14 
Recursion 1 
Lecture notes (pptx) (pdf) (pdf6up) recursionDemo.zip  A2 due Hand out A3 

9  02/19 
Recursion 2 
Lecture notes
(pptx)
(pdf)
(pdf6up) A3 notes: (pptx) (pdf) (pdf6up) recursionDemo.zip Iterative palindrome (ppt) (pdf) 

Recitation 05. Loop invariants (pptx) (pdf) (pdf6up)  
10  02/21 
Complexity  Lecture Notes (pptx) (pdf) (pdf6up)  
02/26 
February break 
February break  
February break. No recitation  
11  02/28 
Sorting  Lecture notes (pptx)
(pdf)
(pdf6up) searchSortAlgorithms.zip 
A3 due  
12  03/05 
Trees  Lecture notes (pptx)
(pdf)
(pdf6up) Tree.java BST.java 
Hand out A4  
Recitation 06: Review for prelim 1 (pptx) (pdf) (pdf6up)  
13  03/07 
Tree traversals, syntax trees  Lecture notes (pptx)
(pdf)
(pdf6up)
Demo (OO tree design), Demo (syntax trees) 

Review for Prelim 1, Sunday 3/10, 13PM  
14  03/12  Priority queues, heaps 
Lecture notes (pptx) (pdf) (pdf6up)  PRELIM 1, 5:30 7:30  
Recitation 07. I/O (pptx) (pdf) (pdf6up) iodemo.zip IOProblems.java  
15  03/14 
GUIs: Placing components 
Lecture notes (ppt) (pdf) (pdf6up) demoGui.zip 

16  03/19 
GUIs: handling events  Lecture notes (pptx) (pdf) (pdf6up) demoGui.zip 
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)
(pdf6up) Demo 

18  03/26 
Graphs II: Graph traversal  Lecture Notes
(pptx)
(pdf)
(pdf6up) Demo 

Recitation 9. Anonymous functions (pptx)  
19  03/28  Graphs III: Graph algorithms 
Lecture Notes (pptx) (pdf) (pdf6up)  A5 due 

20  04/09  Graphs IV. Dijkstra's shortest path algorithm 
Presentation slides
(pptx)
(pdf) (pdf6up) Watch tutorial before lecture. Do CMS quiz Monday. Separation of concerns (pptx) (pdf) (pdf6up) 
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) (pdf6up)  
22  04/16  Hashing 
Lecture notes
(pptx)
(pdf)
(pdf6up) 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)
(pdf6up) demoGenerics.zip 
A6 due 

Review for Prelim 2, Sunday 4/21, 13PM  
24  04/23  Concurrency 
Lecture notes
(pptx)
(pdf)
(pdf6up) 
PRELIM 2, 5:30 7:30  
Recitation 12: Optional: ask questions about prelim 2 or assignment A7  
25  04/25 
Concurrency  Lecture notes
(pptx)
(pdf)
(pdf6up) boundedBuffer.zip ConcurrentLinkedQueue.java 

26  04/30  Fibonacci  Lecture notes (pptx) (pdf) (pdf6up)  
Recitation 13: A7 Help  
27  05/02  Electronic Voting  Lecture notes (pptx) (pdf) (pdf6up)  
28  05/07  Conclusions!  Lecture notes  
No Recitations this week  
Optional Final: Saturday, 11 May, 2PM 