Introduction to Computer Programming

Subject description

The course focuses on algorithms and data structures for solving fundamental mathematical and technical challenges. For the implementation of algorithms, we use the JavaScript programming language, which, however, is not the subject of detailed study. The course explains fundamental concepts such as (local and global) variable, reference, subprogram, parameter, and argument. It covers abstract data types (e.g., stack and queue) and data structures (e.g., array and linked list). The course explores various approaches to designing more complex algorithms and data structures. Special attention is given to the role of efficient data organization. We discuss strategies for debugging program code. A key part of the course is understanding the concepts of time and space complexity. We present techniques for designing recursive algorithms (based on the divide and conquer principle) and discuss situations in which such approaches are justified and effective (e.g., solving problems with backtracking).

The subject is taught in programs

Objectives and competences

Students learn the principles of algorithmic thinking in describing everyday problems. They also learn the basic skills of computer programming and the design and testing of software solutions. One of the main goals of the course is also to encourage the ability to think critically in evaluating the appropriateness of different software solutions. 

The material is designed to provide a foundation for learning the C programming language. 

Teaching and learning methods

Two hours of lectures and two hours of hands-on exercises per week, lecture recordings, textbook, homework assignments, individual work with more advanced students. 

Expected study results

Upon successfully completing the course, students should be able to: 

  • Know and distinguish between the concepts of an algorithm and a computer program 

  • List the basic components of an algorithm 

  • Recognize different components of a computer program 

  • Explain the impact of data structuring on the complexity of program code 

  • Extract an algorithm and identify data from a program written in a specific computer language 

  • Develop a simple algorithm based on a list of mathematical requirements and implement it in a specific computer language 

  • Evaluate the efficiency of the given algorithm 

  • Build a simple application based on given requirements 

  • Assess how efficient a specific solution is in terms of resource consumption, correctness, and reliability of operation, user-friendliness, and the possibility of maintenance and upgrades 

Basic sources and literature

  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 (www.w3schools.com)
  4. Mozilla Developer Network (developer.mozilla.org)
  5. John Pollock: JavaScript: A Beginner's Guide, Osborne McGraw-Hill, 2009

Stay up to date

University of Ljubljana, Faculty of Electrical Engineering Tržaška cesta 25, 1000 Ljubljana

E:  dekanat@fe.uni-lj.si T:  01 4768 411