Student Pages
Undergraduate course

Programming Languages

  • ECTS credits10
  • Teaching semesterSpring
  • Course codeINF222
  • Number of semesters1
  • LanguageEnglish
  • Resources

Main content

ECTS Credits


Level of Study


Teaching semester


Objectives and Content


The course gives a practical and theoretical introduction to semantics of programming languages and to a range of important constructs and abstractions used in contemporary languages. The (indirect) goal is that an increased understanding of programming languages translates to higher quality of programs that students write and higher productivity in their programming. The class equips the student with basic skills of designing and implementing small languages, where an implementation consists of a parser, type checker, and an interpreter.

The course seeks to make the student well-prepared to learn new programming languages in the future.


The course covers important language constructs in modern languages. It discusses the specification of the syntax and semantics of programming languages, and introduces the notions of a type system and type safety. Students implement a series of interpreters and type checkers. Reflecting on the influence of the properties of a programming language and its features on software quality is a central theme of the course.

Learning Outcomes

On completion of the course the student will be able to:


  • explain the concepts of concrete and abstract syntax of a language, and the concerns of designing syntax that can be parsed effectively; and select parsing tools and approaches according to problem context.
  • explain notations and approaches to defining semantics of programming languages, in particular those of operational semantics.
  • explain the impacts of evaluation order to termination, to efficiency, and the ease or difficulty of reasoning about programs.
  • explain what type safety of a programming language means.
  • explain different variations of polymorphism, and relate them to features of contemporary programming languages.
  • explain the essence of important programming language constructs and concepts, describe their implementation approaches, purpose and productive use in programming, and their manifestations and variations in different mainstream programming languages.


  • define an abstract grammar for a small programming language and implement a parser for it.
  • define an operational semantics for a small language and implement it as an interpreter.
  • define and implement a type system for a small language.

General competence

  • make justified decisions about the use of different programming language constructs in programming.
  • make justified decisions about selecting programming languages for software projects.
  • follow new developments in programming languages.
  • read and understand, to a useful degree, scholarly articles in the area of programming languages.

Required Previous Knowledge

For incoming exchange students: At least 60 ECTS in Computer Science and at least 10 ECTS in mathematics

Recommended Previous Knowledge

INF122 or some experience with programming in Haskell or in another functional language.

Access to the Course

Access to the course requires admission to a programme of study at The Faculty of Mathematics and Natural Sciences.

Teaching and learning methods

The course has two weekly lectures and a weekly lab session. In addition, the course requires completing homework assignments.

Compulsory Assignments and Attendance

The compulsory exercises have to be passed and are then valid for two subsequent semesters, starting from the semester in which they are approved.

Forms of Assessment

Written examination. Both the exam and assignments count towards the total grade. Weights are announced at the beginning of the course.

Examination Support Material


Grading Scale

The grading scale used is A to F. Grade A is the highest passing grade in the grading scale, grade F is a fail.

Assessment Semester

Examination both spring semester and autumn semester. In semesters without teaching the examination will be ar-ranged at the beginning of the semester.

Reading List

The reading list will be available within June 1st for the autumn semester and December 1st for the spring semester.

Course Evaluation

The course will be evaluated by the students in accordance with the quality assurance system at UiB and the department.

Programme Committee

The Programme Committee is responsible for the content, structure and quality of the study programme and courses.

Course Coordinator

Course coordinator and administrative contact person can be found on Mitt UiB, or contact studieveileder@ii.uib.no

Course Administrator

The Faculty of Mathematics and Natural Sciences represented by the Department of Informatics is the course administrator for the course and study programme.

Contact Information

Student adviser:

mailto:studieveileder@ii.uib.no">Student adviser

T: 55 58 42 00

Exam information

  • For written exams, please note that the start time may change from 09:00 to 15:00 or vice versa until 14 days prior to the exam.

  • Type of assessment: Written examination

    23.05.2023, 09:00
    3 hours
    Withdrawal deadline
    Examination result announcement
    Examination system
    Digital exam