Advanced Java Programming
This course teaches concepts of object-oriented, functional, and concurrent programming that help create complex software systems that are extensible and scalable. It also introduces advanced profiling and program-analysis techniques for identifying performance bottlenecks in such systems and for optimizing them. These concepts are explained in the context of the Java programming language and the Java Virtual Machine.
- Understand advanced concepts of Java programming, such as generics, functional programming, and concurrent programming.
- Understand the Java Virtual Machine (JVM) and its bytecode.
- Implement dynamic program analyses, such as profiling, using bytecode instrumentation.
Lectures, tutorials, and exercises on the course topics.
The examination consists of a project and a final exam.