Lectures / Schedule
This page is a schedule of topics and readings (including lecture notes) and will be updated as the semester progresses.
Course wrap-up
10 Dec
25: Wrap-up and Review
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
05 Dec
24: Variety is the spice of life
- Markov Models for random text generation
- Python
- and some other languages
Suggested Reading:
Introduction to recursion
03 Dec
23: Even More Recursion
Topics:
- more recursion
- 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
21 Nov
22: More Recursion
Topics:
- recursion, factorially! (And in other, typical intro ways)
19 Nov
21: Introducing Recursion
Topics:
- recursion, graphically
- hints for war (if you want)
Suggested Reading:
- OpenDSA, Chapter 8
- Downey and Mayfield, Chapter 5.8, 6.8–6.10
Implementing ADTs (Stacks and Queues)
14 Nov
20: Implementing Queues
- implementing a linked-list-based queue
- implementing an array-based queue
Suggested Reading:
12 Nov
19: Implementing Stacks
- implementing an array-based stack
- implementing a linked-list-based stack
Suggested Reading:
Graphs and search
07 Nov
18: Graph Representation, Intro to Stacks and Queues
Topics:
- graph implementations
- linear (and not-so-linear) data structures, general and specialized (lists, stacks, queues, deques, priority queues)
Suggested Reading:
05 Nov
17: More on Graph Search
Topics:
- finding paths in graphs
- BFS, DFS, and the search tree
- “greedy” search and priority queues
- A*
Suggested Reading:
Introduction to algorithms
29 Oct
16: More Sorting; Graphs and Search
Topics:
- insertion sort
- graphs and graph terminology
- introduction to graph search
- finding paths in graphs
Suggested Reading:
28 Oct
Discussion! You’re going to do a POGIL lab to introduce the idea of graphs and search. Please download and familiarize yourself with: [hex.zip]
24 Oct
15: Searching and Sorting
Topics:
- more on runtime
- binary search
- sorting
- selection sort, bubble sort
Suggested Reading:
22 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
Suggested Reading:
The Map ADT
17 Oct
13: Maps, Multimaps, Anagrams
Topics:
- Another worked
Map
example: anagrams
BufferedReader
for reading lines from a file
- Maybe a hint of Python flavored code?
Suggested Reading:
10 Oct
12: Santa and Map
s
Topics:
- Santa’s little helper
- the Map ADT
- Java’s
Map
interface (and HashMap
implementation)
Suggested Reading:
The Set ADT
08 Oct
11: Hashsets and Treesets
Topics:
- more on
HashSet
s
- trees (and an introduction to graphs)
- binary search trees
TreeSet
Suggested Reading:
03 Oct
10: Introducing Sets
Topics:
- finishing up comparisons
- introduction to sets
- the
Set
abstract data type
HashSet
and hash tables
Suggested Reading:
The List Abstract Data Type (ADT)
01 Oct
09: More on using lists; Comparators
Topics:
- generic lists
- methods that objects must implement to participate in the Collections framework
Comparable
and Comparator
Suggested reading:
30 Sep
Discussion! You’re going to do a POGIL lab to further explore the idea of array-based vs linked lists. The code you may want to download is here: [linked.zip]
26 Sep
08: More linked lists
Topics:
- finishing up linked lists
Suggested reading:
24 Sep
07: Linked lists
Topics:
- implementing array-based lists, part 2
- implementing linked lists
Suggested reading:
19 Sep
06: Array-backed lists
Topics:
- more on list usage
- implementing array-based lists, part 1
Suggested reading (in addition to last class’s):
Java review, testing and debugging
17 Sep
Lecture 05: Classes, objects, and namespaces; the List API
Topics:
- more on classes/objects
- aliasing
- namespaces
- packages
- the CLASSPATH / build path
- very brief intro to lists
Suggested reading:
- OpenDSA, chapter 4
- 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
16 Sep
Discussion! You’re going to do a POGIL lab to further explore the idea of testing. The code you need to download is here: [Anagrams.zip]; the worksheet will be linked to from Piazza.
12 Sep
Lecture 04: Developing, continued, and classes, objects, and methods
Topics:
- more on developing with Eclipse
- introduction to the debugger
- classes/objects
Suggested reading:
- OpenDSA, chapter 3
- Sestoft, chapter 9
- Downey and Mayfield, chapters 4, 6, 10, 11
- Niemeyer and Leuck, chapter 4 and 5
- the Classes and Objects lesson
10 Sep
Lecture 03: Developing with Eclipse
Code from class: [tictactoe.zip]
Topics:
- finishing up
for
- developing with Eclipse
- unit tests
Suggested reading:
05 Sep
Lecture 02: Java Review: Control Flow
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
03 Sep
Lecture 01: Introduction
Topics:
- course overview
- computers and memory
- variables and values
- primitive types
- arrays
- scope
- the (call) stack
Suggested reading (This is a lot of reading that I expect you to skim as you need to, and/or to read over several days, not all at once before the first lecture! Later I’ll give less reading but expect you to read it more closely.):