Advanced Programming

Table of Contents

Course name

Advanced Programming

Course code

900294SCI

Credits

6 ECP

Time slots

  • Monday 16:00-17:30
  • Thursday 11:00-12:30

Room

2.03

Prerequisites

You must have completed at least 60 ECP and have successfully followed either Programming Your World or Intermediate Programming: Principles and Practice

Related Theme(s)

Information, Communication & Cognition; Sciences.

Teacher(s)/Coordinator

Breanndán Ó Nualláin : Group 1

Email
o@uva.nl
Office
2.23
Phone
+31-20-525-7740
Available

Mondays & Thursdays

Lorenzo Galeotti l.galeotti@uva.nl : Group 2

Course content

By the end of this course you will have an understanding of programming languages at the lowest levels to interact with the instruction set at the interface between the software and hardware of a computer, as well as at higher levels through building an interpreter for a simple programming language.

Before starting this course you already know how to program in (at least) one programming language but there are hundreds of programming languages. Have you ever wondered why?

Some programming languages look different from each other. Some look similar but behave differently. Is it a question of taste or personality or aesthetics or can we say that one language is better than another in some sense? Is it quicker or more elegant or more succinct or more expressive or more convenient to program? Perhaps different languages are better suited to different kinds of tasks? In this course you will learn how to make such judgements.

We will compare and contrast some existing programming languages to see how they differ and what they have in common. We will consider features and constructs of programming languages and how well or badly they combine with each other. We will learn the consequences of having particular features and constructs in our languages by actually implementing interpreters for various combinations. And we will consider the design decisions for including them in our languages or leaving them out.

There are two practical reasons why we take this approach. One is that a modern working programmer will be confronted with many novel languages and will need to quickly assess them in order to gain proficiency in them. For example, designing a modern, dynamic web site requires knowledge of a handful of different languages. And programming languages evolve so quickly that many such languages are different from those of five years ago which are, in turn, different from those of five years earlier.

When confronted with a novel language, the student who has completed this course will quickly be able to identify its salient features and appraise the language as a whole.

The second is the design of domain specific languages (DSLs) or mini-languages as a methodology for describing a particular class of problems, for capturing representations, usage patterns and idioms. There are DSLs for databases, for markup and layout, for music and audio, for statistics, graphics and many more. Designing a useful DSL requires striking a good balance between expressivity and tractability.

Learning objectives

  • The student will have an appreciation of modern programming paradigms as realised in a range of current programming languages.
  • The student will have achieved an understanding of how programming languages are interpreted and compiled through the practical construction of interpreters.
  • The student will be able to quickly assess and acquire a novel programming language.

Learning Outcomes

Students who have completed the course will have an understanding of the principles of programming languages and the methodological foundations of computer programming as well as the demonstrated ability to apply these principles. They will have highly-developed analysis and problem solving skills as well as the ability to quickly acquire and program in a range of programming languages.

Contribution to AUC General Learning Outcomes principally 2.3.1 2.3.2 & 2.3.5.

Form of instruction

  • Interactive lectures
  • Practical sessions

Course Policies

At AUC some course policies are at the discretion of the teacher. To avoid any misunderstanding please note carefully the following policies.

Attendance and Lateness

Attendance is taken at the beginning of each class. Any student who is not present when attendance is taken will be marked absent for that class.

Generative AI

If you use Generative artificial intelligence tools such a ChatGPT to aid you during the course, you must include a complete transcript of your interaction together with your submitted assignment.

See our guidance on Using Generative AI as an Aid to Help You Learn to Program.

Assessment

  • Two exams: 28% each
  • Four take home assignments: 11% each

Note that the assessment details may be adjusted.

Main Course Sources

The course draws on material from the following books.

Author: Breanndán Ó Nualláin <o@uva.nl>

Date: 2025-02-10 Mon 14:45