Lectures (Kelly)

Lecture Date Topic Lecture Materials
1 Fri, 9/9 Course intro Slides
2 Mon, 9/12 Java basics Slides
3 Wed, 9/14 Program design Slides
Nim:
  Design document (a complete design doc for Nim; before you look at it, try to write one yourself, then compare)
  TwoPlayerGame.java (interface supplied in your starter code; don't change this)
  Audio recording of lecture
4 Fri, 9/16 Exceptions and classes Slides
5 Mon, 9/19 Abstraction and generics Slides
Video recording
The code we worked on in class.
  Reverser.java (a program that reverses an integer array; how can we make it work for an array of any type?)
  GenericReverser.java (we can't do it "safely" in Java; instead we use a Vector, which is designed for arbitrary element types)
6 Wed, 9/21 Boxes and arrows Slides
Video recording
The code we worked on in class.
  Triangle.java (instance vs. static)
7 Fri, 9/21 Static, accessibility modifiers, and Vector Slides
Video recording
Our class activity about the static keyword:
  activity.1.pdf (the handout)
  Program.java (the code that shows what happens)
  point-call-stack-activity-diagram.pdf (a diagram that shows the state at the end of the main method)
Our class activity about accessibility modifiers:
  Program2.java (we made one change from Program.java; do you understand why it no longer compiles?)
8 Mon, 9/26 Asymptotic analysis Slides
Video recording
9 Wed, 9/28 Pre/post-conditions and recursion Slides
Video recording (to be posted later today)
The programs we discussed:
  Example0.java (a seemingly benign program)
  Example1.java (x could actually be a string, though)
  Example2.java (integer overflow)
  Example3.java (a program that states more precisely what we want using Assert)
10 Fri, 9/30 Recursion and mathematical induction Slides
11 Mon, 10/3 Lists Slides
12 Wed, 10/5 Lists, inheritance, interfaces Slides
An example using an interface and an abstract class.:
    Honkable.java (interface)
    AbstractHonkable.java (abstract class)
    Car.java (derived class)
    Goose.java (another derived class)
    Test.java (driver code)
13 Fri, 10/7 Inheritance and sorting Slides
14 Wed, 10/12 Sorting cont. Slides
The programs we discussed.:
    BubbleSort1.java
    Sorter1.java
    Person.java
    PersonComparator.java
    BubbleSort2.java
    Sorter2.java
15 Mon, 10/17 Sorting, part 3 Slides
16 Wed, 10/19 Radix sort / Stack ADT Slides
A silly recursive algorithm that makes heavy use of a call stack.:
    Meowww.java
17 Fri, 10/21 Stacks / Queue ADT Slides
18 Mon, 10/24 Midterm review No slides.
19 Wed, 10/26 Iterators / binary search Slides
20 Mon, 10/31 Binary Seach / Ordered Structures Slides
Binary search:
    BinarySearch.java
Ordered Structures:
    OrderedStructure.java
    OrderedVector.java
21 Wed, 11/2 Ordered Structures / Binary Iterators Slides
Bit iterators:
    BIterator.java
    BIteratorTest.java
22 Fri, 11/2 BIterator / Tree ADT Slides
A bit iterator and a reverse iterator:
    BIterator.java
    ReverseIterator.java
    BIteratorTest.java (driver program)
A binary tree data structure:
    BinaryTreeNode.java
    TreeTest.java (driver program)
23 Mon, 11/7 Tree terminology Slides
24 Wed, 11/9 Tree traversal / Binary Search Trees Slides
A binary tree data structure:
    BinaryTreeNode.java
    TreeTest.java (driver program)
A binary search tree data structure:
    BinarySearchTreeNode.java
    BSTreeTest.java (driver program)
25 Fr, 11/11 Binary Search Trees Slides
A binary search tree data structure:
    BinarySearchTreeNode.java
    TreeTest.java (driver program)
26 Mon, 11/14 Balanced Trees / Maps Slides
A map implemented using a binary search tree:
    MapTree.java
    MapTest.java (driver program)
27 Wed, 11/16 Hashtables Slides
Letter frequency example and input file tree:
    LetterFreq.java
    google-10000-english-usa.txt (input file)
28 Fri, 11/18 Open addressing Slides
29 Mon, 11/21 Graphs, part 1 Slides
30 Mon, 11/28 Graphs, part 2 Slides
31 Wed, 11/30 Graphs (part 3), Priority Queues, Heaps Slides
32 Fri, 12/2 Heaps, Priority Queues Slides
Priority Queue, Priority Vector, and Min Heap Code:
    PriorityQueue.java
    PriorityVector.java
    VectorHeap.java
33 Mon, 12/5 Heap sort Slides.
You have the skills now to write a heapsort algorithm yourself. If you're looking for a good study challenge, why not use my VectorHeap implementation above and see if you can modify it with a method public Vector<E> heapSort()? It's OK if calling heapSort is destructive (i.e., makes the internal Vector no longer a heap).
34 Wed, 12/7 Dijkstra's algorithm Slides.
Recording.
  • CSCI 136, Fall 2022

CSCI 136 course website

Powered by Bootstrap 4 Github Pages