Course Syllabus for

Efficient C
Effektiv C

EDAG01F, 7.5 credits

Valid from: Spring 2021
Decided by: Professor Thomas Johansson
Date of establishment: 2021-03-08

General Information

Division: Computer Science (LTH)
Course type: Course given jointly for second and third cycle
The course is also given at second-cycle level with course code: EDAG01
Teaching language: English


The purpose of the course is that the students should learn how to write efficient programs in the C language. In order to achieve this main purpose, three other purposes of the course are that the students should learn about (1) the ISO C18 language, (2) modern computer architecture, from the perspective of the programmer, with focus on microprocessors and cache memories, and (3) modern tools to evaluate C programs in terms of correctness and efficiency.


Knowledge and Understanding

For a passing grade the doctoral student must

Competences and Skills

For a passing grade the doctoral student must

Judgement and Approach

For a passing grade the doctoral student must create a suitable implementation in C based on the requirements of the application

Course Contents

The ISO C18 standard, the principles of the C language, comparison between Java and C, struct, pointer, array, memory allocation, global variables, static storage duration, the C standard library, C compiler, implementation defined behaviour, unspecified behaviour, undefined behaviour, storage class specifiers, type specifiers, C preprocessor, GDB, Valgrind, the profiling tools GPROF, OPROFILE and GCOV, pipelined microprocessors, cache memories, using simulation tools for performance analysis, and a methodology to maximize the performance of a C program.

Course Literature

Jonas Skeppstedt, C.: Writing Efficient C Code --- A Thorough Introduction. Amazon, 2020. ISBN 1530414156.

Instruction Details

Types of instruction: Lectures, laboratory exercises, project

Examination Details

Examination format: Oral exam
Grading scale: Failed, pass

Admission Details

Admission requirements: Two courses in computer programming including elementary data structures such as lists and trees.
Assumed prior knowledge: None

Course Occasion Information

Contact and Other Information

Course coordinators:
Web page:

Complete view