Level of Education
2 years of post-secondary education
ECTS
6 credits
Training Structure
College of Sciences
Number of hours
51h
Time of year
Fall
Description
To provide students with practical knowledge of the C language through an approach that combines low-level (hardware) and abstract (operating system) aspects, building on their foundational knowledge of another high-level programming language (imperative programming), typically Python.
Objectives
- Provide students with a foundation of practical knowledge in the C programming language.
- Lay the groundwork for studying microcontrollers in the second semester
Class Hours
- Computer Engineering / Programming - LectureLecture6:00 p.m.
- Computer Engineering / Programming - LabPractical Work33 hours
Mandatory Prerequisites
- Numbering in a Base (Binary, Hexadecimal)
- Fundamentals of Algorithms
- 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
Course Outline
- Basic keywords: while, for, if
- Functions: Structure of a low-level call; passing parameters by copy. Scope of variables.
- Input and output: formatted strings, printf, and scanf.
- Data types: utility, static "arrays," actual representation of variables in RAM, the concept of addresses in C.
- Pointers: the concept of a variable-address, pointers to variables, pointer typing, and observing RAM through pointers; comparison with RAM viewed as a binary stream. The * and [] notations. The concept of a “binary stream of information.”
- Techniques related to pointers: passing by address.
- Dynamic allocation: system-level considerations, comparison with static allocation.
- Simple data structures, defining new types. Functions that manipulate structures, structure pointers, and allocation of structure arrays.
- An Overview of Advanced Data Structures: Linked Lists
- Standard libraries: file handling, character strings