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

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).

Learning Outcomes: Subject Mastery

  • Increased proficiency in programming with industrially used programming languages (PLs).
  • Understanding of key PL concepts, features, and paradigms and how they are related.
  • Ability to understand how to use key PL concepts, features, and paradigms when programming.
  • Ability to relate knowledge of PL concepts, features, and paradigms to work-based computing projects.

Learning Outcomes: Personal Abilities

  • Understanding of how to anticipate the impact of programming language features and paradigms when chosen
    for different industrial projects.
  • Taking significant responsibility for their work and for a range of resources.
  • Ability to effectively relate, apply, and communicate learned knowledge at workplace.

Assessment Methods: Due to covid, assessment methods for Academic Year 2021-22 may vary from those noted on the official course descriptor. Please see the Computer Science Course Weightings and the Maths Course Weightings for 2020-21 Semester 1 assessment methods.

SCQF Level: 8.

Credits: 15.