Undergraduate 

Computing Science (faster route) BSc/MSci

Programming Languages (H) COMPSCI4016

  • Academic Session: 2024-25
  • School: School of Computing Science
  • Credits: 10
  • Level: Level 4 (SCQF level 10)
  • Typically Offered: Semester 2
  • Available to Visiting Students: Yes
  • Collaborative Online International Learning: No

Short Description

This course aims to:

Provide a conceptual framework that will enable students to understand familiar programming languages more deeply and learn new languages more efficiently;

Show how the syntax of a programming language can be formalized;

Explain the functions of compilers and interpreters, how they interact, and how they work;

Show how to implement a compiler using compiler-generation tools.

Timetable

Two one-hour lectures and one one-hour tutorial per week.

Excluded Courses

None

Co-requisites

None

Assessment

Examination 80%, assignment 20%.

Main Assessment In: April/May

Are reassessment opportunities available for all summative assessments? Not applicable

Reassessments are normally available for all courses, except those which contribute to the Honours classification. For non Honours courses, students are offered reassessment in all or any of the components of assessment if the satisfactory (threshold) grade for the overall course is not achieved at the first attempt. This is normally grade D3 for undergraduate students and grade C3 for postgraduate students. Exceptionally it may not be possible to offer reassessment of some coursework items, in which case the mark achieved at the first attempt will be counted towards the final course grade. Any such exceptions for this course are described below. 

 

The coursework cannot be redone because the feedback provided to the students after the original coursework would give any students redoing the coursework an unfair advantage.

Course Aims

This course aims to:

Provide a conceptual framework that will enable students to understand familiar programming languages more deeply and learn new languages more efficiently;

Show how the syntax of a programming language can be formalized;

Explain the functions of compilers and interpreters, how they interact, and how they work;

Show how to implement a compiler using compiler-generation tools.

Intended Learning Outcomes of Course

By the end of the course students will be able to:

1. Describe the relationships between the imperative, object-oriented, and functional programming paradigms;

2. Explain fundamental programming language concepts such as values and types, variables and lifetime, bindings and scope, procedural abstraction, data abstraction, and generic abstraction;

3. Explain the distinction between syntax and semantics, and read and write syntactic specifications of programming languages;

4. Explain the functions of compilers and interpreters, and compiler-interpreter interactions such as multi-stage compilers, interpretive compilers, and just-in-time compilers;

5. Implement a compiler and interpreter for a very simple programming language using compiler-generation tools.

Minimum Requirement for Award of Credits

Students must submit at least 75% by weight of the component (including examinations) of the course's summative assessment.