skip to primary navigationskip to content

Department of Computer Science and Technology



Course pages 2023–24

Further Java

Taken by: Part IB CST
Term: Michaelmas
Hours: 10 (10 hours self-study)
Format: Self study non-assessed course
Prerequisites: Object-Oriented Programming. Companion courses: Concurrent and Distributed Systems.
Moodle, timetable


The goal of this course is to provide students with the ability to understand the advanced programming features available in the Java programming language, completing the coverage of the language started in the Programming in Java course. The course is designed to accommodate students with diverse programming backgrounds; consequently Java is taught from first principles in a practical class setting where students can work at their own pace from a course handbook.


At the end of the course students should

  • understand different mechanisms for communication between distributed applications and be able to evaluate their trade-offs;
  • be able to use Java generics and annotations to improve software usability, readability and safety;
  • understand and be able to exploit the Java class-loading mechansim;
  • understand and be able to use concurrency control correctly;
  • be able to implement a vector clock algorithm and the happens-before relation.

Recommended reading

* Goetz, B. (2006). Java concurrency in practice. Addison-Wesley.
Gosling, J., Joy, B., Steele, G., Bracha, G. and Buckley, A. (2014). The Java language specification, Java SE 8 Edition. Addison-Wesley.