Course aims
The target audience is those students who have no experience with C programming and microcontrollers. There are 24 places available; priority will be given to the target audience.

The overall purpose of the course is to equip the students with the necessary knowledge, methods and techniques for programming embedded microcontrollers using the C language. The course is conducted as a combination of lectures and laboratory classes with the following aims:
• To give an overview of microcontroller architectures;
• To give an overview the C programming language;
• To give an overview of the development tool-chain;
• To present methods and techniques for programming the selected embedded microcontroller in C;
• To apply the above for solving tasks and problems in order to gain practical experience.

Other aims of the course:
• To apply elements of the scientific and engineering methods;
• To apply and strengthen experimental and analytical skills;
• To apply and strengthen written reporting skills;
• To apply and strengthen problem-solving skills;
• To strengthen independent working skills.

Prerequisites: Boolean algebra, sequential and combinational logic, number representation, reading and understanding datasheets, writing reports. These prerequisites must be acquired and/or brushed-up prior to starting the course.

Learning outcomes in the course
Student who has completed the course:
- Knows about embedded microcontroller architecture in general;
- Is familiar with the particular microcontroller architecture selected for the course;
- Has knowledge of and skills in C-programming in general;
- Has knowledge of and skills in C-programming for the selected architecture;
- Can program embedded microcontroller in C-language applying the above listed knowledge and skills for independently solving real-life problems and documenting the work.

Brief description of the course
Generic microprocessor architecture. Generic programming flow. C fundamentals (data types, numeric representation, variables, control-flow, etc.). Overview of the selected platform (architecture, including peripherals and specific toolchain). Bit manipulation in C. Functions. Pointers. Structures. I/Os. Polling vs. interrupts. Timer. Communications (UART). ADCs.