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

September 6 Tue

Notes

Topics:

  • course overview
  • computers and memory
  • variables and values
  • primitive types
  • arrays
  • scope
  • the (call) stack

Suggested reading:

September 8 Thu

Notes

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

September 13 Tue

Notes

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

September 15 Thu

Notes

Topics:

  • namespaces
  • packages
  • the CLASSPATH / build path

Suggested reading:

  • Sestoft, chapters 16 and 17
  • Niemeyer and Leuck, chapter 6
  • the Packages lesson

September 20 Tue, 22 Thu

Notes Sep 20
Notes Sep 22

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

Lists

September 27 Tue

Notes

Topics:

  • generics and Java containers
  • working with lists

Suggested Reading:

September 29 Thu

Notes

Topics:

  • quiz review
  • implementing important support methods (toString, equals, compareTo)
  • comparators

Suggested Reading:

Sets

October 04 Tue

Notes

Topics:

  • introduction to sets
  • the Set abstract data type
  • HashSet and hash tables

Suggested Reading:

October 06 Tue

Notes

Topics:

  • more on HashSets
  • trees (and an introduction to graphs)
  • binary search trees
  • TreeSet

Suggested Reading:

Maps

October 13 Thu

Notes

Topics:

  • Santa’s little helper
  • the Map ADT
  • Java’s Map interface (and HashMap implementation)

Suggested Reading:

October 18 Tue

Notes

Topics:

  • Another worked Map example: anagrams
  • BufferedReader for reading lines from a file

Suggested Reading:

October 20 Thu

(No meeting)

Algorithms

October 25 Tue

Notes

Topics:

  • MAP review
  • Project 7 Q+A
  • Introduction to running time

October 27 Thu

Notes

Topics:

  • linear vs quadratic
  • early escape from loops
  • binary search and log_2 time

Suggested Reading:

November 01 Tue

Notes

Topics:

  • more on runtime
  • sorting
  • selection sort, bubble sort, insertion sort

Suggested Reading:

Graphs and Search

November 03 Thu

Notes

Topics:

  • graphs and graph terminology
  • introduction to graph search

Suggested Reading:

November 08 Tue

Notes

Topics:

  • graph implementations
  • search in graphs

Suggested Reading:

November 10 Thu

Notes

Topics:

  • finding paths in graphs
  • BFS, DFS, and the search tree
  • “greedy” search and priority queues
  • A*

Suggested Reading:

Implementation notes

November 15 Tue

Notes

Topics:

  • linear data structures, general and specialized (lists, stacks, queues, deques, priority queues)

November 17 Thu

Notes

Topics:

  • implementing an array-based stack
  • implementing a linked-list-based stack

Suggested Reading:

November 29 Tue

Notes

Topics:

  • implementing a linked-list-based queue
  • implementing an array-based queue

Tools and Testing

December 01 Thu

Notes

Topics:

  • building Tic-Tac-Toe
  • writing JUnit tests
  • debugging in Eclipse

December 06 Tue

Notes

Topics:

  • building War
  • reasoning about test cases
  • constructing programmatic test cases

Intro to Recursion

December 08 Thu

Notes

Topics:

  • recursion, baby steps only!

Wrap-up

December 13 Tue

  • 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/22/2016
Thursday
3:30–5:30pm
Hasbrouck Lab Addition, room 126

A review is available.

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.