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

Advances in Programming Languages

Compiling Techniques (20 credits, level 10)

Computer Graphics

Distributed Systems

Elements of Programming Languages (level 10)

Extreme Computing

Human-Computer Interaction

Software Design and Modelling (20 credits, level 10)

Applied Databases

Compiler Optimisation

Computer Networking

Embedded Systems

Parallel Architectures

Parallel Programming Languages and Systems

Performance Modelling

Software Architecture, Process, and Management

Software Testing (level 10)

Optional External Courses

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. Check back here for details.

Additional note on course selection: Some courses have pre- and co-requisites listed in their linked description. At time of writing, it wasn't officially mentioned, but later parts of the external Parallel Programming Languages course assume knowledge of MPI and OpenMP, as taught in Message-Passing Programming and Threaded Programming. The Advanced Parallel Programming course has extensive prerequisites. Special permission from EPCC would be required to waive some of these, or from Informatics to take that many external courses.


Related links

Informatics sortable course list

Informatics course timetable