Study level
BAC +2
ECTS
6 credits
Component
Faculty of Science
Hourly volume
51h
Time of year
Autumn
Description
Provide students with a working knowledge of the C language in an approach combining low-level aspects (hardware) and abstraction (operating system), based on basic knowledge of another high-level computer language (imperative programming), typically python.
Objectives
- Provide students with a foundation of practical knowledge of the C language.
- Prepare the groundwork for the microcontroller section in the second semester
Necessary prerequisites
- Numeration in a base (binary, hexadecimal)
- Basic algorithms
- Basic knowledge of imperative programming (typically Python or C)
Knowledge control
Written exam: 50% of final grade
Practical work: 50% of final grade
Syllabus
- basic keywords: while, for, if
- functions: structure of a low-level call, passing parameters by recopying. Scope of variables.
- input and display: formatted strings, printf and scanf.
- types: usefulness, static "arrays", real representation of variables in RAM, the concept of address in C.
- pointers: notion of variable-address, pointer to variable, typing of pointers and observation of RAM through pointers, comparison with RAM seen as a binary stream. Notation * and []. Concept of "binary information flow".
- techniques associated with pointers: address passing.
- dynamic allocation: system aspects, comparison with static allocation.
- simple data structures, definition of new types. Functions manipulating structures, structure pointers, structure array allocations.
- overview of advanced data structures: chained lists
- Standard libraries: file management, character strings