
Staff Contact Information 


Instructor
Teaching Fellows:
Course Assistants and Labs

Professor Snyder Wenxin Feng Baichuan Zhou Course Assistants: Andrew, Amalia, Kyle, Viviana, Beth, Srivedi, Monica, and Mahir 



Course Schedule 

Lecture 
Date 
Lecture Topic 
Readings (Java = "Java in a Nutshell") 
Lecture Slides and Code Examples 
Homeworks and Tests 
Labs 
1 
T 1/20 
Overview of Course & Course Policies; Motivational Lecture: Two algorithms for searching an arrayalgorithm, implementation, analysis, and experiments 
Syllabus; 


2 
R 1/22  Introduction to Java: compilation vs interpretation, expressionoriented vs statementoriented, and types.  Read Ch. 1 of Java; and start to look at Ch. 2 up through expressions

Used the board and Dr. Java!

HW01: HTML Part A Solution: HTML 
Lab 01: HTML 
T 1/27  Snow Day! 


3  R 1/29  Java continued: increment and decrement operators, control structures  Continue to read Chapter 2 through the material on increment/decrement operators (++ and ) and control structures (emphasize if, while, and for)  Used the board and Dr. Java!  HW02: HTML Part A Solution: HTML 
Lab 02: HTML 
4  T 2/3  Finishing loops: break and continue; Array literals (how to initialize an array); Defining a static class; The words static, public, & private; Defining and using methods; Local variables vs fields; Scope of variables and fields 
Please read through the next couple sections of the textbook, on defining methods, on the array data type, and on defining classes, but STOP when you get to the part about defining objects using the word new.  Used the board and Dr. Java!  
5  R 2/5  Defining objects (nonstatic classes);  Read the sections in the textbook on "Creating Objects" and "Using Objects"  Used the board and Dr. Java!  HW03: HTML Part A Solution: HTML 
Lab03: HTML 
T 2/10  Snow Day!.  
6  R 2/12  ObjectOriented Design  Lecture 6: PDF  HW04: HTML Part A Solutions: HTML 
Lab04: HTML  
T 2/17  No class  Monday schedule  
7  R 2/19  Reference types: How are the variables for arrays and objects different than for primitive types? Fixing a big problem with stacks and queues: Array resizing Implementing Queues with Ring Buffers. 
Read textbook section on "Array Types" (most of this you already know), and first subsection of "Reference Types" on "Copying Objects and Arrays"; Optional: Read about "Ring Buffers" on Wikipedia 
Lecture 7: PDF  HW05: HTML Part A Solutions: HTML 
Lab 05: HTML 
8  T 2/24  Polymorphic ADTs; Generic classes; Introduction to sorting: Iterative sorts: Insertion & Selection Sort; 
 Lecture 8: PDF  Here is a nice Youtube minilecture on sorting, with associated lectures on all the major sorting algorithms.  
9  R 2/26  Analysis of algorithms, "Big Theta" notation, experimental verification by timing analysis; Complexity analysis of iterative sorts; Recursive sorting: Mergesort

Lecture 9: PDF  HW 06: HTML Part A Solutions: HTML 
Lab 06: HTML  
10  T 3/3  Recursive sorting: Quicksort; Complexity analysis of recursive sorts 
Lecture 10: PDF  Last day to drop a class without a "W" on your transcript.  
11  R 3/5  Introduction to Linked Lists; Stacks and Queues with LLs  Notes on Iterative LL Algorithms  Lecture 11: PDF  No HW this week!  Here is a very short, clear tutorial on Linked Lists: YouTube There are a number of such tutorials on YouTube, so look around a bit for others if you wish! 
SPRING BREAKEAK  
12  T 3/17 
Basics of List Processing: Iterative Algorithms  Notes on Iterative LL Algorithms  Lecture 12: PDF  
W 3/18  Midterm Review Session  
R 3/19  Midterm Exam  HW 07: HTML Part A Solution: JAVA 
Lab 07: HTML Please read pp.5559 in the textbook before the lab. 

14  Sat 3/21  Recursive algorithms on LLs  
15  T 3/24  Recursive algorithms on LLs  
16  R 3/26  Binary Trees, Binary Search Trees; Searching and Insertion in BSTs.  Lecture 16: PDF  HW 08: HTML Part A Solution: HTML 
Lab 08: HTML  
17  T 3/31  Deletion from BSTs; Recursive tree traversals; Iterative tree traversals using an explicit stack 
Please read the following WikiP article on Tree Traversals: HTML 
Lecture 17: PDF  
18  R 4/2  23 Trees; Tree traversals using parent pointers (lab)  Lecture 18: PDF Here is a good explaination of 23 Tree Insertions: YouTube Here is a good animation you can play with to verify your understanding: HTML 
HW 09: HTML Part A Solution: HTML 
Lab 09: HTML (Tree traversals using parent pointers) Friday 4/3 is last day to drop with a "W". 

19  T 4/7  23 Trees concluded; BTrees and external data structures  Please look at the following Wiki Article: HTML (and follow the link to read about breathfirst search)  
20  R 4/9  Array representation of binary trees; Binary Heaps, Heapsort  No lab this week!  
21  T 4/14  The (nearly) Perfect Data Structure; Perfect Hashing, Hash Functions; Hash Tables with Separate Chaining  HW 10: HTML (MiniGoogle) Part A Solution: HTML 

22  R 4/16  Hash Tables with Linear Probing; Performance of Hash Tables  HashTableLP.java  Lab 10: HTML (Performance of hash functions)  
23  T 4/21  Game trees: adversary search; implementation issues; example TicTacToe program  Reading on AI Techniques for Game Playing: PDF  Lecture 23: PDF Example: TicTacToe.java 

24  R 4/23  Statespace "puzzle" search, recursive backtracking  Lecture 24: PDF 
Optional HW 11: HTML (Team project: game) Code Distribution for HW 11: ZIP 
No more labs!  
25  T 4/28  Alphabeta pruning and refinements to gametree search  
27  R 4/30  Last Lecture: Conclusions, Wrapup, and Course Evaluations  
T 5/5  Final Exam Review Session  
W 5/6  Final Exam  
F 5/8 noon  Extra HW due 