Postgraduate Course: Programming Languages for HPC (EPCC11019)
Course Outline
School | School of Informatics |
College | College of Science and Engineering |
Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) |
Availability | Available to all students |
SCQF Credits | 10 |
ECTS Credits | 5 |
Summary | Compiled languages are the key building block in achieving good performance on modern computers, and underpin key methods in High Performance Computing such as large-scale parallelism and use of accelerated systems. Understanding how to write efficient compiled programs is therefore a core skill for all HPC practitioners This course will provide a strong foundation in compiled languages and cover associated techniques such as use of standard libraries and native vectorisation and parallelisation features. All topics are illustrated by programming examples, enabling students to develop practical skills that are widely applicable to a range of other disciplines. |
Course description |
The exact set of languages and methods explored in the course may vary slightly from year to year, but will include many of the following:
- principles of compiled vs interpreted languages
- performance comparison of the two approaches
- essentials of the C language
- compiler fundamentals
- an exposure to compiler optimisations
- array processing and use of standard libraries
- C++ core principles for HPC (templates, resource management, standard library), and additional features (polymorphic structures and inheritance)
- overview of other languages such as Fortran, Java and Rust
- threading approaches
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | None |
Information for Visiting Students
Pre-requisites | None |
Course Delivery Information
|
Academic year 2024/25, Available to all students (SV1)
|
Quota: 60 |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 11,
Supervised Practical/Workshop/Studio Hours 22,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
65 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
Coursework (100%) : Comprised of two formative quizzes, one summative quiz, and a final coursework assessment |
Feedback |
Not entered |
No Exam Information |
Learning Outcomes
On completion of this course, the student will be able to:
- Characterise and evaluate the need for compiled programming languages in HPC.
- Implement and critique solutions for high performance code using appropriate programming language concepts and techniques.
- Analyse, interpret and explain the different approaches, principles and interactions of different levels of parallelism in programming languages.
- Appreciate how hardware and systems can impact the software programming techniques from a performance perspective.
|
Additional Information
Graduate Attributes and Skills |
-Problem-solving
-Critical analysis
-Knowledge Integration
-Planning and Organising
-Independent Learning
-Self-awareness and reflection
-Decision-making
-Written Communication
-Writing effective software |
Special Arrangements |
Students should have familiarity with at least one programming language, and ability to demonstrate knowledge of programming essentials, such as loops, conditional statements, functions and data structures. |
Keywords | HPC,parallelism,complied programming languages |
Contacts
Course organiser | Mr Ludovic Capelli
Tel: (01316) 506709
Email: l.capelli@epcc.ed.ac.uk |
Course secretary | Mr James Richards
Tel: 90131 6)51 3578
Email: J.Richards@epcc.ed.ac.uk |
|
|