Level of study
BAC +2
ECTS
6 credits
Component
Faculty of Science
Hourly volume
51h
Time of the year
Fall
Description
To provide students with a working knowledge of the C language in an approach combining low-level (hardware) and abstract (operating system) aspects, based on the basic knowledge of another high-level computer language (imperative programming), typically python.
Objectives
- To give students a base of practical knowledge in the C language.
- Prepare the basis to approach the microcontroller part in the second semester
Necessary pre-requisites
- Numeration in a base (binary, hexadecimal)
- Basics of Algorithms
- Basic knowledge of imperative programming (typically Python or C)
Knowledge control
Written exam: 50% of the final grade
Practical work: 50% of the final grade
Syllabus
- basic keywords: while, for, if
- functions: structure of a low-level call, passing parameters by copying. Scope of variables.
- input and display: formatted strings, printf and scanf.
- types: usefulness, static "arrays", real representation of variables in RAM, concept of address in C.
- pointers: notion of variable-address, pointer on variable, typing of pointers and observation of RAM through pointers, comparison with RAM seen as a binary flow. Notation * and []. Concept of "binary flow of information".
- techniques associated with pointers: address passing.
- dynamic allocation: system aspect, 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, strings