(2023/2024) Software Engineering for HPC
These notes are an unofficial resource and shouldn’t replace the course material or any other book on software engineering. It is not made for commercial purposes. I’ve made the following notes to help me improve my knowledge and maybe it can be helpful for everyone.
As I have highlighted, a student should choose the teacher’s material or a book on the topic. These notes can only be a helpful material.
The notes are taken from the books/resources required for the course:
- Course slides.
- SE4HPC Exercise Book.
You can view/download the PDF here. In the notes folder, you can also see the source code.
For any issue, use the appropriate section.
Correlated Projects
During the Software Engineering for HPC course, I created two projects:
- Requirement Engineering and Design Project (section 1 to 5). More information in the following repository:
- DevOps Project (section 6 to 7). More information in the following repositories:
Course Syllabus
According to the official course syllabus:
- Software engineering
- Objectives and issues.
- Software and its role within complex systems.
- Software life cycles and main phases.
- Main issues that affect the life cycle of parallel and distributed software.
- Software qualities
- Performance.
- Availability.
- Reliability.
- Robustness.
- Design
- Unified Modeling Language to design HPC applications.
- Architectural styles and patterns.
- Techniques for verification and validation
- Configuration management
- Approaches to component integration and software release; continuous integration and continuous deployment
- Brief overview of approaches to automate deployment and operation of HPC software