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

01: Welcome and Java Review

Topics:

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

Suggested reading:

January 26 Thu

02: Java Review: Control Flow

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

07: Generics and Using Lists

Topics:

  • generics and Java containers
  • working with lists

Suggested Reading:

Feburary 21 Tue

08: Quiz Review and Supporting Lists

Topics:

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

Suggested Reading:

Sets

February 23 Thu

09: Introducing Sets

Topics:

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

Suggested Reading:

February 28 Tue

10: HashSets and TreeSets

Topics:

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

Suggested Reading:

Maps

March 02 Thu

11: Santa and Maps

Topics:

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

Suggested Reading:

March 07 Tue

12: Maps, Multimaps, Anagrams

Topics:

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

Suggested Reading:

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

14: More on Running Times

Topics:

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

Suggested Reading:

Graphs and Search

March 28 Tue

15: Sorting

Topics:

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

Suggested Reading:

March 30 Thu

16: Graphs

Topics:

  • graphs and graph terminology
  • introduction to graph search

Suggested Reading:

April 04 Tue

17: More on Search

Topics:

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

Suggested Reading:

April 06 Thu

18: Graph Representations

Topics:

  • graph implementations

Suggested Reading:

April 11 Tue

19: ADT and Search, Reviewed

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

20: Building a Stack

Topics:

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

Suggested Reading:

April 20 Thu

21: Building Queues

Topics:

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

Intro to Recursion

April 25 Tue

22: Introduction to Recursion

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

24: 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
  • 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.