NDAA09026U CANCELLED Topics in Programming Languages (TiPL)

Volume 2018/2019
Content

The overall purpose of this course is to provide an introduction to select state-of-the-art research topics within programming language theory, design, implementation and their application to fundamental or real-world problems. It acquaints students with performing independent research and its communication in seminar and project form, and it prepares them for a Master's thesis in programming languages and systems.

The specific topics are:

  • programming platform for building blockchain/distributed ledger and inter-enterprise systems (peer-to-peer storage, mobile code, distributed consensus, distributed garbage collection),
  • domain-specific languages (multiparty contracts and robotic contract execution strategies for blockchain/distributed ledger systems and inter-enterprise systems; functional high-performance stream processing; high-performance querying on relational and analytic data),
  • program synthesis and metaprogramming (automatic code refactoring, staged metaprogramming; program synthesis as proof search, software product lines, smart contract synthesis).
     

The course consists of topics selected by the teachers from this list and reflecting the participants' backgrounds and interests; lectures on the topics selected; seminar presentations by participants on their chosen topic(s); and group (2-4 persons) mini-projects.   The mini-projects may consist of theoretical investigations, software construction or a combination of these.  

Learning Outcome

Knowledge

  • Aspects of the dual nature of programs as software (to be executed) and as data (to be analyzed, transformed).
  • The role of a precise (mathematical) semantics for a programming language in connection with manipulating programs.
  • Principles of programming language design and how they are applied (or not) in connection with the topics under study.

 

Skills

  • Discuss properties such as correctness, performance and define what they mean precisely in the given topic(s). 
  • Specify ideas and concepts as rigorous definitions and make falsifiable (or provable) statements about them.
  • Read, assess and commmunicate research papers.
  • Apply central results in the given area of studies.
  • Prepare and give a seminar talk.
  • Write a research paper.

 

Competences

  • Develop a project proposal within recent research in programming languages and systems into a project plan, execute it, and present the results.

 

Research articles and excerpts from books, distributed electronically. 

See Absalon for a list of course literature.

Semantics and Types (SaT) and Program Analysis and Transformation (PAT) are recommended. Topics in Programming Languages is part of the Programming Languages and Systems study track of the MSc Programme in Computer Science.
The course progresses from teaching (lecture) to seminar and finally project form:

Lecture phase: lectures and exercises, formation of seminar/project groups
Seminar phase: student seminar presentations
Project phase: project work
  • Category
  • Hours
  • Exam
  • 1
  • Guidance
  • 6
  • Lectures
  • 18
  • Practical exercises
  • 24
  • Preparation
  • 12
  • Project work
  • 145
  • Total
  • 206
Oral
Individual
Credit
7,5 ECTS
Type of assessment
Oral examination, 30 minutes
Individual oral presentation of group report followed by individual examination in the course topics (see topics and learning objectives), with special emphasis on the subject of the written report the student has co-authored.
Exam registration requirements

Submission of group report.

Aid
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners
Re-exam

If a student is not qualified then qualification can be achieved by submission/re-submission of an individual project report in lieu of a group report no later than two weeks before the re-exam.

Individual oral examination (30 minutes) based on submitted report and list of topics.

Criteria for exam assesment

See Learning Outcome.