Programming Seminar

Language of Instruction:Czech
Type of
Guarantor:Smrčka Aleš, Ing., Ph.D. (DITS)
Deputy guarantor:Rogalewicz Adam, doc. Mgr., Ph.D. (DITS)
Lecturer:Peringer Petr, Dr. Ing. (DITS)
Rogalewicz Adam, doc. Mgr., Ph.D. (DITS)
Smrčka Aleš, Ing., Ph.D. (DITS)
Faculty:Faculty of Information Technology BUT
Department:Department of Intelligent Systems FIT BUT
Learning objectives:
  The goal of the course is to provide a different point of view to key principles of programming and operating systems. In particular, with respect to abstraction of algorithms and formal automata and models, to reach the connection of theoretic and practical knowledge of a given topic.
  Dynamic memory allocation, pointer and reference data taype. Activation record and recursion. Compilation, binary program invocation. Implementation of state automata. Implementation of algorithms for regular expressions. Program synchronization. Principles of threads and processes. Selected synchronization issues. Introduction ot message passing interface. Problematics of page faults and related performance effects.
Knowledge and skills required for the course:
  Programming in C language. Fundamentals of algorithmization. Basic synchronization primitives. Computer architecture.
Learning outcomes and competencies:
  • Student is able to explain problems of program execution, she/he can explain dynamic memory allocation.
  • Student can use state automata in program control.
  • Student manages application of regular expressions.
  • Student manages implementation of parallel programs.
  • Student is able to identify decrease of program performance due to memory accesses..
Why is the course taught:
  The goal of the course is to complement knowledge of students with the topics of software programming which have not been thoroughly described in other programming courses. The problems are mostly demonstrated using practical examples and excersices.
Syllabus of lectures:
  1. Pointers, dynamic memory allocation.
  2. Stack frames, recursion.
  3. Compilation and debugging of programs.
  4. (computer laboratory)
  5. (computer laboratory)
  6. Finite automata, POSIX regular expressions.
  7. Synchronization of processes.
  8. Deadlock.
  9. (computer laboratory)
  10. (computer laboratory)
  11. Page tables.
  12. Demand paging and cache in relation on performance.
  13. Accreditation exam.
Syllabus of computer exercises:
  1. -
  2. -
  3. -
  4. Exercising and consulting of a given task (lecture with exercise).
  5. Demonstration and solution of a given task (lecture with exercise).
  6. -
  7. -
  8. -
  9. Exercising and consulting of a given task (lecture with exercise).
  10. Demonstration and solution of a given task (lecture with exercise).
  11. -
  12. -
  13. -
Fundamental literature:
  • Kernighan and Ritchie. The C Programming Language, 2nd edition. Chapter A. Storage Allocator for C maloc and free. 1989.
  • Maged M. Michael. Scalable lock-free dynamic memory allocation. In Proc. of PLDI'04. doi: 10.1145/996841.996848
  • Ulrich Drepper. What Every Programmer Should Know About Memory, 2007.
Study literature:
  • A. Kumar, A. K. Verma. A Novel Algorithm for the Conversion of Parallel Regular Expressions to Non-deterministic Finite Automata. 2014. doi:
Progress assessment:
  • Evaluation of the two home assignments solved in pairs of students (max 20 points)
  • Evaluation of an accreditation exam (max 80 points)
Exam prerequisites:
  The minimal total score of 50 points gained during a semester.

Your IPv4 address: