|Website:||website containing additional information|
|Period:||period 2 (week 46 through 5, i.e., 13-11-2017 through 2-2-2018; retake week 16)
|Participants:||up till now 42 subscriptions|
|Schedule:||Official schedule representation can be found in Osiris|
|Contents:||This course aims to teach students the concepts and principles of programming languages and program language design.|
|Literature:||There is no book or lecture notes.
Instead, articles, slides, and background reading will be provided during the course.|
|Course form:||The course will consist of a mix of lectures and presentations by students.|
|Exam form:||To complete the course students will need to:
The final mark is the average of the exam and project marks. To pass the course, both these marks must be at least 4.0.
- give a presentation (in a group)
- complete a small research project (in a group)
- present this project in a poster session and/or report (in a group)
- take a final exam
|Minimum effort to qualify for 2nd chance exam:||Om aan de aanvullende toets te mogen meedoen moet de oorspronkelijke uitslag minstens 4 zijn.|
|Description:||Upon completing the course, students will:
- Understand what constitutes the definition of a programming language (syntax, static semantics, and dynamic semantics), together with common terminology used in the description and definition of programming languages (such as calling conventions, type systems, garbage collection).
- Be able to formulate and design domain specific languages, either as embedded
or stand-alone language, while understanding the relative merits of
these two approaches.
- Distinguish between the concepts of concurrency and parallelism and
understand the language mechanisms that modern languages use to
support both these issues.
- Understand the concept of metaprogramming and how different
languages implement this.
- Being able to formulate a simple language's syntax, static
semantics, and dynamic semantics and understand the design choices
- Be able to learn new languages quickly and be able to identify how
new languages relate to existing concepts and languages.