Schedule
This page is a schedule of topics and readings. Lecture notes will posted sometime following each lecture, but please remember that the notes are a supplement to, not a replacement for, attending class and taking your own notes.
Assignments and due dates are listed separately.
Introduction and Java review
January 24 Tue
Topics:
- course overview
- computers and memory
- variables and values
- primitive types
- arrays
- scope
- the (call) stack
Suggested reading:
- Sestoft, pages 1–8
- Downey and Mayfield, chapters 1, 2, 4
- Niemeyer and Leuck, chapters 1 and 4 (focus on subheadings related to the topics above)
- the A Closer Look at the “Hello World!” Application lesson
- the Language Basics lesson
January 26 Thu
Topics:
- expressions, statements, and blocks
- control flow constructs in Java
Suggested reading:
- Sestoft, chapters 11 and 12
- Downey and Mayfield, chapters 5 (first half), 6, 7
- Niemeyer and Leuck, chapter 4 (focus on subheadings related to the topics above)
- the Language Basics lesson
January 31 Tue
03: Java review: Classes, Objects, and Methods
Topics:
- methods
- classes and objects
- aliasing
Suggested reading:
- Sestoft, chapter 9
- Downey and Mayfield, chapters 4, 6, 10, 11
- Niemeyer and Leuck, chapter 4 and 5
- the Classes and Objects lesson
February 02 Tue
04: Java review: Namespaces, Packages and the CLASSPATH; JUnit
Topics:
- namespaces
- packages
- the CLASSPATH / build path
Suggested reading:
- Sestoft, chapters 16 and 17
- Niemeyer and Leuck, chapter 6
- the Packages lesson
Lists
February 07 Tue, 14 Tue
05: Arrays and Lists
06: Linked Lists
Topics:
- containers: arrays and lists
Suggested reading:
- the Arrays trail
- the List interface
- Downey and Mayfield, chapters 8, 12
- Niemeyer and Leuck, chapter 4 (section on arrays), 8 (first few sections)
- Sestoft, chapter 22 section 2
February 16 Thu
Topics:
- generics and Java containers
- working with lists
Suggested Reading:
- the Generics lesson
- the List interface
- the List
docs - Java doc for wrapper types, such as
java.lang.Integer
- Niemeyer and Leuck, chapter 8 (first few sections)
- Sestoft, chapter 21
Feburary 21 Tue
08: Quiz Review and Supporting Lists
Topics:
- quiz review
- implementing important support methods (
toString
,equals
,compareTo
) - comparators
Suggested Reading:
- Java doc for
Object
,Comparable
,Comparator
- Sestoft, chapter 22.9, 22.10
- How to Write an Equality Method in Java (Only read this if you want to start going down the rabbit hole. Odersky is a developer of Scala, a language you’ll use in COMPSCI 220.)
Sets
February 23 Thu
Topics:
- introduction to sets
- the
Set
abstract data type HashSet
and hash tables
Suggested Reading:
- https://en.wikipedia.org/wiki/Set_(mathematics)
- https://en.wikipedia.org/wiki/Venn_diagram
- Sestoft, chapter 22.3
- http://docs.oracle.com/javase/8//docs/api/java/util/Set.html
- http://docs.oracle.com/javase/8//docs/api/java/util/HashSet.html
hashCode
February 28 Tue
Topics:
- more on
HashSet
s - trees (and an introduction to graphs)
- binary search trees
TreeSet
Suggested Reading:
- https://en.wikipedia.org/wiki/Binary_search_tree
- https://en.wikipedia.org/wiki/Tree_(graph_theory)
- https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
- https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html
- Sestoft, chapter 22.9
Maps
March 02 Thu
Topics:
- Santa’s little helper
- the Map ADT
- Java’s
Map
interface (andHashMap
implementation)
Suggested Reading:
- https://en.wikipedia.org/wiki/Associative_array
- http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html
- https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
- https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
- Sestoft, chapter 22.5
March 07 Tue
Topics:
- Another worked
Map
example: anagrams BufferedReader
for reading lines from a file
Suggested Reading:
- https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html
- https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html (Multimaps are described about 2/3 down this page)
Algorithms
March 09 Thu
13: Introduction to Running Times
Topics:
- Mid-course review
- Introduction to running time and related concepts
- constant vs linear time
March 21 Tue
Topics:
- linear vs quadratic time
- early escape from loops
- binary search and log_2 time
Suggested Reading:
- Downey and Mayfield, chapter 12.8–12.10
- https://en.wikipedia.org/wiki/Analysis_of_algorithms
- https://en.wikipedia.org/wiki/Time_complexity
- https://en.wikipedia.org/wiki/Binary_search_algorithm
Graphs and Search
March 28 Tue
Topics:
- more on runtime
- sorting
- selection sort, bubble sort, insertion sort
Suggested Reading:
- https://en.wikipedia.org/wiki/Sorting_algorithm
- https://www.toptal.com/developers/sorting-algorithms
March 30 Thu
Topics:
- graphs and graph terminology
- introduction to graph search
Suggested Reading:
- https://en.wikipedia.org/wiki/Binary_search_tree
- https://en.wikipedia.org/wiki/Tree_(graph_theory)
- https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
April 04 Tue
Topics:
- finding paths in graphs
- BFS, DFS, and the search tree
- “greedy” search and priority queues
- A*
Suggested Reading:
- Open Data Structures, Java Edition, chapter 12
- https://en.wikipedia.org/wiki/Breadth-first_search
- https://en.wikipedia.org/wiki/Depth-first_search
- Grids and Graphs
- Introduction to A* (also includes information on BFS and greedy BFS)
- http://docs.oracle.com/javase/8/docs/api/java/util/Queue.html
- http://docs.oracle.com/javase/8/docs/api/java/util/Stack.html
- http://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html
April 06 Thu
Topics:
- graph implementations
Suggested Reading:
April 11 Tue
Topics:
- linear (and not-so-linear) data structures, general and specialized (lists, stacks, queues, deques, priority queues)
- applications to search
Implementation Notes
April 13 Thu
Topics:
- implementing an array-based stack
- implementing a linked-list-based stack
Suggested Reading:
April 20 Thu
Topics:
- implementing a linked-list-based queue
- implementing an array-based queue
Intro to Recursion
April 25 Tue
Topics:
- recursion, baby steps only!
Wrap-up
April 27 Thu
23: Building Tic-Tac-Toe (this was an interactive lecture, no notes)
Topics:
- how to think about building Java programs
May 02 Tue
Topics:
- course review
- wrap-up
- questions and answers
- enthusiastic applause is mandatory for passing
- as is filling out your SRTI
- just kidding about the SRTI thing
- I can’t believe you actually read all of this, you maniac!
Final Exam
Our exam is scheduled for:
05/10/2017
Wednesday
3:30–5:30pm
Integrated Learning Center, room S140
Please note (from the Academic Rules and Regulations):
…it is University policy not to require students to take more than two final examinations in one day of the final examination period. If any student is scheduled to take three examinations on the same day, the faculty member running the chronologically middle examination is required to offer a make-up examination if the student notifies the instructor of the conflict at least two weeks prior to the time the examination is scheduled. The student must provide proof of the conflict. This may be obtained from the Registrar’s Office, 213 Whitmore.