F28LL Programming Languages (GA)

Dr Joe WellsDr Idris Skloul Ibrahim

Course co-ordinator(s): Dr Joe Wells (Edinburgh), Dr Idris Skloul Ibrahim (Edinburgh).

Aims:

  • To gain understanding of key programming language (PL) concepts, features, and paradigms.
  • To develop skills in programming using key PL concepts, features, and paradigms.
  • To gain proficiency in programming with industrially used languages (e.g., Python).

Detailed Information

Course Description: Link to Official Course Descriptor.

Pre-requisite course(s): F27SA Software Development 1 & F27SB Software Development 2 & F27CX Introduction to Computer Systems (GA) .

Location: Edinburgh.

Semester: AY.

Syllabus:

  • Overviews of programming language (PL) history, methods of definition (e.g., syntax, semantics), and methods of implementation (e.g., compiler, interpreter, virtual machine).
  • Overviews of PL paradigms/dimensions in the context of industrially used languages (e.g., Python), including dimensions such as: the imperative/declarative dimension and the degree to which order of evaluation can be observed, the high-level/low-level dimension, the dimension of how well higher-order functions are supported, the dimension of mutability of data, tail recursion support, the dimension of compiling/linking in advance v.s "just run it", etc.
  • Overviews of PL concepts and features via examples in industrially used languages (e.g., Python). Such concepts/features include, e.g., variable/parameter/field/cell, declarations (scope, extent), blocks, assignment/mutation and the lvalue/rvalue distinction, shallow/deep copying, data/control abstraction (classes and inheritance, objects/records, functions/methods/procedures, statement sequences, conditionals, calls/returns and arguments, loop statements, raising/catching exceptions, collections (mappings, arrays), comprehensions, modules/packages), type mechanisms (weak/strong, static v.s dynamic checking, inductive data types, type parameters, type-directed dispatch, type classes), database queries, REPLs (read-eval-print loops), libraries.
  • Programming using key PL concepts, features, and paradigms in industrially used PLs (e.g., Python).

SCQF Level: 8.

Credits: 15.