Schedule
This page is a schedule of topics and readings, and will be updated as the semester progresses.
Java review
05 Sep
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
07 Sep
Topics:
- expressions, statements, and blocks
- control flow constructs in Java (
if
/else
;while
;for
)
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
Testing and debugging, more Java review
12 Sep
Topics:
- more on developing with Eclipse
- intro to the debugger
Suggested reading:
- Burnette, chapters 1 – 5
- Niemeyer and Leuck, appendix A
- http://tutorials.jenkov.com/java-unit-testing/simple-test.html
14 Sep
04: Developing, continued, and classes, objects, and methods
Code:
- tictactoe-student.zip
- oh wait it’s actually here
Topics:
- more on developing with Eclipse
- introduction to the debugger
Suggested reading:
- same as last class, and:
- Sestoft, chapter 9
- Downey and Mayfield, chapters 4, 6, 10, 11
- Niemeyer and Leuck, chapter 4 and 5
- the Classes and Objects lesson
19 Sep
05: Namespaces, Packages and the CLASSPATH; Intro to Lists
Topics:
- namespaces
- packages
- the CLASSPATH / build path
- intro to lists
Suggested reading:
- Sestoft, chapters 16 and 17
- Niemeyer and Leuck, chapter 6
- the Packages lesson
- 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
The List Abstract Data Type (ADT)
21 Sep
Topics:
- more on list usage
- implementing array-based lists
Suggested reading (from last class):
- 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
26 Sep
Topics:
- implementing linked lists
28 Sep
08: More linked lists; Generics
Topics:
- finishing up linked lists
- generic lists
- using 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
03 Oct
09: More on using lists; Comparators
Topics:
- another worked example of using lists
- methods that objects must implement to participate in the Collections framework
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 that’s been used in COMPSCI 220.)
The Set ADT
05 Oct
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
12 Oct
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
The Map ADT
17 Oct
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
19 Oct
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)
Introduction to algorithms
24 Oct
14: Introduction to Running Times
Topics:
- Introduction to running time and related concepts
- constant vs linear time
- 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
26 Oct
Topics:
- more on runtime
- binary search
- sorting
- selection sort, bubble sort
Suggested Reading:
- https://en.wikipedia.org/wiki/Binary_search_algorithm
- https://en.wikipedia.org/wiki/Sorting_algorithm
- https://www.toptal.com/developers/sorting-algorithms
31 Oct
🎃 NO CLASS 🎃
Graphs and search
02 Nov
16: More Sorting; Graphs and Search
Topics:
- insertion sort
- graphs and graph terminology
- introduction to graph search
- finding paths in graphs
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)
- Open Data Structures, Java Edition, chapter 12
- https://en.wikipedia.org/wiki/Breadth-first_search
- http://docs.oracle.com/javase/8/docs/api/java/util/Queue.html
07 Nov
Topics:
- finding paths in graphs
- BFS, DFS, and the search tree
- “greedy” search and priority queues
- A*
Suggested Reading:
- 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
09 Nov
Topics:
- graph implementations
Suggested Reading:
Implementing ADTs (Stacks and Queues)
14 Nov
19: Introducing Stacks and Queues
- linear (and not-so-linear) data structures, general and specialized (lists, stacks, queues, deques, priority queues)
- implementing an array-based stack
- implementing a linked-list-based stack
Suggested Reading:
16 Nov
Topics:
- implementing a linked-list-based queue
- implementing an array-based queue
Introduction to Recursion
28 Nov
Topics:
- hints for Assignment 12 (War)
- recursion, baby steps only!
Suggested Reading:
- Downey and Mayfield, Chapter 5.8, 6.8–6.10
30 Nov
Topics:
- more recursion
05 Dec
Topics:
- binary search trees, again
- tower of hanoi
- bad recursion jokes
- dad recursion jokes
- to make it stop
- if it’s stopped, then stop
- otherwise, make it stop
Course wrap-up
07 Dec
24: Variety is the spice of life
- Markov Models for random text generation
- Python
- Ocaml
12 Dec
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:
12/19/2017
Tuesday
3:30–5:30pm
Integrated Learning Center, room S331
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.