Programming and Software Engineering

Course Description

Basic concepts of procedural programming are introduced. Data structures, control structures, functions, arrays and files are explained. Basic concepts of software engineering are explained, such as problem algorithmization, subtasking, documenting and software development cycle.

General Competencies

Students are enabled to develop simpler procedural programs in C. Students will be capable to design a simpler algorithm after a given problem definition, to describe it in a procedural programming language, to test it and document. They should be able to locate and correct logical errors.

Learning Outcomes

  1. explain how computer stores data
  2. apply basic principles of software design
  3. design andimplement, test, and debug simple programs
  4. use arrays, selections, loops and functions
  5. describe the mechanics of fucntion calls and parameter passing.
  6. compose computer programs with sequential and direct access binary and text files
  7. use pointers and memory allocation

Forms of Teaching


15 weeks, which accounts for two weeks for intermediate exams. There are four hours of lectures per week, divided in two terms of two hours (2+2).


There are two exams: intermediate exam and final exam.

Laboratory Work

Two to three cycles of laboratory exercises are organised and performed under control of an assistant.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Comment: Percent of Grade
Laboratory Exercises 5 % 20 % 5 % 20 %
Quizzes 0 % 15 % 0 % 0 %
Mid Term Exam: Written 0 % 25 % 0 %
Final Exam: Written 15 % 40 %
Exam: Written 0 % 80 %

Week by Week Schedule

  1. Definition of algorithm. Definition of variable. Variable types. Associative and arithmetic operators. Elementary input and output.
  2. Compilation of source code. Debugging. Preprocessor statements. Logical operators and expressions.
  3. Simple selection. Double selection. Multiple selection and case.
  4. While loop. Until loop.
  5. For loop. One dimensional array.
  6. Two dimensional array. Multidimensional arrays.
  7. Recapitulation of program structures and their presentation in pseudocode.
  8. Function. Call by value. Pointer.
  9. Call by reference. Program modules and global variables.
  10. One dimensional array as function argument. Twodimensional array as function argument.
  11. Macro statements. Character string. Built-in arithmetic functions. Random numbers.
  12. Other built-in funcions. Built-in functions on character strings. Proprietary functions on character strings. Bit operators and expressions. Standard input.
  13. Standard output. Data files and classification. Redirection of input and output. Reading from formatted files.
  14. Writing into formatted files. Complex data types. Writing into unformatted files. Reading from unformatted files. Direct access files.
  15. Parameters from command line. Pointer arrays. Dynamic memory allocation. Program documentation. Advanced examples with testing on correctness.

Study Programmes

University undergraduate
Electrical Engineering and Information Technology and Computing (study)
(1. semester)


Brian W. Kernighan, Dennis Ritchie, Dennis M. Ritchie (.), C Programming Language, Prentice Hall
Stephen Kochan (2004.), Programming in C 2004, Sams
N. King, K.N. King (1996.), C Programming: A Modern Approach, W. W. Norton & Company


Laboratory exercises

Grading System

ID 19676
  Winter semester
L0 English Level
L1 e-Learning
60 Lecturers
0 Exercises
15 Laboratory exercises


87,5 Excellent
75 Very Good
62,5 Good
50 Acceptable