CSCI 136 - Fall 2017
Data Structures & Advanced Programming
Home | Lectures 10am 11am | Labs | Handouts & Problem Sets | Links | CS@Williams
Lecture Notes and Examples
Links to lecture slides and files will be available after class on the date shown. You must be on-campus or using the
proxy server to access these materials.
**The schedule may shift as the semester progresses.
Date | Lecture | Examples | Slides | Reading |
8 Sept | Welcome & Java Recap |
Hello.java | Lecture 1 | Bailey: Chapter 0; Handouts: Syllabus, Java Essentials |
11 Sept | Object-Oriented Programming in Java |
Sum0.java Sum1.java Sum2.java Sum3.java Sum4.java Sum5.java |
Lecture 2 | Bailey: Chapters 1, 7 |
13 Sept | More on OOP in Java |
Student.java TestStudent.java |
Lecture 3 | Bailey: Chapter 1 |
15 Sept | Java Review, Interfaces |
SimpleCards source code: BasicCard.java Interface & implementations: Card.java CardSuitRank.java Card52.java Card52v2.java Card413.java CardDeck.java |
Lecture 4 |
Bailey: Chapters 2,3 Handouts: Java Class Types |
18 Sept | Object, Associations, & Vectors |
Card Deck: CardDeck.java VecCardDeck.java Association: Association.java Word Frequency: WordFreq.java Gettysburg.txt Dictionary: Dictionary.java VecDictionary.java |
Lecture 5 | Bailey: Chapters 3, 7, 4 |
20 Sept | Vectors, Generics, & Style |
Non-Generic: WordFreq.java Generic: GenWordFreq.java |
Lecture 6 | Bailey: Chapter 3, 4 |
22 Sept | Lists I |
Bailey Assert: CardAbstract.java Java Assert: CardAbstract.java Lists: SLL.java |
Lecture 7 | Bailey: Chapter 9 |
25 Sept | Lists II |
Extending Classes: CardAbstract.java CardRankSuit.java CardRankSuitPoints.java |
Lecture 8 |
Bailey: Chapter 9 |
27 Sept | Time & Space Complexity | Lecture 9 | Bailey: Chapter 5.1 | |
29 Sept | Recursion & Induction I Problem Set 1 (due 11:00pm October 5 |
ReursiveMethods.java Towers.java |
Lecture 10 |
Bailey: Chapter 5 Handouts: Induction Essentials |
02 Oct | Recursion & Induction II |
Chain.java |
Lecture 11 | Bailey: Chapter 5 |
04 Oct | Sorting I |
Card.java (extends Comparable) CardAbstract.java(implements compareTo()) CardDeck.java LinearSearchGeneric.java BinSearch.java BinSearchAlt.java BinSearchComparable.java JavaArraysBinSearch.java |
Lecture 12 | Bailey: Chapter 6 |
6 Oct | Sorting II Problem Set 2 (due 11:00pm October 12 |
Merge.java MergeSort.java |
Lecture 13 |
Bailey: Chapter 6 Handouts: Second Principle of Mathematical Induction |
9-10 Oct | Fall Reading Period | |||
11 Oct | Linear Structures: Stacks & Queues I |
Lecture 14 |
Bailey: Chapter 10 | |
13 Oct | !!!Mountain Day!!! | |||
16 Oct | Linear Structures: Stacks & Queues II |
Position.java Maze.java Solver.java RecSolver.java |
Lecture 15 |
Bailey: Chapter 10 |
18 Oct | Mid-term exam during lab: No class meeting | |||
20 Oct | Linear Structures: Stacks & Queues III; Iterators |
FibonacciNumbers.java |
Lecture 16 |
Bailey: Chapter 10 & Chapter 8 |
23 Oct | Iterators; Ordered Structures |
Count.java SLLIterator.java ReverseIterator.java SkipIterator.java |
Lecture 17 |
Bailey: Chapter 8 & Chapter 11 |
25 Oct | Ordered Structures | Lecture 18 |
Bailey: Chapter 11 | |
27 Oct | Trees I |
BinaryTreeCode.java |
Lecture 19 |
Bailey: Chapter 12 |
30 Oct | Trees II |
Lecture 20 |
Bailey: Chapter 12 | |
1 Nov | Trees III |
Lecture 21 |
Bailey: Chapter 12 | |
3 Nov | Trees IV |
Huffman Encoding demo To run, type: java -classpath huffman.jar HuffmanDemo VectorHeap.java |
Lecture 22 |
Bailey: Chapter 12 |
6 Nov | Priority Queues, Heaps, Heapsort | Online Heap Demo |
Lecture 23 | Bailey: Chapter 13 |
8 Nov | Binary Search Trees I | BinarySearchTree.java |
Lecture 24 |
Bailey: Chapter 14 |
10 Nov | Binary Search Trees II |
BinarySearchTree code fragment |
Lecture 25 |
Bailey: Chapter 14 |
13 Nov | Graphs | Binary.java | Lecture 26 |
Bailey: Chapter 16 |
15 Nov | Graphs II | Graph Practice |
Lecture 27 |
Bailey: Chapter 16 |
17 Nov | Graphs III |
Lecture 28 |
Bailey: Chapter 16 | |
20 Nov | Graphs III |
BFSComponentSize.java DFSComponentSize.java RecDFSComponentSize.java |
Lecture 29 |
Bailey: Chapter 16 |
22-24 Nov | Thanksgiving Break | |||
27 Nov | Graphs IV |
Lecture 30 |
Bailey: Chapter 16 | |
29 Nov | Graphs V |
Lecture 31 |
Bailey: Chapter 16 | |
1 Dec | Graphs VI |
Lecture 32 |
Bailey: Chapter 16 | |
4 Dec | Maps & Hashing I |
NaiveProbing.java (demonstrates why we need placeholders when using linear probing) |
Lecture 33 |
Bailey: Chapter 15 |
6 Dec | Maps & Hashing II |
Optional readings (not on exam): [A Cool And Practical Alternative to Traditional Hash Tables] [Cuckoo Hashing for Undergraduates] [Space/Time Trade-offs in Hash Coding with Allowable Errors] [Don't Thrash: How to Cache Your Hash on Flash] |
Lecture 34 (on exam) Hashing Applications (not on exam) |
Bailey: Chapter 15 |
8 Dec | Wrapping Up |
Lecture 35 |
||
14 Dec | Final Exam: 9:30-noon in Biology 112 | |||