Schedule

This page is a schedule of topics and readings (including lecture notes) and will be updated as the semester progresses.

Java review, testing and debugging

04 Sep

01: Welcome and Java Review

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.):

06 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

11 Sep

03: Developing with Eclipse

Topics:

  • more on developing with Eclipse
  • intro to the debugger

Suggested reading:

13 Sep

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

Code for start of class:

Code from the end of class:

Topics:

  • more on developing with Eclipse
  • introduction to the debugger

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

17 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]

18 Sep

05: Aliasing, Namespaces, Packages and the CLASSPATH; Intro to Lists

Topics:

  • aliasing
  • namespaces
  • packages
  • the CLASSPATH / build path
  • 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

The List Abstract Data Type (ADT)

20 Sep

06: Array-backed lists

Topics:

  • more on list usage
  • implementing array-based lists

Suggested reading (in addition to last class’s):

  • OpenDSA, chapter 5

25 Sep

07: Linked lists

Topics:

  • implementing linked lists

Suggested reading:

  • OpenDSA, chapter 6

27 Sep

08: More linked lists; Generics

Topics:

  • finishing up linked lists
  • generic lists
  • using lists

Suggested reading:

01 Oct

Discussion! You’re going to do a POGIL lab to further explore the idea of linked structures. The code you may want to download is here: [linked.zip]

02 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
  • Comparable and Comparator

Suggested reading:

The Set ADT

04 Oct

10: Introducing Sets

Topics:

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

Suggested Reading:

11 Oct

11: Hashsets and Treesets

Topics:

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

Suggested Reading:

The Map ADT

16 Oct

12: Santa and Maps

Topics:

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

Suggested Reading:

18 Oct

13: Maps, Multimaps, Anagrams

Topics:

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

Suggested Reading:

Introduction to algorithms

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

25 Oct

15: Searching and Sorting

Topics:

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

Suggested Reading:

29 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]

30 Oct

16: More Sorting; Graphs and Search

Topics:

  • insertion sort
  • graphs and graph terminology
  • introduction to graph search
  • finding paths in graphs

Suggested Reading:

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

06 Nov (Election Day!)

18: Graph Representation

Topics:

  • graph implementations

Suggested Reading:

Implementing ADTs (Stacks and Queues)

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

13 Nov

20: Building Queues

Topics:

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

Suggested Reading:

15 Nov

No class meeting today. Marc will be at a CICS Alumni Event. Maybe I’ll see you at one in a few years!

Introduction to Recursion

27 Nov

21: Intro to Recursion

Topics:

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

Suggested Reading:

  • OpenDSA, Chapter 8
  • Downey and Mayfield, Chapter 5.8, 6.8–6.10

29 Nov

22: More Recursion

Topics:

  • more recursion

04 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

06 Dec

24: Variety is the spice of life

  • Markov Models for random text generation
  • Python
  • OCaml

11 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/14/2017
Friday
3:30–5:30pm
Integrated Learning Center, room S331