Algorithms and complexity. Exception handling. Event handling. Graphics. Multithreading. Network programming.
Data structures. Abstract data types and classes (lists, stacks, queues, etc.) Inheritance vs composition. Abstract vs concrete classes. Self-referential classes.
The schedule on this page is subject to change. This page is provided as a resource, mostly so you can find lecture notes and problem sets. There is also a moodle page associated with this course, which contains forums & will be where you submit your coursework.
| Week Starting | 
       Lecture
Topics (exact organization still subject to change) | 
      Lab
Topics | 
    
| 30 January | 
      Intro to
programming, data structures, algorithms and sorting. Reinventing the Wheel, Algorithm Examples: Sorting, Intro to Algorithms and Complexity.  | 
      Lists
in different languages | 
    
| 6 February | 
      Algorithms, complexity and search. Logarithmic Complexity and the Big O, The Complexity of Various Sort Algorithms, Searching & Complexity  | 
      Sorting  | 
    
| 13 February | 
      Java class
structure and non-linear control. Space, Class & Interface, Errors, Exceptions and Nonlinear Control, Concurrency and Threading  | 
      Coursework 1 handed out Debugging  | 
    
| 20 February | 
      Concurrency,
threading & GUIs. When Threading Goes Bad, Intro to Networking, How to Network  | 
      
       Ongoing support for
Coursework 1 
       | 
    
| 27 February | 
      GUIs &
Networking Some Final Protocols, Intro to Graphical User Interfaces, Panels, Components & Layouts Galore  | 
      |
| 6 March | 
      Search
Applications & Internet
programming.  Applets & Java's Sordid History, Searching Applications 1, Searching Applications II  | 
      Ongoing support for Coursework 2 | 
| 13 March | 
      Part B | Coursework 2 - 1st increment due,
marked in lab. | 
    
| 20 March | 
      Part B | Coursework 2 due | 
| The rest of term. | 
      Part B | Part B |