M-PS (WS 2014/2015): Concepts of Programming Languages
Programming languages are our most sophisticated means for communicating with computers. Today there are thousands of them, each with its own strengths and weaknesses. In this course we examine some of the common and distinguishing properties of various programming languages with a special focus on how these properties are implemented (assembly code/machine language, memory layout, and runtime systems), and on how compilers and software tools can analyse software written in these languages to enable optimisations or other forms of program transformation.
Prior experience with C or assembly programming is strongly recommended, though supplementary materials are provided.
- 2014-03-19: Exam review (Klaurureinsicht): Thursday, 26 March, 11:00-13:00 (Robert-Mayer-Str. 10, room 210a)
- 2014-03-19: Final grades are up
- 2014-02-04: The final worksheet, #7, is now available for collecting bonus points.
- 2014-02-04: The final exam date is now posted below.
- 2014-02-03: If you haven't done so yet, please fill out the following questionnaire.
- 2014-01-30: The missing video is up now. For the final class, make sure to bring any your questions you might have!
- 2014-01-23: Slides and videos for Session 13 are up now. The final module on meta-programming in Racket will be uploaded next week and be part of the regular lecture.
- 2014-01-16: Slides and videos for Session 12 are up now.
- 2014-01-16: We have dropped the point requirements for participating in the final exam. All course participants are invited to register with the Prüfungsamt.
- 2014-01-10: Happy New Year! Slides and videos for Session 11 are up now.
- 2014-12-22: Those of you who started early on exercise 5 may have noticed unexpected crashes. These happened in the bits of `missing code' that we are asking you to fill in; unfortunately, they also prevented you from visualising control-flow graphs. We have decided to update the source code to allow you to generate control-flow graphs without first solving the exercise. We will push updates to the git repositories directly. We have also updated the source package for download and added a diff file so you can inspect what we changed.
- 2014-12-11: Please try to attend next week's lecture, as we will be handing out evaluation forms. Lecture modules for Session 10 are still in post-production, so next week will also feature a regular lecture.
- 2014-12-05: Lecture modules and slides for Session 9 are now available.
- 2014-12-05: We have added a lecture module on subtyping, to complement the slides posted earlier for the 18. November session.
- 2014-12-04: Worksheet 4 is now available.
- 2014-11-27: Lecture modules and slides for Session 8 are now available.
- 2014-11-25: We are looking for volunteers for a user study involving C/C++ programming, on Friday the 5th of December, 12:00 to 14:00 (Fischerräume 22 and 23). One of the participants (randomly selected) will win a EUR 50 Amazon coupon.
- 2014-11-25: We have posted additional slides for a brief lecture module on subtyping, covering the Liskov Substitution Principle and the Arrow Rule. These slides are logically part of Session 6.
- 2014-11-20: Video lectures for Session 7 are now available. We have also uploaded re-recordings of two older, missing recordings on polymorphism and function types.
- 2014-11-20: Worksheet 3 is now available.
- 2014-11-14: Video lectures for Session 6 are now available.
- 2014-11-10: As noted in last week's mail update, we have postponed initial submissions for the second exercise until Wednesday.
- 2014-11-06: Most of the videos for session 5 are up now. Two videos are still missing; we will upload them as soon as we get them and cover them in class on Tuesday.
- 2014-11-06: git repositories for the first teams are up. To check out, use git clone email@example.com:mps/teamX/1-1 (resp. 1-2, 1-3 for later exercises).
- 2014-11-06: The second worksheet and supplementary materials are up.
- 2014-11-06: Videos for session 5 are delayed. Due to consistent delays in video post-processing we will now be aiming to release videos on Fridays instead of Wednesdays.
- 2014-11-02: All videos for session 4 are now up. Apologies for the delay!
- 2014-11-01: We have not been able to replace the missing and audio-less videos yet. Replacements will be uploaded next week; in addition, those parts of the lecture will be held as a regular lecture on Tuesday.
- 2014-10-29: Slides and some of the videos for session 4 are up. We expect to have the remaining videos up by the end of the week.
- 2014-10-22: Module videos and slides for session 3 are up.
- 2014-10-17: Module videos for session 2 are online now.
- 2014-10-17: German videos and slides as C programming support have been added to the resources below.
- 2014-10-15: The first set of video-recorded modules is delayed until Friday (according to our current information) due to delays in video post-processing. We apologise for the delay and will keep you updated.
- 2014-10-15: The slides for lecture 1 have been posted.
- 2014-10-15: Added section with additional resources, below.
|Lectures:||14:00--16:00 every Tuesday in Hörsaal 10, starting 14 October|
|Exercises:||14:00--16:00 every second Thursday in Neue Mensa 130, starting 23 October|
|Office hours:||13:30--15:30 every Friday, Robert-Mayer-Str. 10, room 210a|
|Instructor:||Prof. Dr. Christoph Reichenbach (reichenbach (at) cs...)|
|Teaching Assistant:||Krishna Narasimhan (krishna.nm86 at gmail dot com)|
|Final Exam:||Tuesday, 17 March, 10:00, H10 (100 minutes)|
- The studentica portal: a social network for collaborating with your fellow students
- Do-it-yourself tutorial for learning C (in German):
- Lectures on C programming (in German):
- A family tree for programming languages
- Programming Languages and Semantics
- “Types and Programming Languages” by Benjamin C. Pierce
- “Concepts of Programming Languages (5th or later edition)” by Robert W. Sebesta
- Compilers and Program Analysis
- “Compilers: Principles, Techniques, and Tools (2nd Edition)” by Alfred Aho, Monica Lam, Ravi Sethi and Jeffrey Ullman
- “Principles of Program Analysis” by Flemming Nielson, Hanne R. Nielson and Chris Hankin
- “Modern Compiler Implementation in C/Java/ML” by Andrew Appel
- Assembly and Machine Language
- “Computer Organization and Design: The Hardware/Software Interface”, by David Patterson and John Hennessy
- “The C Programming Language”, by Brian Kernighan and Dennis Ritchie
- C11 specification (pre-release draft, accurate enough for our purposes)