Level of education
two years of postsecondary education
ECTS
6 credits
Training structure
Faculty of Science
Hours per week
51h
Time of year
Autumn
Description
Provide students with practical knowledge of the C language using an approach that combines 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 in the C language.
- Prepare the groundwork for tackling microcontrollers in the second semester.
Teaching hours
- Computer Engineering / Programming - CMLecture6 p.m.
- Computer Engineering / Programming - Practical WorkPractical Work33 hours
Mandatory prerequisites
- Numbering in a base (binary, hexadecimal)
- Algorithmic fundamentals
- Basic knowledge of imperative programming (typically Python or C)
Knowledge assessment
Written exam: 50% of the final grade
Practical work: 50% of the final grade
Syllabus
- basic keywords: while, for, if
- Functions: low-level call structure, passing parameters by copying. Scope of variables.
- input and display: formatted strings, printf, and scanf.
- Types: utility, static "tables," actual representation of variables in RAM, address concept in C.
- Pointers: concept of address variables, pointers to variables, pointer typing, and observing RAM through pointers, comparison with RAM viewed as a binary stream. Notation * and []. Concept of "binary information stream."
- techniques associated with pointers: passing by address.
- dynamic allocation: system aspect, comparison with static allocation.
- Simple data structures, definition of new types. Functions manipulating structures, structure pointers, allocation of structure arrays.
- overview of advanced data structures: linked lists
- Standard libraries: file management, character strings