Prof. Dr. rer. nat. Peer Johannsen

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!
  • Please carefully read all notes below!

Schedule Spring Term 2020

  • Weekly appointments, Monday 11:30 - 13:00 and Thursday 09:45 - 11:15
  • Timeslots might still be subject to change.
  • Locations T2.2.05 and Computer Science Lab T2.2.07

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 an entry test are mandatory.
  • If you are interested in this course, please send an early email.

Workload:

  • 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.
  • Do you not care if your code does unnecessary computations because "nobody will notice since 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?
  • And most important, do you enjoy the creativity of being a programmer?
  • 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
  • Low-level bit twiddling hacks
  • Video game design and video game development techniques
  • All these are highly advanced programming topics which are far from easy.

So...

  • 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...
  • ... THEN BY NO MEANS NEVER EVER FOLLOW THIS LINK!!!

Latest modification on 01/10/2020, 16:45

  • Page created