Schedule - CS 307 - Fall 2009

Date Topic Reading and Events
Reading Assignments with a cited chapter are from the recommended textbook, Data Structures and Problem Solving using Java, 3rd edition by Mark Allen Weiss ISBN 0321322134
Wednesday, August 26 Topic 1: Syllabus and Course Mechanics

Slides in PowerPoint, PDF, and PDF for printing (4 slides per page)

1.Read the course syllabus, topics list, and schedule. Browse class materials on class web site.

Friday, August 28 Topic 2: Java basics
Slides: PPT, PDF, PDF 4up
1. Chapter 1
2. Review The Java Tutorial online. Lesson: Language Basics. Read all subtopics including Variables, Operators, Expressions, Statements and Blocks, and Control Flow Statements
java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html
Monday, August 31 Topic 2: Java basics 1. Programming with assertions. Online at:
http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

(4th class day) Last day of the official add/drop period; after this date, changes in registration require the approval of the department chair and usually the student’s dean.

Tuesday, September 1 Optional discussion sections. Assignment 1A help session during discussion section. Optional discussion sections. Assignment 1 help session during discussion section.
Wednesday, September 2 Topic 2: Java basics Assignment 1B posted.
Thursday, September 3 Assignment 1A due Assignment 1A due by 11 pm
Friday, September 4 Topic 3: Pointers and object variables
Slides: PPT, PDF, PDF 4up
1. Pointers and Memory by Nick Parlante. This was designed for students using C but is still an excellent explanation of what pointers are and what can be done with them. Available online at:
http://cslibrary.stanford.edu/102/PointersAndMemory.pdf 
2. Chapter 2, sections 2.1 - 2.4
Monday, September 7 Labor Day Holiday Labor Day Holiday, No Class
Tuesday, September 8 Discussion Section 1. Quiz 1
2. Q and A (questions and answers) for assignment 2
3. If time remaining go over the Roman Numeral problem (number 4) from section problem handout 1.

Javabat problem set 1 due by 4 pm.

Wednesday, September 9 Topic 4: 2D arrays
Slides: PPT, PDF, PDF 4up
1. Multidimensional arrays at Wikipedia.
2. An explanation of multidimensional arrays in Java.  From Introduction to Programming Using Java by David Eck.

Assignment 2 posted.

Thursday, September 10 Assignment 1B due Assignment 1B due by 11 pm.
Friday, September 11 Topic 5: Exceptions and file I/O
Slides: PPT, PDF, PDF 4up
1. The Java Tutorial online: Lesson: What's an Exception and Why do I Care?
java.sun.com/docs/books/tutorial/essential/exceptions/definition.html
2. Chapter 2, sections 2.5 - 2.6
3. The Java Tutorial Online. Basic I/O. Read the sections on I/O Streams and File I/O. java.sun.com/docs/books/tutorial/essential/io/

(12th class day) Last day to drop for a possible refund. Last day to add a course.

Monday, September 14 Topic 6: Designing and Implementing Classes.
Slides: PPT, PDF, PDF 4up.
1. The Java Tutorial online. Lesson: Object-Oriented Programming Concepts. Read the following topics: What is an Object? What is a Class?
java.sun.com/docs/books/tutorial/java/concepts/index.html
2. Chapter 3
3. The Java Tutorial online. Lesson: Objects. Read the page on Objects and the sub pages on Creating Objects and using Objects.
java.sun.com/docs/books/tutorial/java/javaOO/objects.html
4. The Java Tutorial online. Classes. Read all the subtopics of in the Classes section. java.sun.com/docs/books/tutorial/java/javaOO/classes.html
Tuesday, September 15 Discussion Section 1. Quiz 2
2. Q and A for assignment 3
3. Problem 5 from section problem handout 2.

Javabat problem set 2 due by 4 pm.

Wednesday, September 16 Topic 6: Designing and Implementing Classes.

