|Website:||website containing additional information|
|Period:||period 2 (week 46 through 5, i.e., 14-11-2016 through 3-2-2017; retake week 16)
|Participants:||up till now 47 subscriptions|
|Schedule:||Official schedule representation can be found in Osiris|
|Teachers:||Dit is een oud rooster!
|week: 5||Tue 30-1-2018||13.30-16.30 uur||room: EDUC-GAMMA|
|week: 16||Tue 17-4-2018||13.30-16.30 uur||room: DDW-1.22||retake exam|
|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:
- 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:||A student must obtain a final mark of at least 4 to take the resit exam.|
|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.