Programming 2

Course description

  1. Introduction to C programming language.
  2. Basic data types and basic control structures.
  3. Program design and debugging.
  4. Pointers and arrays (part 1).
  5. Pointers and arrays (part 2).
  6. Functions and parameter passing.
  7. Dynamic memory allocation.
  8. Strings.
  9. Input-output operations.
  10. Structures.
  11. Simple sorting algorithms.
  12. Recursion and backtracking (part 1).
  13. Recursion and backtracking (part 2).
  14. Preprocessor.

Objectives and competences

The goal of the course is to widen the programming skills by learning the most basic and advanced programming techniques.

General competences:

  • Developing skills in critical, analytical and synthetic thinking
  • The ability to understand and solve professional challenges in computer and information science
  • The ability to apply acquired knowledge in independent work for solving technical and scientific problems in computer and information science; the ability to upgrade acquired knowledge

Subject-specific competences:

  • Basic skills in computer and information science, which includes basic theoretical skills, practical knowledge and skills essential for the field of computer and information science
  • Basic skills in computer and information science, allowing the continuation of studies in the second study cycle

Learning and teaching methods

Lectures, home works, seminar works during tutorials. The emphasis is on continuous study and homeworks.

Intended learning outcomes

After the completion of the course a student will be able to:

  • solve mediumlevel programming exercises;
  • write programs in C programming language;
  • understand lowlevel programming techniques;
  • use recursion to solve programming problems;
  • use pointers to write efficient programs;
  • manage dynamic memory allocation and deallocation;
  • use recursive data structures;
  • use system calls in the C programming language;
  • write C programs consisting of multiple compilation units.

Reference nosilca

  1. SLIVNIK, Boštjan. On different LL and LR parsers used in LLLR parsing. Computer Languages, Systems & Structures, ISSN: 1477-8424, Dec. 2017, vol. 50, str. 108-126.
  2. SLIVNIK, Boštjan, VILFAN, Boštjan. Producing the left parse during bottom-up parsing. Information processing letters, ISSN 0020-0190, Dec. 2005, vol. 96, no. 6, str. 220-224.
  3. SLIVNIK, Boštjan. Measuring the complexity of domain-specific languages developed using MDD. Software quality journal, ISSN 0963-9314, Sep. 2016, vol. 24, no. 3, str. 737-75
  4. ROŽANC, Igor, SLIVNIK, Boštjan. Using reverse engineering to construct the platform independent model of a web application for student information systems. Computer Science and Information Systems, ISSN 1820-0214, 2013, vol. 10, no. 4, str. 1557-1583.
  5. POTOČNIK, Matic, ČIBEJ, Uroš, SLIVNIK, Boštjan. Linter – a tool for finding bugs and potential problems in Scala code. Proceedings of the 29th Annual ACM Symposium on Applied Computing, Gyeongju, Korea, March 24-28, 2014, str. 1615-1616.

Celotna bibliografija je dostopna na SICRISu:

Study materials

  1. B. W. Kernighan, D. Ritchie: Programski jezik C, Fakulteta za računalništvo in informatiko, 1994.
  2. T. Dobravec: abC, Fakulteta za računalništvo in informatiko, 2010.
  3.  A. Kavčič, M. Privošnik, C. Bohak, M. Marolt, S. Divjak: Programiranje in algoritmi skozi primere, Založba FE in FRI, 2010

Bodi na tekočem

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

E: T:  01 4768 411