MSc Java Workshop

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 [html | pdf]

    Lists [html | 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

    No lectures this week

    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

    Collection and GUI classes

    This week, we continued the discussion of collection classes, in particular, the generic features of the interfaces and methods. On Friday, we started discussion of the GUI class library (Swing).

    Java Tutorial on Swing

    Lecture slides [html | pdf]

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

    GUI classes and Sockets

    This week, we continued the discussion of GUI classes, in particular, event handling, layout management and the model-view-controller architecture. On Wednesday, we looked at client-server programming using sockets.

    Lecture slides [html | pdf]

    Java tutorials on Layout, Event Listeners, Model-View-Controller, and Network Sockets

    Swing [Zip | Tar] Model-View example [Zip | Tar]
    Week 7

    Threads and testing

    On Monday-Tuesday, we talked about the Java mechanisms for creating 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 Wednesday, we talked about testing and the JUnit framework.

    Lecture slides [html]

    Dining philosophers [Wiki page]

    JUnit [tutorial]