Schedule

This page is a schedule of topics and readings, and will be updated as the semester progresses.

Java review

05 Sep

01: Welcome and Java Review

Topics:

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

Suggested reading:

07 Sep

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

Testing and debugging, more Java review

12 Sep

03: Developing with Eclipse

Topics:

  • more on developing with Eclipse
  • intro to the debugger

Suggested reading:

14 Sep

04: Developing, continued, and classes, objects, and methods

Code:

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

06: Array-backed lists

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

07: Linked lists

Topics:

  • implementing linked lists

28 Sep

08: More linked lists; Generics

Topics:

  • finishing up linked lists
  • generic lists
  • using lists

Suggested reading:

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:

The Set ADT

05 Oct

10: Introducing Sets

Topics:

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

Suggested Reading:

12 Oct

11: Hashsets and Treesets

Topics:

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

Suggested Reading:

The Map ADT

17 Oct

12: Santa and Maps

Topics:

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

Suggested Reading:

19 Oct

13: Maps, Multimaps, Anagrams

Topics:

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

Suggested Reading:

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:

26 Oct

15: Searching and Sorting

Topics:

  • more on runtime
  • binary search
  • sorting
  • selection sort, bubble sort

Suggested Reading:

31 Oct

🎃 NO CLASS 🎃

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:

07 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:

09 Nov

18: Graph Representation

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

20: Building Queues

Topics:

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

Introduction to Recursion

28 Nov

21: Intro to Recursion

Topics:

  • hints for Assignment 12 (War)
  • recursion, baby steps only!

Suggested Reading:

  • Downey and Mayfield, Chapter 5.8, 6.8–6.10

30 Nov

22: More Recursion

Topics:

  • more recursion

05 Dec

23: (No) More Recursion

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

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