1. The Java Tutorial online. Objects. Read the entry on Objects and the subtopics on Creating Objects and Using Objects. java.sun.com/docs/books/tutorial/java/javaOO/objects.html
2. The Java Tutorial online. More on Classes. Read the entry on More on Classes and all subtopics. java.sun.com/docs/books/tutorial/java/javaOO/more.html
3. Read the entries on Abstract data types, Data structures, and Dynamic arrays at Wikipedia.

Assignment 3 posted

Thursday, September 17 Assignment 2 due Assignment 2 due by 11 pm.
Friday, September 18 Topic 6: Designing and Implementing Classes.  
Monday , September 21 Topic 7: Inheritance and polymorphism
Slides: PPT, PDF, PDF 4up
1. Chapter 4, sections 4.1 - 4.6
2. An explanation of inheritance from Stuart Reges, University of Arizona
3. The Java Tutorial online. What is Inheritance?
java.sun.com/docs/books/tutorial/java/concepts/inheritance.html
4. The Java Tutorial online. A more detailed look at inheritance. Read this page and all the following sub topics: Overriding and Hiding Methods, Hiding Fields, Using the Keyword super, and Object as a Superclass.
java.sun.com/docs/books/tutorial/java/IandI/subclasses.html
Tuesday, September 22 Discussion Section 1. Quiz 3
2. Q and A for assignment 4
3. Problem 9 from section handout 3, building a complex number class.

Javabat problem set 3 due by 4 pm.

Wednesday, September 23

Topic 7: Inheritance and polymorphism

Assignment 4 posted

(20th class day) Last day to drop a course without a possible academic penalty.

Thursday, September 24 Assignment 3 due Assignment 3 due by 11 pm
Friday, September 25 Topic 7: Inheritance and polymorphism  
Monday, September 28 Topic 8: Interfaces and abstract classes.
Slides: PPT, PDF, PDF 4up
1. The Java Tutorial online. Read the entry on What is an Interface. java.sun.com/docs/books/tutorial/java/concepts/interface.html
2. The Java Tutorial online. Lesson: Interfaces. Read this page and all of the sub topics for Interfaces
java.sun.com/docs/books/tutorial/java/IandI/createinterface.html
3. The Java Tutorial online. Read the topic on Abstract Methods and Classes:
java.sun.com/docs/books/tutorial/java/IandI/abstract.html
Tuesday, September 29 Discussion Section 1. Quiz 4
2. Q and A for assignment 5
3. Problem 3 from section problem handout 4. Ticket problem.

Javabat problem set 4 due by 4 pm.

Wednesday, September 30 Topic 8: Interfaces and abstract classes.

Assignment 5 posted 

Thursday, October 1 Assignment 4 due Assignment 4 due by 11 pm
Friday, October 2 Topic 9: Algorithm analysis
Slides: PPT, PDF, PDF 4up
1. Chapter 5
2. Video on Big O from MIT
3. Algorithm Analysis and Big O at Wikipedia
4. The National Institute of Standards and Technology, Dictionary of Data Structures and Algorithms page on Big O notation.
5. Slides on Big O by Owen Astrachan of Duke University. 
Monday, October 5 Topic 9: Algorithm analysis  
Tuesday, October 6 Discussion Section 1. Quiz 5
2. Q and A for assignment 6
3. Midterm 1 review
Wednesday, October 7 Topic 9: Algorithm analysis

Midterm 1, 6 - 8 pm. Location JES A121A.

Midterm 1, 6 - 8 pm. Location JES A121A
Midterm 1 covers up to and including all object oriented programming topics. (Topics 1 - 9.) Algorithm analysis will not be tested on midterm 1.
Friday, October 9 Topic 10: Introduction to recursion
Slides: PPT, PDF, PDF 4up
1. Chapter 7
2. Recursion at Wikipedia.
3. Recursion at the NIST Dictionary of Algorithms and Data Structures
Monday, October 12 Topic 10: Introduction to recursion  
Tuesday, October 13 Discussion Section 1. Quiz 6
2. Midterm 1 handed back, review suggested solution
2. Q and A for assignment 7.

Javabat problem set 5 due by 4 pm.

