IN9630 – Programming Language Implementation and Formalisation

Schedule, syllabus and examination date

Course content

This course will introduce you to the different aspects of programming language design and give you a deeper understanding of theoretical aspects of programming, with a focus on functional programming. ?You will get a practical introduction to functional programming concepts such as higher order functions, type classes, functors and monads, which will be used to for structuring parsers, testing and interpreters; fundamental tools to implement programming languages. ?You will then be introduced to the fundamental concepts of programming language theory. This includes the relevant descriptive approaches (formal semantics and type systems), their instantiations and applications to concrete situations, and the mathematical principles for reasoning about them. The goal is that you at the end of the course can design simple domain-specific programming languages and implement them in Haskell.

Learning outcome

After completion of the course, the student have learned to:

  • Use program structuring principles and design patterns, such as monads, for structuring the code with a clear separation of concerns.
  • Use a monadic parser combinator library to write a parser for a medium-sized language with a given grammar, including changing the grammar so that it is on an appropriate form.
  • Read and write specifications of formal systems relating to programming language theory.
  • Decide and prove properties of programs or program fragments.
  • Decide and prove properties of programming languages or particular language features.
  • Design and implement simple domain-specific programming languages
  • Create new simple specifications of formal systems relating to programming language theory

Admission to the course

PhD candidates from the University of Oslo should apply for classes and register for examinations through?Studentweb.

If a course has limited intake capacity, priority will be given to PhD candidates who follow an individual education plan where this particular course is included. Some national researchers’ schools may have specific rules for ranking applicants for courses with limited intake capacity.

PhD candidates who have been admitted to another higher education institution must?apply for a position as a visiting student?within a given deadline.

It is an advantage to have a basic understanding of functional programming and formal reasoning. IN3040 introduces some of the aspects (functional programming and higher-order functions) that are used in this course. IN3070 works with formal reasoning for a logic model that is useful for working with deduction systems.

Overlapping courses

Teaching

2 hours of lecturing and 2 hours of exercises per week.?

Submission of mandatory assignments is required.?Read more about requirements for submission of assignments, group work and legal cooperation under guidelines for mandatory assignments.

Examination

2 home exams during the semester and an oral exam at the end of the semester. PhD-students will also have to make a presentation of a related research article as part of the assessment.

All parts must be passed and they must be passed in the same semester.

Mandatory assignments must be approved prior to the exam.

It will also be counted as one of?your three?attempts to sit the exam for this course, if you sit the exam for one of the following courses: IN5630 – Programming Language Implementation and Formalisation

Grading scale

Grades are awarded on a pass/fail scale. Read more about?the grading system.

More about examinations at UiO

You will find further guides and resources at the web page on examinations at UiO.

Last updated from FS (Common Student System) Apr. 29, 2024 6:50:06 PM

Facts about this course

Level
PhD
Credits
10
Teaching
Spring
Examination
Spring
Teaching language
English