Advanced Programming Techniques (WS 17/18)

Programming is a most challenging task.

Edsger W. Dijkstra (1930‚Äď2002), one of the pioneers of computer science, was once asked why he became a programmer when he was a brilliant student of physics. He replied: "I concluded that of theoretical physics and programming, programming embodied the greater intellectual challenge".


Professional software development requires more skills than knowing the syntax of a programming language:

  • Developing software solutions for complex requirements
  • Implementing robust, maintainable, and high-performance applications
  • Mastering modern, professional development tools

Those skills are the focus of the course Advanced Programming Techniques (APT) (Module Description).

We will use the Java programming language for practising those skills. 




Structure of lectures (Slides of current lectures for download):

  1. Introduction, Java Crash Course
  2. Unit Testing
  3. Interfaces
  4. Software Categories
  5. Documenting 
  6. Components
  7. A Reference Architecture for Business Information Systems
  8. Software Development Infrastructure
  9. Debugging, Tracing, Logging
  10. Exception Handling
  11. Refactoring
  12. Functional Programming
  13. Design Patterns
  14. Optimization algorithms
  15. Java9
  16. Test Exam  (Sample solution)

Lectures are video recorded. Videos can be downloaded from . Enrolment key: Adprotec2017-18 . Use h_d user name and password for logging in.



The lab will be interleaved with the lecture. You will need to bring your own notebook computer. Please, install all software required as documented in the installation manual


Lab assignments for download:

  1. Introduction to IDE, unit testing
  2. Interfaces ;   Code reading
  3. Software categories
  4. Components
  5. A reference architecture for business information systems
  6. Implementing application components
  7. Implementing application services and logging
  8. Exception Handling and GUI
  9. Refactoring and final presentation
  10. Functional Programming
  11. Design Patterns 
  12. Optimization algorithms




There will be a practical programming examination at the end of the semester.