Wednesday, October 14 Topic 11: Recursive backtracking
Slides: PPT, PDF, PDF 4up
1. Backtracking at Wikipedia.
2. Backtracking at the NIST Dictionary of Algorithms and Data Structures
3. Another explanation of recursive backtracking.
4. The 8 queens puzzle at Wikipedia.
5. the knapsack problem at Wikipedia.

Assignment 6 posted

Thursday, October 15 Assignment 5 due Assignment 5 due by 11 pm
Friday, October 16 Topic 11: Recursive backtracking  
Monday, October 19 Topic 12: Sorting and searching
Slides: PPT, PDF, PDF 4up
1. Chapter 5, section 5.6 and Chapter 8.
2. Searching articles at Wikipedia: Linear Search, Binary Search,
3. Searching articles at NIST DADS: Linear Search, Binary Search
4. Sorting articles at Wikipedia: Selection Sort, Insertion Sort, Shell sort, Quick sort, Merge sort
5. Sorting articles at NIST DADS: Selection Sort, Insertion Sort, Shell sort, Quick sort, Merge sort
6. A whimsical take on selection sort and quicksort at YouTube. 
Tuesday, October 20 Discussion Section 1. Quiz 7
2. Q and A for assignment 8
4. Problems 4, 8, and 11 from section problem handout 6.

Javabat problem set 6 due by 4 pm.

Wednesday, October 21 Topic 12: Sorting and searching
Slides: PPT, PDF, PDF 4up

 

Mid semester. Last day an undergraduate student may, with the dean's approval, withdraw from the University or drop a course except for urgent and substantiated, nonacademic reasons. ("Q drop" a course.) Last day a student may change registration in a course to or from the pass/fail or credit/no credit basis. In practice I always grant approval for "Q drops" up to this date as long as their are no issues with academic integrity.

Assignment 7 posted

Thursday, October 22 Assignment 6 due Assignment 6 due by 11 pm
Friday,
October 23
Topic 12: Sorting and searching
Slides: PPT, PDF, PDF 4up
 
Monday, October 26 Topic 13: Abstract Data Types and Data Structures: Array based lists revisited.
Slides: PPT, PDF, PDF 4up
1. Sections 6.1, 6.3.1, 6.4 - 6.9
2. Chapter 15
3. Abstract Data Types, Data Structures, and Dynamic Arrays at the NIST Dictionary of Algorithms and Data Structures. (NIST DADS)
4. The Java Tutorial online. The intro article to the Collections Framework java.sun.com/docs/books/tutorial/collections/interfaces/index.html and The Collection Interface. java.sun.com/docs/books/tutorial/collections/interfaces/collection.html
5. An explanation of the Java Collections Framework.
Tuesday, October 27 Discussion Section 1. Quiz 8
2. Q and A for assignment 8
3. Part 1 from section problems 8.

Javabat problem set 7 due by 4 pm.

Wednesday, October 28 Topic 14: Generic Data Structures
Slides: PPT, PDF, PDF 4up
1. Section 4.7
2. The Java tutorial online. Generics. Read the Introduction and the section on Generic Types. java.sun.com/docs/books/tutorial/java/generics/index.html

Assignment 8 posted.

Thursday, October 29 Assignment 7 due Assignment 7 due by 11 pm
Friday,
October  30
Topic 15:  Iterators
Slides: PPT, PDF, PDF 4up
1. Sections 6.2 and 6.3.2
2. Iterators at Wikipedia.
3. The Java Tutorial online. Nested Classes. Read the main entry on Nested Classes and both subtopics on Inner Class Example and Summary of Nested Classes. java.sun.com/docs/books/tutorial/java/javaOO/nested.html
Monday, November 2 Topic 15: Iterators  
Tuesday, November 3 Discussion Section 1. Quiz 9
2. Q and A for assignment 9

Javabat problem set 8 due by 4 pm.

Wednesday, November 4 Topic 16: Linked Lists
Slides: PPT, PDF, PDF 4up
1. Chapter 17
2. Linked Lists at Wikipedia.
3. Linked Lists at the NIST Dictionary of Algorithms and Data Structures

 

