This syllabus is valid: 2023-06-26
and until further notice
Course code: 5DV237
Credit points: 7.5
Education level: First cycle
Main Field of Study and progress level:
Computing Science: First cycle, has at least 60 credits in first-cycle course/s as entry requirements
Grading scale: Pass with distinction, Pass with merit, Pass, Pass with distinction, Pass, Fail
Responsible department: Department of Computing Science
Established by: Faculty Board of Science and Technology, 2023-03-17
Contents
Software consumes resources such as time, memory, energy, etc. when running. Software developers need to aware of the resource usage of the systems they develop and take steps to make their systems more efficient. This requires an understanding of the underlying hardware, and, more importantly, a desire and ability to apply that knowledge when designing, implementing, and analyzing software systems. The purpose of this course is to provide students with the knowledge, abilities, and attitudes they need to become proficient developers of efficient software systems that run faster, require less memory, and consume less energy. The fundamental concepts and ideas developed during the course are illustrated and practiced using the C++ programming language. While no prior experience with C++ is assumed, students are expected to have enough experience with imperative and object-oriented programming languages (e.g., C and Java) to be able to quickly and independently learn the basics of the language using the textbook and other resources.
Expected learning outcomes
Knowledge and understanding After completing the course, the student should be able to:
(FSR 1) describe performance-related features of processors (e.g., cores, pipelines, vector instructions, frequency scaling, hardware threads) and explain their impact on performance programming;
(FSR 2) describe performance-related features of memory management in hardware and software (e.g., memory hierarchies, virtual memory, dynamic memory allocation) and explain their impact on performance programming;
(FSR 3) explain concepts related to performance programming and analysis (e.g., latency, bandwidth, performance, scalability, energy efficiency).
Competence and skills After completing the course, the student should be able to:
(FSR 4) evaluate the efficiency of software with respect to time, memory, and energy using a combination of analytical and empirical methods;
(FSR 5) use empirical methods in combination with algorithm analysis to identify plausible causes of performance-related issues in software and document the findings in writing;
(FSR 6) write high-performant and maintainable code in the C++ programming language and discuss such aspects in code reviews.
Judgement and approach After completing the course, the student should be able to:
(FSR 7) judge if and how a particular performance optimization approach is appropriate in a given context by estimating the costs and benefits ahead of time;
(FSR 8) study, summarize, and orally discuss scientific or technical articles on topics related to performance programming.
Required Knowledge
At least 60 ECTS Computing Science. At least 7.5 ECTS programming; 7.5 ECTS data structures and algorithms; 7.5 ECTS object-oriented programming; 7.5 ECTS systems programming; 15 ECTS mathematics including 7.5 ECTS discrete mathematics.
Form of instruction
The instruction consists of lectures, seminars, and practical exercises. In addition to participating in scheduled activities, students are expected to engage in self-study of the course material.
Examination modes
The examination consists of a written exam in halls (FSR 1, 2, 3), written assignments (FSR 4, 5, 6), and seminars including code reviews and oral presentations (FSR 6, 7, 8). The grade scale is Fail (U), Pass (3), Pass with Merit (4), or Pass with Distinction (5).
Adapted examination The examiner can decide to deviate from the specified forms of examination. Individual adaptation of the examination shall be considered based on the needs of the student. The examination is adapted within the constraints of the expected learning outcomes. A student that needs adapted examination shall no later than 10 days before the examination request adaptation from the Department of Computing Science. The examiner makes a decision of adapted examination and the student is notified.
Other regulations
If the syllabus has expired or the course has been discontinued, a student who at some point registered for the course is guaranteed at least three examinations (including the regular examination) according to this syllabus for a maximum period of two years from the syllabus expiring or the course being discontinued.
Literature
Valid from:
2023 week 26
C++ High Performance - Second Edition Bjorn Andrist , Ben Garney , Viktor Sehr 2020 : Mandatory