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