Friday,
November 6
Topic 16: Linked Lists  
Monday, November 9 Topic 16: Linked Lists  
Tuesday, November 10 Discussion Section 1. Quiz 10
2. Q and A for assignment 9

Javabat problem set 9 due by 4 pm.

Wednesday, November 11 Topic 17: Stacks
Slides: PPT, PDF, PDF 4up
1. Section 11.1
2. Chapter 16
3. Stacks at Wikipedia.
4.  Stacks at the NIST Dictionary of Algorithms and Data Structures
5. Section 11.2
6. postfix notation at Wikipedia

Assignment 9 posted.

Thursday, November 12 Assignment 8 due. Assignment 8 due by 11 pm
Friday,
November 13

Topic 17: Stacks

 
Monday, November 16 Topic 18: Queues
Slides: PPT, PDF, PDF 4up
1. Chapter 16
2. Queues at Wikipedia.
3. Queues at the NIST Dictionary of Algorithms and Data Structures

 

Tuesday, November 17 Discussion Section 1. Quiz 11
2. Review for Midterm 2
Wednesday, November 18 Topic 19: Trees
Slides: PPT, PDF, PDF 4up

Midterm 2, 6 - 8 pm, Location WEL 1.316

1. Chapter 18
2. Binary Trees at Wikipedia
3. Binary Trees at the NIST Dictionary of Algorithms and Data Structures (See the main page and search for the term traversal to find information the various tree traversal algorithms.)

Midterm 2, 6 - 8 pm. Location WEL 1.316
Midterm 2 covers up to and including linked lists. (Topics 1- 16.)

 Assignment 10 posted. No more than 3 slip days may be used on Assignment 10.

Friday,
November 20
Topic 20: Binary search trees
Slides: PPT, PDF, PDF 4up

Assignment 9 due

1. Chapter 19, sections 19.1 - 19.3
2. Binary Search Trees at Wikipedia
3. Binary Search Trees at the NIST Dictionary of Algorithms and Data Structures

Assignment 9 due by 11 pm, 

Monday, November 23 Topic 20: Binary search trees Assignment 11 posted. Slip days may not be used on assignment 11.
Tuesday, November 24 Discussion Section

 

1. Quiz 12
2. Midterm 2 handed back, review suggested solution
Wednesday, November 25 No Class, CS307 only No Class, CS307 only
Thursday, November 26 Thanksgiving Holiday Thanksgiving Holiday, no class
Friday,
November 27
Thanksgiving Holiday Thanksgiving Holiday, no class
Monday, November 30 Topic 21: Balanced binary search trees
Slides: PPT, PDF, PDF 4up
1. Chapter 19, section 19.5
2. Red-Black Trees at Wikipedia
3. Red-Black Trees at the NIST Dictionary of Algorithms and Data Structures
4. An Applet showing Red-Black trees in action.
Tuesday, December 1 Discussion Section

Assignment 10 due.

1. Quiz 13
2. Height method for binary tree
3. TA evaluations

Assignment 10 due by 11 pm. No more than 3 slip days may be used on Assignment 10.

Wednesday, December 2

Topic 22: Hash tables, Maps / Dictionaries
Slides: PPT, PDF, PDF 4up

Course-Instructor Evaluations

1. Chapter 20
2. Hash tables at Wikipedia
3. Hash tables at NIST DADS

Course-Instructor Evaluations

Friday,
December 4
Topic 22: Hash tables, Maps / Dictionaries

Assignment 11 due.

1. Section 6.8
2. Maps / Dictionaries at Wikipedia (a.k.a. associative arrays)
3. Maps / Dictionaries at NIST DADS

Assignment 11 due by 11 pm. Slip days may NOT be used on assignment 11.

December 7 & 8 Dead Days Dead Days
Wednesday, December 9 First Day of Finals The CS307 final will be given at a uniform time for both lecture sections. The final time will NOT follow the time listed in the course schedule, but will be listed in the final exam schedule as a uniform exam. The data and time for the final will be available towards the end of October. Traditionally the Registrar schedules the final for either Wednesday, Thursday, or Friday evening of finals week, but could be as late as Tuesday, December 15.
Tuesday,
December 15
Finals End