Semantics, Design and Implementation of Programming Languages

Course Number 22060-01
Lecturers Edgar Lederer
Time and Location Mon 09:15 - 12:00; Seminarraum 05.002, Spiegelgasse 5
Start 16-02-2015
Prerequisites Students should be inclined to mathematical methods and they should like hacking.
Objectives Students better understand the intricacies of designing, and consequently choosing and using, programming languages.
As a side effect, students in a small team work on a larger software project, thus exercising their software engineering skills.
Upon successful completion of course students …
- Know how to specify the (syntax and) semantics of a programming language, and thus know better how to read a specification of any given language
- Are able to design (not only programming) languages for their current needs
- Recognize the power of static analysis
- Are able to implement a language for a virtual machine
Contents - Syntax and semantics of programming languages, with strong emphasis on semantics
- Operational, denotational, axiomatic semantics
- Static analysis (context, types, flow)
- Design and definition of a small imperative programming language
- Implementation of this language in an object-oriented or functional language; the target is a virtual machine
Literature - Aho, Lam, Sethi, Ullman; Compilers: Principles, Techniques, and Tools; Second Edition; 2007 Pearson Education.
- Wilhelm, Maurer; Compiler Design; 1995 Addison-Wesley.
Assessment Lehrveranst.-begleitend

Please note: Students do a project (individually or in pairs) which involves designing, defining and implementing an extension of the imperative language developed during the course. Project presentations will take place on June 6 2015 in seminar room 00.003 in Spiegelgasse 1.
Credit Points 6
Grades 1-6 0,5
Modules Weitere Lehrveranstaltungen für den Wahlbereich Informatik MSc (Master Informatik 10)
Modul Praxis aktueller Informatikmethoden (MSF - Informatik)
Registration Services (Requires login)