Resources 
Staff Contact Information 


Instructor
Teaching Fellows: Minyang ("Mindy") Yan (myyan@bu.edu); Zingchen ("David") Zhou (xczhou@bu.edu) 

Lecture Schedule 

Lecture 
Date 
Lecture Topic 
Readings ( Java = "Java in a Nutshell", Eck = "Introduction to Programming in Java) 
Lecture Slides and Code Examples 
Homeworks and Tests 
Labs 
1 
W 7/5 
Overview of Course & Course Policies; Motivational Lecture: Two algorithms for searching an arrayalgorithm, implementation, analysis, and experiments; Introduction to Java: compiled languages (Java) vs interpreted languages (Python); Java continued: Types, operators, and expressions. 
You should read up through variables, types, and expressions in one of the two recommended texts. Finally, here is an excellent online resource: at LearningJavaOnline: go through exercises for

Motivational Lecture: PDF Java I: PDF 
HW 1: HTML Part A Solution: HTML 
Lab 1: HTML 
2 
R 7/6  Java statements, conditionals, and loops; break and continue; Java arrays 
Read Chapter 2 of Java up through while, for, break, and continue; also read about Array Types OR: Read Chapter 2 of Eck, sections 1  5 and Ch. 3, sections 1  5, 8, and Ch. 7 (at least the beginning). OR: At LearningJavaOnline: go through exercises for

We will finish the Introduction to Java, and then cover: Java II: PDF Java III: PDF 

Lab 2: HTML 
3 
F 7/7  Java continued: Methods and fields and the structure of basic Java programs. Scope of local variables, fields, and methods; Breaking a Java program into separate classes and separate files; Breaking a Java program into separate classes and separate files; more on scope (public vs private); static vs nonstatic members.  Please read about methods and Classes and Objects in the Java text; OR Read Ch. 4 of Eck, sections 1  4. OR Functions and Objects in JavaOnLine Here are some additional Resources: You can read about the difference between local and instance variables here: HTML For scope of declarations, take a look at this set of notes: HTML 
Java IV: PDF 
HW 2: HTML Part A Solution: HTML 

4  M 7/10  Creating and using (dynamic) objects; objectoriented design. Packages. Lab: Testing and debugging

Reading as last lecture, plus "Packages and the Java Namespace," and "Java File Structure" in the Java text.

Java V: PDF Summary of Java Program Structures: PDF 
HW 3: HTML Part A Solution: HTML 
Lab 3: HTML 
5  T 7/11  Analysis of algorithms, "Big Oh" notation, experimental verification by timing analysis; Interative sorting algorithms: Selection sort, Insertion sort Complexity analysis of iterative sorts;

Here is a good Youtube tutorial on Selection Sort; Here is a good one on Insertion Sort. There are 1000's of Youtube lectures on sorting algorithms: here is a creepy visualization of Insertion Sort, and here is a downright strange visualization of Insertion sort. Here is a nice Youtube minilecture on sorting, with associated lectures on all the major sorting algorithms. 
Lecture: PDF



6  W 7/12  Recursive Sorting Algorithms: Mergesort Complexity Analysis of Recursive Sorts 
Lecture: PDF  Interfaces (this starts at p.117 in the Java book pdf available online)  
7  R 7/13

OOD and Abstract Data Types; Stacks and Queues Reference types; Array Resizing

Read the section on Reference Types (pp.7481) CAREFULLY in the Java Text. Read the first half of the Wiki Article on Circular Buffers ("How it works" and look at the animated gif). 
Lecture: PDF 
HW 04: HTML Part A Solutions: HTML 

8  M 7/17  Queues implemented as Ring Buffers Deques and Priority Queues; 
Lecture: PDF  HW 05: HTML (due Friday 7/21 at midnight) 

9  T 7/18  Linked Lists Stacks and Queues with LLs. Iterative Linked List Algorithms Lab: Java Generics 
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! You might want to check out the classic Binky Pointer Fun video on YT, but bear in mind it is written for a different language (C or C++). 
Lecture: PDF  Lab: HTML  
10  W 7/19  Iterative LL algorithms; Recursion and the runtime stack. Lab: Recursion 
Notes on Iterative LL Algorithms Powerpoint slides on Exceptions: PDF

Used the board! 

Lab: HTML 
11  R 7/20  Recursive algorithms on LLs; 

Used the board!  
12  M 7/24  MIDTERM EXAM 
Midterm Solution: PDF Here is a directory of some past midterms (note that some questions may involve topics we didn't cover this term): DIR 

13  T 7/25  Recursion and LLs Lab: Java Exceptions 
Here is an example of a simple exception: JAVA 
Used the board! 
HW 06: HTML (Due Th 7/27) 
Lab: HTML 
14  W 7/26  Binary Trees, Binary Search Trees; Searching, Insertion, and Deletion in BSTs. Lab: Java Iterators 
Here is the Java Tutorial Page on Iterators: HTML Also, look at this tutorial on Java Iterators: HTML Here is an example of a simple iterator for an arraybased data structure: JAVA 

Lab: HTML  
15  R 7/27  Algorithms on Binary Trees; Recursive tree traversals; Iterative tree traversals using an explicit stack 
Please read the following WikiP article on Tree Traversals: HTML and follow the link to read about breadth first search. 
Lectures on Binary Search Trees: PDF1, PDF2  HW 07: HTML (due T 8/1) 

20  M 7/31  23 Trees; BTrees and external data structures 
Here is a good explanation of 23 Tree Insertions: YT Here is a good animation you can play with to verify your understanding: HTML

Lecture: PDF  Lab 4: HTML  
21  T 8/1  The (nearly) Perfect Data Structure; Perfect Hashing, Hash Functions; Hash Tables with Separate Chaining 

Used the board!  Practice exericses on hashing: HTML  
22  W 8/2  Linear Probing; Performance of Hash Tables Double hashing Resizing a hash table in linear time 
Here is a Java implementation of a linear probing HT: JAVA  Used the board!  
23  R 8/3  Final Exam 
