Java Programming (Languages in Depth series)

Bertrand Meyer,  Manuel Oriol and Marco Piccioni, Spring Semester 2008


Announcements | Description | Schedule | Lectures | Exam | Literature | Course Wiki



May 21st
  • The evaluation for the Java course will be presented and discussed May 22, at the beginning of the lecture.
May 20th
  • The examination for the course will be May 29, room ML E 12, from 14:15 to 16:00.
May 20th
  • The projects presentations will take place in two groups, on May 21 and May 28, according to the schedule in the wiki. Room is LFV E 41
May 20th
  • Lecture notes for streams, sockets, threads, reflection and dynamic class loading added
March 28th
  • Lecture notes for Java Basics added

February 18th

  • The exam will be on May 29th

February 18th

  • The exercise sessions will start on February 27th, that is, the week after the first lecture

February 13th

  • This page is now active


Title and Code

Java Programming (Languages in Depth)
Course code: 251-0284-00


Prof. Dr. Bertrand Meyer, Dr. Manuel Oriol, Marco Piccioni, Christoph Angerer (Group 1), Adriana Ispas (Group 2), Tomas Hruz (Group 3), Andrei Vancea (Group 4),


The course reviews most of the features of the Java language after a short introduction to the language. It is aimed at people that already have notions in programming and in object-orientation and want to learn Java. It introduces the main topics via theoretical lectures and proposes practical programming assignments that will help the students to foster their capacity at writing Java programs over the semester. A programming project will also be proposed during the second half of the course. Content will be improved from last year's iteration of the course.


Knowledge of another Object-Oriented programming language is mandatory for understanding this course.


  • Java Basics
  • Java Graphical User Interface (GUI)
  • Testing framework: JUnit
  • J2EE framework: Spring
  • Eclipse and Jazz development platforms
  • Threads and Synchronization
  • Sockets
  • Reflection
  • Persistence: serialization, RDBMS, OODBMS
  • Dynamic Class Loading
  • Byte-code and Just-in-time compiler
  • Java Web Services
  • Java Middleware

The literature for presentations covering those topics is given below.


  • Lecture: Thursdays 14.15 - 16.00, ML E 12
  • Exercise session, group 1: Wednesdays 16.15 - 17.00 LFV E 41
  • Exercise session, group 2: Wednesdays 16.15- 17.00 IFW D 42
  • Exercise session, group 3: Wednesdays 16.15 - 17.00 LFW C 4
  • Exercise session, group 4: Wednesdays 16.15 - 17.00 IFW C 44

Office hours: by appointment, RZ-J9.


Course Wiki

In the course wiki you are welcome to share java knowledge, ask technical questions and discuss project issues.


The examination for the course will be May 29, room ML E 12, from 14:15 to 16:00. It is a written examination. Paper documents are allowed (lecture notes, books, written documents...). Electronic devices are forbidden (cell phones, laptops, calculators...).

Literature and resources

  • Java
    • Cay S.Horstmann, Gary Cornell, Core Java 2 7th Edition, Sun Microsystems press 2006, 2 volumes. Also good as a reference, with non-trivial examples.
    • Khalid A. Mughal, Rolf W. Rasmussen, A Programmer's Guide to Java Certification: A Comprehensive Primer 2nd Edition, Addison Wesley 2003. It's for Java1.4, otherwise a very clear and concise book.
    • Certification Questions, tips & tricks
    • Interesting stuff about web services, OODBMS vs RDBMS, and so on
  • JUnit, TDD
    • B. Rainsberger, JUnit Recipes: Practical Methods for Programmer Testing, Manning 2004. Practical focus. Very useful for JUnit practitioners.
    • Jeff Langr, Agile Java: Crafting Code with Test-Driven Development, Prentice Hall 2005
  • Language tips & tricks
    • Joshua Bloch, Effective Java Programming Language Guide (The Java Series), Prentice Hall 2001 A must for every Java developer
    • Joshua Bloch, Neal Gafter Java Puzzlers: Traps, Pitfalls, and Corner Cases, Addison-Wesley 2005
  • Design patterns
    • Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software Addison Wesley 1994 This is still a classic, the examples are also great. Cons: examples are in C++ and there is a pre-uml notation for diagrams
    • Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development 3rd Edition, Prentice Hall 2004 A very good book about OO design, patterns and UML
  • Eclipse plugins
    • (introductory course)
  • Reflection
    • Ira R. Forman and Nate Forman, Java Reflection in Action, Manning publications 2004
  • Spring framework/J2EE
    • Rob Harrop, Jan Machacek Pro Spring, Apress 2005
    • Rod Johnson, Juergen Hoeller, Expert One-on-One J2EE Development without EJB, Wrox 2004 Rod is Spring's father
    • Seth Ladd, Darren Davison, Steven Devijver, and Colin Yates, Expert Spring MVC and Web Flow, Apress 2006
  • Threads
    • Brian Goez, Java Concurrency in Practice, Addison-Wesley 2006
  • Design/UML
    • Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) Addison Wesley 2003. Very dense (170 pages) UML overview, but clear and concise. Contains everything you need.
  • General Programming
    • Andrew Hunt, David Thomas, The Pragmatic Programmer, Addison Wesley 1999. Tells not only how to write the code but also how to manage yourself as a programmer. Has acquired icon status among many programmers.