Details of Advanced Java (MI123)

Course(s) Advanced Java (Lecture and Laboratory)
Available every winter term
Duration 1 semester
Course leader Prof. Dr. Robert Manzke
Lecturer Thomas Bache,   Jan-Phillipp Rathje
Language English
Curricular relevance
Information Technology (Master of Science) Master's module semester 1
Information Engineering (Master of Science) Master's module semester 1
Delivery method(s)
Lecture 2 SWS
Laboratory 2 SWS
Attendance 60 hr
Self-study 75 hr
Exam preparation 15 hr
150 hr
Credit points 5 CPs
Learning outcomes Students who successfully complete this course will be able to work at any company doing java programming.

The course will cover syntactical and semantical concepts of Java 8. Furthermore students will gain basic knowledge in software architecture for the web. Students will get to know a typical toolchain of an agile development process.

Students will learn with video tutorials and we will discuss the topics in class. We will do mob programming in the lab and create a game server for a board game. You will program a client for that board game as a semester project. Finally, there will be an oral exam regarding your client that will be graded.

Content - Build Tools and IDEs
- the developers toolchain
- Testing using JUnit
- Contexts and Dependency Injection using Spring
- functional programming using Java (lambdas, closures, currying, monads)
- Stream-API
- Generics
- Concurrency in Java
- Usage of algorithms and data structures
- Java Persistence API using Hibernate
Assessment method(s) Laboratory and Oral exam
Support media Digital projector, Overhead projector, Whiteboard and Computer support
Required reading • Joshua Bloch: Effective Java, Addison-Wesley, 2008, ISBN: 978-0-321-35668-0
• Langer, Angelika; Kreft, Klaus: „Lambda Tutorial“
• Brian Goetz, Joshua Bloch, Joseph Bowbeer, Doug Lea, David Holmes, Tim Peierls: Java Concurrency in Practice, Addison-Wesley, 2006, ISBN: 978-0321349606

Miscellaneous Pre-requisites for this course are:
- Intermediate skills in object-oriented programming
- basic knowledge of git
- basic knowledge of Java programming