Software Engineering for Scientific Computing
The course covers computer architecture and software features that have the greatest impact on performance. It addresses debugging and performance tunning, detecting memory and stack overwrites, malloc corruption, hotspot, paging, cache misses. A toolbox with common algorithms: sorting, searching, hashing, trees, graph traversing, is followed by common patterns used in object-oriented design. It describes programming paradigms, dynamic libraries, distributed architectures, and services. Lectures on linear algebra and performance libraries are provided as background for future courses. HPC paradigms and GPU programming are introduced. Software packaging, extensibility, and interactivity is followed by team development, testing and hardening.
Topics
- The objective of this recurrent course is to equip students with the skills and tools every software engineer must master for a successful professional career.
Official catalogue course objectives and student learning outcomes
Prerequisites & course information
{'preRequisiteCourse': '1599581', 'concurrentPrerequisit': False}; {'preRequisiteCourse': '1599591', 'concurrentPrerequisit': False}
Sources
- Course catalogue ↗2026-2027