IN5630 – Programming Language Implementation and Formalisation
Course description
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
Admission to the course
Students admitted at UiO must?apply for courses?in Studentweb. Students enrolled in other Master's Degree Programmes can, on application, be admitted to the course if this is cleared by their own study programme.
If you are not already enrolled as a student at UiO, please see our information about?admission requirements and procedures for international applicants.
Recommended previous knowledge
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
- 10 credits overlap with IN9630 – Programming Language Implementation and Formalisation.
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 that each counts 25% and an oral exam that counts 50% of the final grade.
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: IN9630 – Programming Language Implementation and Formalisation
Grading scale
Grades are awarded on a scale from A to F, where A is the best grade and F?is a fail. Read more about?the grading system.
More about examinations at UiO
- Use of sources and citations
- Special exam arrangements due to individual needs
- Withdrawal from an exam
- Illness at exams / postponed exams
- Explanation of grades and appeals
- Resitting an exam
- Cheating/attempted cheating
You will find further guides and resources at the web page on examinations at UiO.