Course syllabus

Compilers and Interpreters, 7.5 credits

Course code: DT135G Credits: 7.5
Main field of study: Computer Science Progression: G1F
    Last revised: 13/03/2020
Education cycle: First cycle Approved by: Head of school
Established: 02/12/2019 Reading list approved: 13/03/2020
Valid from: Autumn semester 2020 Revision: 1

Aims and objectives

General aims for first cycle education

First-cycle courses and study programmes shall develop:

  • the ability of students to make independent and critical assessments
  • the ability of students to identify, formulate and solve problems autonomously, and
  • the preparedness of students to deal with changes in working life.

In addition to knowledge and skills in their field of study, students shall develop the ability to:

  • gather and interpret information at a scholarly level
  • stay abreast of the development of knowledge, and
  • communicate their knowledge to others, including those who lack specialist knowledge in the field.

(Higher Education Act, Chapter 1, Section 8)

Course objectives

The course objective is to give the student:

  • an understanding of the basic principles for how a program is analyzed, translated and executed,
  • knowledge about the types of interpreters and compilers and their use,
  • knowledge about the compiler's phases,
  • knowledge about tools that can be used to facilitate the development of compilers and interpreters,
  • an understanding about how compilers and interpreters are designed and how they work,
  • an understanding about how data and storage is managed during program execution,
  • understanding of how to, in practice, build a simple interpreter or compiler for a simple language,
  • ability and practical skills needed to construct parts of a compiler, and other programs that use compiler technology, in particular a lexical analyzer and a simple syntactic analyzer, both in standard program code and with special tools, and
  • a professional approach to programming, which includes problem analysis, testing and documentation.

Main content of the course

The following topics are covered in the course

  • types of translators, such as compilers and preprocessors,
  • the design and operation of a compiler,
  • lexical analysis (scanning),
  • syntactical analysis (parsing), methods for syntax specification,
  • type systems and type control,
  • internal representation of a program,
  • runtime systems,
  • memory management, garbage collection,
  • code generation and optimization,
  • compiling for physical and virtual machines,
  • methods for error handling,
  • tools to create and generate compilers,
  • criteria for language design, and
  • the students will build some important parts of a compiler, both in C++ and using various tools.

Teaching methods

Lectures and project assignments with supervision.

Students who have been admitted to and registered on a course have the right to receive tuition and/or supervision for the duration of the time period specified for the particular course to which they were accepted (see, the university's admission regulations (in Swedish)). After that, the right to receive tuition and/or supervision expires.

Examination methods

Theory, 3 credits (Code: A001)
Written examination.
A retake will be scheduled to take place within eleven weeks of the regular examination.

Project, 4.5 credits (Code: A002)
Written and oral prosentations of project assignments. Individually or in groups according to the teacher's instructions.


For students with a documented disability, the university may approve applications for adapted or other forms of examinations.

For further information, see the university's local examination regulations (in Swedish).

Grades

According to the Higher Education Ordinance, Chapter 6, Section 18, a grade is to be awarded on the completion of a course, unless otherwise prescribed by the university. The university may prescribe which grading system shall apply. The grade is to be determined by a teacher specifically appointed by the university (an examiner).

In accordance with university regulations regarding grading systems for first and second-cycle courses (Vice-Chancellor’s decision ORU 2018/00929), one of the following grades shall be used: Fail (U), Pass (G) or Pass with Distinction (VG). For courses that are included in an international Master’s programme (60 or 120 credits) or offered to the university’s incoming exchange students, the grading scale of A-F shall be used. The vice-chancellor, or a person appointed by the vice-chancellor, may decide on exceptions from this provision for a specific course, if there are special grounds.

Grades used on course are Fail (F), Sufficient (E), Satisfactory (D), Good (C), Very Good (B) or Excellent (A).

Theory
Grades used are Fail (U) or Pass (G).

Project
Grades used are Fail (F), Sufficient (E), Satisfactory (D), Good (C), Very Good (B) or Excellent (A).

For further information, see the university's local examination regulations (in Swedish).

Comments on grades

The grade on the course is given the grade from exam A002, given that exam A001 is passed.

Specific entry requirements

Data Structures and Algorithms, 7.5 Credit and Object-Oriented Programming, 7.5 Credits.

For further information, see the university's admission regulations (in Swedish).

Transfer of credits for previous studies

Students who have previously completed higher education or other activities are, in accordance with the Higher Education Ordinance, entitled to have these credited towards the current programme, providing that the previous studies or activities meet certain criteria.

For further information, see the university's local credit transfer regulations (in Swedish).

Other provisions

The course may be given in English.

Reading list and other teaching materials

Required Reading
Aho, Alfred V, Lam, Monica. S, Sethi, Ravi och Ullman, Jeffery D
Compilers - Principles Techniques and Tools (latest edition)
Addison-Vesley