Course Topics
Module 1:
1. Introduction to: hardware and software, with computer organisation; data hierarchy; machine languages, assembly languages, high-level programming languages. Introduction to Python: interactive mode, script mode, Jupyter.
2. Introduction to different programming paradigms, focusing on the structured programming paradigm.
3. Structured programming: basic data types, variables, constants, operators and expressions; standard input/output handling; control flow structures; file and error handling.
4. Basic data structures/types of Python: (1) lists, (2) dictionaries, (3) tuples, (4) sets.
5. Subroutines and functions in Python (with/without parameters; with/without return).
6. Basics on modules and packages in Python.
The above will be delivered meanwhile acquiring practical knowledge, through programming exercises, of how to program a simple physical-computing board with a Python-based language (e.g., Raspberry PicoH or PicoWH, ESP32, running MicroPython). Programming exercises cover the following:
- how to perceive data via basic physical input devices (e.g., temperature sensor, humidity sensor),
- how to process and store data,
- how to plot data depending on their features.
Module 2:
The following topics will be covered by focusing on the C programming language and its specific features. Differences and similarities with Python will be outlined.
1. Introduction to C programming and toolchain
1.1. Understanding and using the compiler toolchains
1.2. Understanding cross-compilation
1.3. Tools to support modern software development
2. C language: syntax and data types
2.1. C standards
2.2. Control flow
2.3. Basic and derived types
3. C memory management and activation record
3.1. C memory organisation
3.2. Dynamic memory management
4. C programming techniques
4.1. Organisation of software artifacts in C
4.2. Effective use of C constructs and data types
4.3. Defensive programming techniques
5. Debugging and software testing
5.1. Techniques and strategies for effective debugging of code
5.2. Debugging tools
5.3. Unit testing
Teaching format
Lectures, exercises, laboratory activites