Lecture notes and some supplementary material will be added here during the course of the module.
Lecture 1. Introduction to the module.
Lecture 2. Review of Object-orientation; What is a class?
Lecture 3. Review of Object-orientation; Abstract Data Types; Maude.
Task for Week 1: read the Code Conventions for Java. You will be expected to follow these conventions in the practical assignments.
Lecture 4. Implementing BandCard.
Lecture 5. Modifiers: final and static.
Lecture 6. Modifiers: scope.
Lecture 7. Implementing ADTs.
Lecture 8. Implementing ADT CardHand
Lecture 9. Linked Lists
Lecture 10. (Doubly) Linked Lists.
Lecture 12. Documentation and Javadoc.
Lecture 13. Propositional Logic.
Lecture 14. Propositional Logic; interfaces.
Lecture 15. Propositional Logic; Inner and anonymous classes.
Lecture 16. Abstract Classes.
Lecture 17. Exceptions.
Lecture 18. Exceptions.
Lecture 19. Input/Output
Lecture 20. Network Programming
Lecture 21. Concurrency
Lecture 22. Concurrency: Consumer-Producer example
Lecture 23. Concurrency: synchronization
Lecture 24. Concurrency and Deadlock
Lecture 25. Practical Matters (no slides).
Lecture 26. Class Invariants
Lecture 27. Class Invariants: Binary Search Trees
Lecture 28. Class invariants: AVL Trees.
Lecture 29. Class invariants: AVL Trees.
Lecture 30. Class invariants: AVL Trees.
Lecture 31. Generics.
Lecture 32. Generic methods; implementation of generic types.
There will be two revision lectures.