Lecture Log - Semester 2

The following is a log of the material covered in the Semester 2 Lectures.

The html versions are buggy sometimes. Please use the pdf in those cases.

Week Number Lecture Content Reading Examples Tutorial material
Week 1

Recursion and Lists

This week, we looked at how to define recursive functions in Java as static methods, and applied the ideas to functions on list data structures.

Recursion [Powerpoint | pdf]

Lists [Powerpoint | pdf]

[zip, tar]
Week 2

Recursion and Trees

This week, we applied the ideas of recursive functions to binary trees and binary search trees.

[Zip | Tar]
Week 3

Search Trees and Mutable Data Structures

We expanded on last week's introduction to trees to cover binary search trees and height-balanced binary search trees (AVL trees). On Wednesday, we started looking at mutable data structures.

Assertions tutorial
Week 4

Mutable data structures and Collections

This week, we looked at how to modify linked data structures, with linked lists being the prime example. On Friday, we looked at the Java class library for collection classes.

Java Tutorial on Collections

[Zip | Tar] Collections and Generics
Week 5

Generics and GUI classes

This week, we took a close look at the Java type system, in particular, the generic features of the interfaces and methods. We also started discussion of the GUI class library (Swing).

Java Tutorial on Generics

Java Tutorial on Swing

Lecture slides: GUI [slides | handout], Events [slides | handout] ]

[Zip | Tar] More on Collections and Immutability
Week 6

GUI classes and Threads

This week, we continued the discussion of GUI classes, in particular, event handling, layout management and the model-view-controller architecture. On Wednesday, we started talking about threads.

Lecture slides: [slides | handout]

Java tutorials on Layout, Event Listeners, Model-View-Controller

Model-View example [Zip | Tar]
Week 7

Threads and Networking

On Monday, we continued the discussion of threads, and the design issues about sharing data between threads. We looked at the Dining Philosophers problem that illustrates the "deadlock" and "starvation" issues. On Tuesday, we looked at communication between networked machines using "sockets". On Wednesday, we looked at code examples for threads as well as sockets.

Lecture slides [html]

Dining philosophers [Wiki page]

JUnit [tutorial]

Java tutorials: [Concurrency], [Network Sockets], [I/O streams]

concurrency2.zip

Week 8

I/O and database connectivity

Java tutorials: [I/O streams] [Database access (JDBC)]

concurrency2.zip