Lectures
CS2110 has the twiceweekly lectures. Attendance is required. Our discussion of material that may be in the optional book is different, and sometimes the material we cover is not covered at all in the textbook.
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 then 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 belowas we finalize them.
CS2111
This 1credit 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. Adrian Sampson and David Gries will be teaching it. 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
We spent a good part of the summer of 2017 significantly enlarging the JavaHyperText, which can be fviewed as an online text for Java, oriented toward how we cover the material. Look at this JavaHyperTextoften; use it as your main source of information about Java.
The optional course text is: Data Structures and Abstractions with Java by Frank M. Carrano, Prentice Hall, 2007. ISBN 013237045X. See also the Prentice Hall website for additional material. Readings are intended to be complementary to the lecture. Exams tend to focus on things we covered in class.
You do not need the textbook. It is optional. You do not need to have access to the ebook; 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. The 4th appears to be a major change.
Lecture schedule
Below is a tentative list of lecture topics, times for handing out and deadlines for submitting assignments, and times for the prelims and prelim review sessions. The order and content of lectures are likely to be changed as the course progresses.
LECTURE / Day 
TOPICS  NOTES  READING / ASSIGNMENTS  

1  08/22  Course
policies/procedures. Java strong typing. 
Lecture
Notes (pptx) (pdf) (pdf6up) Why software is so bad First day handout Eclipse tutorial 
Chap 1, App A Hand out A0 
Recitation 01: Packages, API Specs, Character, String (pptx) (pdf6up) JavaEclipse demos  
2  08/24 
OO: Objects and classes 
Lecture Notes (ppt) (pdf) (pdf6up) C.java 
Chap 1, App A Hand out A2. (approx) 
3  08/29 
OO: Fields and their consequences. JUnit testing 
Lecture Notes (ppt) (pdf) (pdf6up)  Chap 2, App B Hand out A1. A0 due (approx) 
Recitation 02: Exception handling tutorial problemSet.docx problemSet.pdf Slides (pptx) (pdf) Demo1.java Demo2.java 

4  08/31 
OO: The class hierarchy Static components 
Lecture Notes (ppt) (pdf) (pdf6up)  some notes on software engineering (video) 
5  09/05 
OO: Insideout / bottomup, local vars, constructors 
Lecture Notes
(pptx)
(pdf)
(pdf6up)
Middle.java
(before)
(after)
Person.java (before) (after) PhD.java (before) (after) 
Chap 3. A1 due (approx) 
Recitation 03: Loop invariants program correctness (first 3 videos) loop invariants problemset (docx) (pdf) (solutions) 

6  09/07 
OO: Types and their consequences.
instanceof, equals 
Lecture Notes
(pptx)
(pdf)
(pdf6up)
Animal.java Cat.java Dog.java Demo.java A3 and linked lists (pptx) (pdf) (pdf6up) 

7  09/12  Interfaces and abstract classes 
Watch tutorial before the lecture. Lecture notes (pptx) (pdf) (pdf6up) Following zip files have a README in them: simple.zip extensive.zip 
Chap 10 A2 due. (approx) Hand out A3 (approx) 
Recitation 04: Enums and Java Collections classes (pptx) (pdf) (pdf6up) demo.zip  
8  09/14 
Recursion 
Tutorial (watch before lecure) Lecture Notes (pptx) (pdf) (pdf6up) RecursionDemo.zip 

9  09/19 
Recursion 
Lecture Notes (pptx) (pdf) (pdf6up) recursionDemo.zip  
Recitation 05: Hashing
tutorial
slides.pptx
summary.pdf
HashSetDemo.zip hashingProblemSet.pdf (does not need to be turned in; just for practice) solutions 

10  09/21 
Asymptotic complexity, searching 
Lecture Notes (pptx) (pdf ) (pdf6up)  Chaps 47 A3 due (approx) 
Review for Prelim, Sunday 9/24  
11  09/26 
Sorting Algorithms 
(pptx) (pdf ) (pdf6up) searchSortAlgorithms.zip  Chap 16 
Recitation 06: Review for prelim 1 (pptx) (pdf) (pdf6up)  
12  09/28 
Trees 
Lecture Notes
(pptx)
(pdf)
(pdf6up)
TreeDemo.zip 
Chaps 2527 Hand out A4 (approx) 
13  10/03 
Grammars, syntax trees 
Lecture Notes (pptx)
(pdf)
(pdf6up)
(The slides on parsing are out of scope for this semester. They are included for the curious.) 
Chap 23 
Recitation 07. Iterator, Iterable
Watch tutorial beforehand iterableProblemSet.pdf DLLTest.java 

14  10/05  GUIs: Placing components  Lecture Notes (pptx) (pdf) (pdf6up) demoGui.zip 
Swing Tutorial Chaps 11, 12 
10/10 
Fall Break 

No recitation due to break  
15  10/12 
GUIs: handling events  Lecture notes
(pptx) (pdf) (pdf6up) these will change demoGui.zip 
A4 due (approx) Hand out A5 (approx) 
16  10/17  Heaps, Priority Queues  Lecture notes
(pptx)
(pdf)
(pdf6up)
heapsort.zip 
Hand out A6 (approx) 
Recitation 08. I/O (pptx) (pdf) (pdf6up) iodemo.zip IOProblems.java  
17  10/19 
Graphs I: Topological sort, Coloring, Planar graphs, Bipartite graphs  Lecture Notes (pptx) (pdf) (pdf6up)  Chaps 28, 29 
18  10/24  Graphs II: DFS and BFS  Lecture Notes
(pptx)
(pdf)
(pdf6up) dfsBfsDemo.zip 

Recitation 09: Analysis of Algorithms
(pptx)
(pdf)
(pdf6up) analysisProblemSet.pdf (does not need to be turned in; just for practice) solutions 

19  10/26  Graphs III: Dijkstra's shortestpath algorithm  Lecture Notes (pptx) (pdf) (pdf6up) Do this before the lecture: tutorial 
Hand out A7 (approx) A6 due (approx) 
20  10/31  Graphs IV: Spanning trees, algorithms  Lecture Notes (pptx) (pdf) (pdf6up)  A5 due (approx) 
Recitation 10. Lambdas (pptx) PairSorter.java  
21  11/02  Generics 
Lecture Notes
(pptx)
(pdf)
(pdf6up)
Code (zip) 

22  11/07 
Concurrency/threads 1 
Lecture notes
(pptx)
(pdf)
(pdf6up)
code.zip 
A7 due (approx) Hand out A8 (approx) 
Recitation 11. Prelim Review(pptx)  
23  11/09  Concurrency/threads 2 
Lecture notes
(pptx)
(pdf)
(pdf6up) boundedBuffer.zip 

Review for Prelim 2, Sunday 11/12. Prelim 2 is Thursday, 11/16  
24  11/14 
Concurrency/threads 3  Lecture notes
(pptx)
(pdf)
(pdf6up)
ConcurrentLinkedQueue.java 

Recitation 12: individual and group help with a8  
25  11/16  Fibonnaci and the golden ratio  Lecture Notes
(pptx) (pdf) (pdf6up) demoFib.zip Fibhistory.pdf 

26  11/21  Probabilistic Programming  Lecture Notes  A8 due (approx) 
No recitation  
11/23 
Thanksgiving break  
27  11/28 
Computer Security  Lecture Notes (pptx) (pdf) (pdf6up)  
Recitation 13: TBA  
28  11/30 
TBA  
Final: Wed, 6 Dec, 9AM 