CMPU 102: Computer Science II, Spring 2006

Instructors

David Hovemeyer & James Ten Eyck

Lecture

MW 1:30-2:45 PM (Prof. Ten Eyck's section)
TR 3:10-4:25 PM (Prof. Hovemeyer's section)
Both sections meet in Mudd 318

Lab

Monday at 7 PM
Tuesday at 5:30 PM
Friday at 12:00 noon
In the Asprey lab in OLB
The lab coach (Monday/Friday) is Pat Shields

Coaching hours

Wednesdays from 6-8 PM in the Asprey lab
The coach is Marius Suta

Throughout the semester this web page will be updated with important course information.  Please check it regularly.

Contents

News

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.

15 May 2006
The final exam from Fall 2005 is available for review.
10 May 2006
There will be a final exam review session Tuesday, May 16th from 9-11 PM, in the CS classroom (OLB 105).  Bring questions!
27 Apr 2006
Assignment 9 is posted, due Tuesday, May 9th by 11:59 PM.
11 Apr 2006
Midterm 2 Review Questions and Fall 2005 Midterm 2 are available
6 Apr 2006
Assignment 7 is posted, due Thursday, April 13th by 11:59 PM.
3 Apr 2006
The second midterm exam will take place in class on April 19th and 20th.  The exam is open book and open notes.
29 Mar 2006
Assignment 6 is posted, due Thursday, April 6th by 11:59 PM.
27 Feb 2006
Assignment 5 is posted, due Thursday, March 9th by 11:59 PM.
16 Feb 2006
Assignment 4 is posted, due Friday, Feb 24th by 11:59 PM.
13 Feb 2006
The first midterm exam will take place in class on February 22nd/23rd.
9 Feb 2006
Assignment 3 is posted, due by 11:59 on Thursday, Feb 16th.  Information about working from home, including submitting projects, is available
2 Feb 2006
Assignment 2 is posted, due by 11:59 PM on Friday, Feb 10th.  Slides from Prof. Ten Eyck's exception handling lecture are available.
29 Jan 2006
Lab times for the semester will be Monday at 7 PM, Tuesday at 5:30 PM, and Friday at 12:00 noon.  All labs meet in the Sun lab in OLB.
25 Jan 2006
Assignment 1 is assigned, due Friday, January 27 by 11:59 PM
24 Jan 2006
Welcome back!

Resources

Lectures, Assignments, and Exams

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.

Labs

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