Principles of Programming Languages module (CS42001)

Explore different types of programming languages and their fundamental principles.

On this page
Credits

20

Module code

CS42001

Programming paradigms form the fundamental principles of programming languages. They refer to a specific style or approach to writing computer programs, such as procedural or functional programming.

You will already be familiar with procedural and object-oriented programming. While these are powerful paradigms suitable for many software development contexts, other paradigms might be better suited to more specialist applications.

Logic programming languages, such as Prolog, are popular in fields such as theorem proving, pattern matching, and natural language processing. Functional programming languages, like Haskell, are preferred when code optimisation and correctness are of high importance.

A strong understanding of programming principles and paradigms will enable you to understand the capabilities and limits of specific programming languages. This will allow you to make educated decisions on which programming language to use for certain problems and help you write more optimised solutions.

What you will learn

In this module, you will:

  • study basic abstraction mechanisms in programming languages, such as variables, expressions, recursion, and macros
  • explore procedural programming using C
  • explore lambda calculus and functional programming using Haskell
  • explore logic programming using Prolog
  • explore concurrent and parallel programming using Erlang
  • study the fundamentals of type theory
  • look at formal reasoning about programs

By the end of this module, you will be able to:

  • understand the differences between various programming paradigms and their representative languages
  • understand principles of formal reasoning about properties of programs
  • explain the common building blocks of programming languages
  • demonstrate an understanding of basic type theory
  • apply the fundamentals of parallel programming to write simple parallel programs
  • relate the theoretical ideas around programming languages to practical problems in computing

Assignments / assessment

  • formal reasoning assignment (20%)
  • parallel programming assignment (20%)
  • written exam (60%)

Teaching methods / timetable

You will learn by taking a hands-on approach. This will involve taking part in tutorials and practical sessions.

Learning material is provided through videos, review notes, examples, and tutorial questions.

Courses

This module is available on following courses: