Skriv ut | Lukk vindu |
Vår 2025
DTE-3607 Systems Programming for Computational Engineering - 10 stp
The course is administrated by
Institutt for datateknologi og beregningsorienterte ingeniørfag
Type of course
The course can be taken as a single course.
Course contents
Efficient implementation and practical aspects of scientific instrumentation.
Fundamental tools of C++ to enforce type safe programming of systems software:
- Concepts, templates, encapsulation (structs/classes and namespaces),
- abstraction, inheritance, type elision,
- memory-management and owners,
- advanced use of polymorphism, and strict static analysis.
Instrumentation using static and dynamic analysis:
- Branch misprediction,
- cache-misses,
- reliable and statistically relevant benchmarking, and
- debugging.
Systems programming demonstrated using computational engineering applications
- correct-tool-for-the-job by choosing the best approach to solve a given problem,
- hands-on experience with data-driven approaches and how they differ from object-oriented approaches,
- modularization and distribution of work,
- efficient linear-algebra libraries,
- utilization of differential geometry and vector mechanics,
- numerical accuracy and reliable metrics
Admission requirements
A relevant undergraduate bachelor Engineering programme with minimum 25 credits mathematic, 5 credits statistics and 7,5 credits Physics
Application Code: 9371
Prerequisite(s) Knowledge of and experience with C++ and object oriented analysis, design and programming.
Objective of the course
Knowledge:
- A type-safe programming subset of C++ and its related core guidelines.
- Software profiling via dynamic program analysis that measures time- and space complexity of a program and methods used to determine best-approaches based on domain specific problems and target architecture.
- Domain specific knowledge in geometry and related mathematical spaces, simulation and ODE-solvers.
- Knows how to use and write program libraries and APIs, and understands how this relates to end-user applications.
Skills:
- Can work independently with software development, by analyzing sub-problems and make plans for solving them analytically.
- Can construct large and complex computer programs for execution on multiple computer architectures.
- Can choose the right implementation approach based on scientifically founded reasoning, metrics, instrumentation, and analysis.
General competence:
- Utilize computers to solve problems in engineering applicable to a variety of industries and academic fields.
- The candidate is influenced to maintain and develop curiosity and values such as openness, precision, and the importance of distinguishing between knowledge and opinions.
- Present results in a scientific report, which clearly presents the candidate's own contribution within the problem context.
Language of instruction
English
Teaching methods
The subject is a project based course that gives 10 credits (corresponds to at least 6 weeks, or approx. 250-300 hours, of work). The teaching is organized as problem-based workshops. There will be lessons distributed throughout the four weeks of intensive teaching as directed by the teacher. Most of the time will be spent on hands-on problem solving and computer programming.