|
Instructors |
|
|
Lecture |
MW 1:30-2:45 PM (Prof. Ten Eyck's section) |
|
Lab |
Monday at 7 PM |
|
Coaching hours |
Wednesdays from 6-8 PM in the Asprey lab |
Throughout the semester this web page will be updated with important course information. Please check it regularly.
| The Final Exam will take place on Friday, May 19 from 9:00-11:00 AM in RH 307 (Prof. Hovemeyer's section) and RH 303 (Prof. Ten Eyck's section). Open book and open notes. |
Please note: the exact topics of future lectures are tentative.
| Date | Topic, Lecture Notes, Examples | Assignment | Reading for next time |
|---|---|---|---|
| Wed/Thur Jan. 25/26 |
Course overview, review of basic Java: Syllabus, Notes | Assignment 1 | Review Chapters 1-3. Read Chapter 4 Sections 4.1-4.5. |
| Mon/Tue Jan. 30/31 |
Reference types: arrays and objects. Classes, interfaces, and inheritance. Notes. Examples: Point.java, Animal.java, Cat.java, Dog.java, VetOffice.java | Weiss, Chapter 2, Sections 2.5-2.6 | |
| Wed/Thur Feb. 1/2 |
Exceptions, the call stack, reading from a file. Notes, Slides, Exception tutorial, Handling errors with Exceptions | Assignment 2, due by 11:59 PM on Friday, Feb 10th | Weiss, Chapter 2, Section 2.4. Chapter 4, Section 4.6. |
| Mon/Tue Feb. 6/7 |
Arrays, analysis of algorithms intro. Notes | Weiss, Chapter 4, Sections 4.7-4.9. | |
| Wed/Thur Feb. 8/9 |
Generic containers and algorithms. Notes | Assignment 3, due by 11:59 PM on Thursday, February 16th | Weiss, Chapter 6, Sect. 6.6, Chapter 16, Sects. 16.1-16.3 |
| Mon/Tue Feb. 13/14 |
Stacks. Notes | Weiss, Chapter 5, Sections 5.1-5.4 | |
| Wed/Thur Feb. 15/16 |
Simple linked lists, stacks continued. Analysis of algorithms. Notes | Assignment 4, due by 11:59 PM on Friday, February 24th | Weiss, Chapter 16 |
| Mon/Tue Feb. 20/21 |
Analysis of algorithms, continued. Queues. Notes | Study for Exam | |
| Wed/Thur Feb. 22/23 |
First midterm exam, in class. Open book, open notes. | ||
| Mon/Tue Feb. 27/28 |
Threads and synchronization. Singly-linked lists. Slides. | Assignment 5, due by 11:59 PM on Thursday, March 9th | Weiss, Chapter 17, Sect. 17.1-17.5, and Synchronizing Java Threads |
| Wed/Thur March 1/2 |
Singly-linked lists, continued. Loop preconditions, post conditions and invariants. Notes | ||
| Mon/Tue March 6/7 |
Iterators. Doubly-linked lists. Notes | ||
| Wed/Thur March 8/9 |
Queues using arrays. Introduction to sorting. | Start reading chapter 8. | |
| Mar. 10-26 | Spring break, no class | ||
| Mon/Tue March 27/28 |
Shell sort, merge sort. Sorting Applets | Sections 8.1-8.5. | |
| Wed/Thur Mar. 29/30 |
Quick sort. Proof by induction. Recursion. Notes | Assignment 6, due by 11:59 PM on Thursday, April 6th | Sections 7.1-7.3, 7.5-7.6 |
| Mon/Tues April 3/4 |
Dynamic programming. Trees. Binary trees, traversals. Notes. Dynamic programming code example: makeChange.zip | Sections 18.1-18.4. Section 19.1. | |
| Wed/Thur April 5/6 |
Binary search trees. Notes | Assignment 7, due by 11:59 PM on Thursday, April 13th | Sections 19.2-19.4. |
| Mon/Tue April 10/11 |
Order statistics in BSTs. AVL Trees. Implementation of Naive BST, BST with order statistics, and AVL (insert-only): bst_2.zip. Proof that the number of nodes in AVL trees grows exponentially as a function of height. | Sections 19.5-19.6. | |
| Wed/Thur April 12/13 |
Red-black trees and AA-trees. Notes. Implementation: bst_3.zip | Assignment 8, due by 11:59 PM on Thursday, April 27th | Skip lists: a probabalistic alternative to balanced trees |
| Mon/Tue April 17/18 |
Skip Lists. Implementation: skiplist.zip | Study for Exam | |
| Wed/Thur April 19/20 |
Second midterm exam, in class. Open book, open notes. | ||
| Mon/Tue April 24/25 |
B-trees. Intro to binary heaps and priority queues. Notes. Binary heap implementation: binheap.zip | Section 19.8. Sections 21.1-21.2. | |
| Wed/Thur April 26/27 |
Heaps, continued. Heap sort. Heap sort implementation: heapsort.zip. | Assignment 9, due by 11:59 PM on Tuesday, May 9th | Sections 20.1-20.6. |
| Mon/Tue May 1/2 |
Hash tables, Collisions in hash tables. Notes. | ||
| Wed/Thur May 3/4 |
Open addressing: linear and quadratic probing, double hashing. Software development methodology. | Section 14.1. | |
| Mon/Tue May 8/9 |
Graphs. | ||
| Friday, May 19 | Final exam, from 9:00-11:00 AM. In RH 307 (Prof. Hovemeyer's section) and RH 303 (Prof. Ten Eyck's section). Open book and open notes. | ||
| Week | Lab | Files |
|---|---|---|
| Week 1: January 25 - January 27 | No lab | |
| Week 2: January 30 - February 3 | Lab 1: Asprey Lab Intro, Coins Class | lab1.zip |
| Week 3: February 6 - February 10 | Lab 2: Testing with JUnit | lab2.zip |
| Week 4: February 13 - February 17 | Lab 3: Modifying a GUI Program | lab3.zip |
| Week 5: February 20 - February 24 | Lab 4: Palindromes | lab4.zip |
| Week 6: February 27 - March 3 | Lab 5: Singly-linked lists | lab5.zip |
| Week 7: March 6 - March 10 | Lab 6: Timing Sorting Algorithms | lab6.zip |
| Week 8: March 27 - March 31 | Lab 7: Fractals | lab7.zip |
| Week 9: April 3 - April 7 | Lab 8: Proof by Induction | |
| Week 10: April 10 - April 14 | Lab 9: Binary Tree Traversals | lab9.zip |
| Week 11: April 17 - April 21 | Lab 10: Binary Tree Iterators | lab10.zip |
| Week 12: April 24 - April 28 | Lab 11: Bitwise Operators | lab11.zip |
| Week 13: May 1 - May 5 | Lab 12: Hash Functions | lab12.zip |
| Week 14: May 8 - May 9 | No Lab | |