Computer Systems, Software Engineering & High-Performance Computing

Information on the specialist area of Computer Systems, Software Engineering & High-Performance Computing.

This specialist area embraces both the theory and the practice of designing programmable systems, with topics ranging from advanced programming concepts to the design of computer systems and software engineering. As with other specialist areas, this Computer Systems, Software Engineering & High-Performance Computing prepares students for Ph.D. study and for careers in the software industry. 

Video introduction to the specialism (.mp4)

Students registered in this Specialist Area are recommended to select at least fifty credit points from the courses below. Courses are subject to availability.


Semester 1 Semester 2
Optional Courses

Compiling Techniques (20 credits, level 10)

Computer Communications and Networks (20 credits, level 10)

Computer Design (20 credits, level 9)

Computer Graphics

Distributed Systems

Elements of Programming Languages (level 10)

Extreme Computing

Human-Computer Interaction

Performance Modelling

Compiler Optimisation

Computer Architecture (level 9)

Computer Networking

The Human Factor: Working with Users

Operating Systems (20 credits, level 9)

Parallel Architectures

Parallel Programming Languages and Systems

Software Architecture, Process, and Management

Software Testing (level 10)

Optional External Courses (see notes below)

Fundamentals of Data Management

Message-Passing Programming

Parallel Programming Languages

Parallel Numerical Algorithms

Threaded Programming

Advanced Parallel Programming

Parallel Design Patterns

Performance Programming


There are no core courses listed in this Specialist Area.

The optional external courses for this Specialist Area are offered by the Edinburgh Parallel Computing Centre. These courses have regular essential lab sessions, which require a Physics computing account. There is usually a drop-in session at the beginning of the year to get set up with a Physics computing account, and to pass on any other important induction information. 

Additional note on course selection: Some courses have pre- and co-requisites listed in their linked description.  For example, later parts of the external Parallel Programming Languages course assume knowledge of MPI and OpenMP, as taught in Message-Passing Programming and Threaded Programming.  Also the Advanced Parallel Programming course has extensive prerequisites. Special permission from EPCC would be required to waive some of these.


Related links

Informatics sortable course list

Informatics course timetable