Syllabus for |
|
DAT151 - Programming language technology |
|
Syllabus adopted 2015-02-02 by Head of Programme (or corresponding) |
Owner: MPALG |
|
7,5 Credits |
Grading: TH - Five, Four, Three, Not passed |
Education cycle: Second-cycle |
Major subject: Computer Science and Engineering, Information Technology
|
Department: 37 - COMPUTER SCIENCE AND ENGINEERING
|
Teaching language: English
Open for exchange students
Block schedule:
B
Course module |
|
Credit distribution |
|
Examination dates |
Sp1 |
Sp2 |
Sp3 |
Sp4 |
Summer course |
No Sp |
0112 |
Examination |
6,0 c |
Grading: TH |
|
|
6,0 c
|
|
|
|
|
|
15 Jan 2016 pm H, |
06 Apr 2016 am M, |
17 Aug 2016 pm M |
0212 |
Laboratory |
1,5 c |
Grading: UG |
|
|
1,5 c
|
|
|
|
|
|
|
In programs
MPCSN COMPUTER SYSTEMS AND NETWORKS, MSC PROGR, Year 1 (elective)
MPALG COMPUTER SCIENCE - ALGORITHMS, LANGUAGES AND LOGIC, MSC PROGR, Year 1 (compulsory)
TKITE SOFTWARE ENGINEERING, Year 3 (elective)
Examiner:
Univ lektor
Andreas Abel
Replaces
DAT150
Programming language technology
Go to Course Homepage
Eligibility:
In order to be eligible for a second cycle course the applicant needs to fulfil the general and specific entry requirements of the programme that owns the course. (If the second cycle course is owned by a first cycle programme, second cycle entry requirements apply.)
Exemption from the eligibility requirement:
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling these requirements.
Course specific prerequisites
The course can not be included in a degree together with the course TIN321 Programming languages. Neither can the course be included in a degree which is based on another degree in which the course TIN321 is included.
The course requires:
- good programming skills in Haskell, Java, C, or C++
- familiarity with Java, C, or C++
- basic skills of Unix programming (the shell, Makefiles)
- basic knowledge of data structures and algorithms
The following are also recommended:
- basic knowledge of logic (Boolean operators, inference rules)
- familiarity with functional programming
- basic knowledge of assembler programming
Aim
The aim of the course is to give understanding of how programming languages are designed, documented, and implemented. The course covers the basic techniques and tools needed to write interpreters, and gives a summary introduction to compilation as well.
Learning outcomes (after completion of the course the student should be able to)
- define the lexical structure of programming languages by using regular expressions, explain the functioning of finite automata, and implement lexical analysers by using standard tools;
- define the syntax of programming languages by using context-free grammars, explain the principles of LL and LR parsing, and implement parsers by using standard tools;
- define and implement abstract syntax;
- master the technique of syntax-directed translation and its efficient implementation in their chosen programming language;
- formulate typing rules and implement type checkers;
- formulate operational semantic rules and implement interpreters;
- write simple code generators;
- be familiar with the basic implementation issues of both imperative and functional languages;
- design and implement special-purpose programming languages;
- use unification to implement polymorphic type checking;
- use closures to implement functional programming languages.
Content
You will learn about grammars when writing the syntax analysis and about type systems when implementing the type checker. When implementing the interpreter and compiler you will learn about practical implementation concerns as well as the theory of formal semantics. By experimenting with language extensions you will get an insight into good and bad programming language designs.
Organisation
The teaching consists of lectures, exercises, and laborations, as well as individual supervision in connection to the laborations.
Literature
See course home page.
Examination
Written laboration and written exam. Grading scale: U, 3, 4, 5.