Programming of Microcontrollers

Course description

The subject is a logical continuation of the Introduction to computer programming although it can be regarded as an independent unit as well. It is sectioned into three main topics:

-Introduction to C programming with emphasis on differences between C and JavaScript:

  -script languages and compilers

  -operating systems


  -data types

-objects and variables

-C programming language

  -data structures

  -programming techniques

  -low-level operations

-Learning board Arduino

  -basics of embedded systems

  -connecting and control of peripheral devices

  -multitasking and real-time systems

  -basic interrupt mechanism

Course is carried out on study programme

Elektrotehnika 1. stopnja

Objectives and competences

Students will have basic knowledge of C programming language. They will learn basic microcontroller principles, device connecting and basic real time systems principles.

Learning and teaching methods

Lectures, practical demonstrations, laboratory work, individual work with advanced students, web technologies, homeworks

Intended learning outcomes

After successful completion of the course, students should be able to:

-list and describe basic components of a microcomputer system

-explain the role of the basic computer components and how they work

-explain disturbing physical phenomena that can be solved using programmatic solutions

-identify the challenges that come with embedded, multitasking, and real-time systems

-develop a simple embedded system

-evaluate the significance of time and memory efficiency of a program solution

-build a reliable real-time system

-evaluate the efficiency of a specific solution in terms of the usage of resources, market price, reliability and maintainability

Reference nosilca

  1. KUNAVER, Matevž, BÜRMEN, Arpad, FAJFAR, Iztok. Automatic grammatical evolution-based optimization of matrix factorization algorithm, Mathematics. Apr.-1 2022, iss. 7, 1139, str. 1-22
  2. ŽIC, Mark, SUBOTIĆ, Vanja, PEREVERZYEV, Sergei, FAJFAR, Iztok. Solving CNLS problems using Levenberg-Marquardt algorithm : a new fitting strategy combining limits and a symbolic Jacobian matrix. Journal of electroanalytical chemistry. 1 Jun. 2020, vol. 866, 114171, str. 1-9
  3. BÜRMEN, Arpad, TUMA, Tadej, FAJFAR, Iztok. Meta-optimisation on a high-performance computing system. Elektrotehniški vestnik, ISSN 2232-3228. [English print ed.], 2012, vol. 79, no. 5, str. 231-236
  4. FAJFAR, Iztok, TUMA, Tadej, PUHAN, Janez, OLENŠEK, Jernej, BÜRMEN, Arpad. Towards smaller populations in differential evolution = K manjšim populacijam v diferencialni evoluciji. Informacije MIDEM, ISSN 0352-9045, sep. 2012, letn. 42, št. 3, str. 152-163
  5. FAJFAR, Iztok, PUHAN, Janez, TOMAŽIČ, Sašo, BÜRMEN, Arpad. On selection in differential evolution. Elektrotehniški vestnik, ISSN 2232-3228. [English print ed.], 2011, vol. 78, no. 5, str. 275-280
  6. PUHAN, Janez, BÜRMEN, Arpad, TUMA, Tadej, FAJFAR, Iztok. Teaching assembly and C language concurrently. International journal of electrical engineering education, ISSN 0020-7209, Apr. 2010, vol. 47, no. 2, str. 120-131

Study materials

1. I. Fajfar, J. Olenšek: Osvojimo C – C89, C99 in primeri programiranja mikrokrmilnikov, Založba FE, 2020

2. S. G. Kochan: Programming in C (4th Edition), 2014

3. K. N. King: C Programming – A Modern Approach, 2008

4. H. Schildt: Teach Yourself C, McGraw-Hill, 1997

5. R. P. Halpern: C for Yourself: Learning C Using Experiments, Oxford University Press, 1997

5. How C Programming Works (

6. Spletna stran,

Bodi na tekočem

Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška cesta 25, 1000 Ljubljana

E: T:  01 4768 411