Prof. Dr. rer. nat. Peer Johannsen

Course Related Lecture Material for Advanced hardware-oriented C and Assembly Language Programming

General Information

  • Advanced Elective Module (total of 2 + 2 SWS, 3 + 3 ECTS, see below)
  • Fraunhofer IAIS Initiative "Roberta - Lernen mit Robotern" - 
  • Limited number of seats - entry test must be passed!

Schedule Spring Term 2019

  • Weekly appointments, Monday 13:45 - 17:00 (timeslot still subject to change)
  • Locations T2.2.05 and Computer Science Lab T2.2.07

Please note:

  • Due to resource limitations, only one of the two elective courses "Advanced hardware-oriented C and Assembly Language Programming" and "Robot Programming" will be held in Spring Term 2019, depending on the number of potential participants.
  • If you are interested in either course, please send an early email.

Requirements and Registration

  • This is an advanced software development project for students who enjoy programming.
  • Advanced skills in programming, computer science, and calculus are required.
  • Your grades in the related lectures should range from good (2) to very good (1).
  • In this course you will do an extensive amount of programming, and you must be able to independently familiarize yourself with new topics.
  • Please note that the official course language is English.
  • Prior registration and the successful completion of the entry test are mandatory.


  • All individual elective courses at Pforzheim University are 2 SWS / 3 ECTS.
  • This course can only be taken in combination with "Advanced Software-Development Project Implementation".
  • The total workload therefore amounts to 4 SWS and 6 ECTS.
  • The 6 ECTS are equivalent to 180 hours of extensive programming.

Teaching Objectives

  • There are usually many different ways to correctly compute a solution to a given problem, or to write a program that solves a given task.
  • However, programs can greatly differ in how quickly they compute a solution, and in how much memory they need to do this.
  • We are not talking about the speed of the CPU that executes the code, but about the number of computational steps of the underlying algorithm.
  • Are you satisfied with your code as soon as "it does what it is supposed to do"? Then this course is not for you.
  • Don't you care if your code does unnecessary computations because "nobody will notice as the processor is fast enough anyway"? Then this course is not for you.
  • Are you indifferent to whether your code needs more runtime memory than necessary, because "your machine has enough gigabytes anyway"? Then this course is not for you.
  • Or do you want your program to run as fast as possible, independently of the machine it is running on?
  • And do you want your program to also run on machines with just a minimum amount of memory?
  • Then read on, because this might be the place for you...

Course Topics

  • Advanced knowledge of the C Programming Language
  • Advanced C Programming Skills
  • Inner workings of a C compiler
  • Assembly language programming
  • Deeper understanding of how C is mapped to assembly language
  • Advanced machine oriented C-programming techniques
  • Design and implementation of runtime efficient algorithms
  • Design of task specific memory efficient data structures
  • Game development techniques
  • Low level bit twiddling hacks
  • All these are advanced programming topics which are far from easy.


  • If you want to avoid an extremely difficult lecture...
  • If you do not want to work very, very hard...
  • If you are not interested in an extraordinary programming challenge...
  • If you do not like to embark on a mission of exploration...

Latest modification on 02/18/2019, 00:00

  • Page updated