Introduction to Computer Programming

Course description

The course first deals with basic principles of computers and computer programming. Later, it focuses on a specific programming language (JavaScript), through which a student learns the principles of data and algorithm design, coding, and testing of programs. The subject is divided into the following sections:


  -general principles of programming languages

  -design, building, and testing computer programs

-Algorithm design:


  -symbolic language

  -a top-down approach

  -divide and conquer


-Programming with JavaScript:


  -control statements




  -testing and debugging

Course is carried out on study programme

Elektrotehnika 1. stopnja

Objectives and competences

Students will master basics of algorithm and system approach to problem solving. They will learn skills of computer programming and testing programming solutions.

Subject is structured in a way that allows students to prepare for learning C programming language.

Learning and teaching methods

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

Intended learning outcomes

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

-identify various components of a computer program

-explain the influence of the structuring of data to the complexity of the program code

-extract the algorithm and identify data from a computer program written in a specific programming language

develop a simple algorithm based on a list of mathematical requirements and implement it using a specific programming language

-evaluate algorithmic efficiency of a given algorithm

-build a simple application based on some given requirements

-evaluate the efficiency of a specific solution in terms of the usage of resources, correctness and reliability, user-friendliness, 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: Algoritmi in podatkovne strukture – Uvod za inženirje, Založba FE, 2020

2. I. Fajfar: Start Programming Using HTML, CSS, and JavaScript, CRC Press, 2016

3. Spletna stran W3 Schools (

4. Mozilla Developer Network (

5. John Pollock: JavaScript: A Beginner's Guide, Osborne McGraw-Hill, 2009


Bodi na tekočem

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

E: T:  01 4768 411