Details of Advanced Java (MI123)

Course(s) Advanced Java (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)
Laboratory 4 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 starting with an idea and finishing with a running software program.

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

You will learn with video tutorials and we will discuss the topics in class. We will do mob programming and create a game server for the board game "Robo Rally". 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.
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 build tools
- good knowledge of Java programming