Dr. Miodrag Đukić

Dr. Miodrag Đukić is a teacher, a computer engineer, a researcher, and a programming enthusiast. He is a professor at the University of Novi Sad, where for the last 20 years he has been teaching programming, embedded programming, and compiler design. For several years now he has been an instructor at NIT Academy, where he regularly gives courses on C++ to eager engineers in the vibrant Novi Sad programming community.  Miodrag also has significant industrial experience in the development of compilers, assemblers, linkers, and other tools for embedded processors. He has published more than 50 papers and holds 5 patents.


  • Djukic, M., Cetic, N., Obradovic, R. et al. An approach to instruction set compiled simulator development based on a target processor C compiler back-end design. Innovations Syst Softw Eng 9, 135–145 (2013). https://doi.org/10.1007/s11334-013-0220-0

  • Kovacevic, J., Radujko, U., Djukic, M., & Novkovic, T.(2023). Smart Multi-Agent Framework for Automated Audio Testing. Elektronika Ir Elektrotechnika, 29(1), 59-68. https://doi.org/10.5755/j02.eie.33222

  • Djukic, M. Popovic, N. Cetic, I. Povazan, "Embedded Processor Oriented Compiler Infrastructure," Advances in Electrical and Computer Engineering, vol.14, no.3, pp.123-130, 2014, https://doi.org/10.4316/AECE.2014.03016

  • Popovic, I. Basicevic, M. Djukic, M. Popovic, "Fault Tolerant Distributed Python Software Transactional Memory," Advances in Electrical and Computer Engineering, vol.20, no.4, pp.19-28, 2020, https://doi.org/10.4316/AECE.2020.04003

  • Marinkovic, M. Popovic, M. Djukic, "An Automatic Instruction-Level Parallelization of Machine Code," Advances in Electrical and Computer Engineering, vol.18, no.1, pp.27-36, 2018, https://doi.org/10.4316/AECE.2018.01004


Learn advanced object programming paradigms in C++ variants 11, 14, and 17.


This course teaches you how to use the advanced object programming paradigms in C++ variants 11, 14, and 17. The course builds on basic C++ knowledge that enables you to utilize constructs such as move semantics, lambdas, templates, etc. in their C++ software solutions. Thanks to these high-level OOP, C++ is great to model complex systems, such as autonomous driving systems in vehicles.


Course topics:

  • C++ language extensions (C++11, C++14, C++17), nullptr, auto, scoped enumerations, compile-time assertions, string literals
  • C++ better class design: override, final, implicitly-declared operations, =delete, =default, delegating constructors, explicit, user-defined literals (UDL)
  • Move semantics: move constructor, move assignment, the rule of five, rvalue references, perfect forwarding, forwarding references
  • Lambdas: function objects, lambda expressions, variable capturing, generic lambdas, return type deduction, usage with STL algorithms
  • Multithreading: threads, passing parameters to threads, thread joining, mutexes, locking, condition variables, semaphores
  • Templates: function templates, variadic templates, tuples, template specializations, type traits, if constexpr


Software: IDE with C++ compiler (e.g Visual Studio Code, CMake, and C++ compiler supporting C++11 dialect or later, such as clang, g++ etc.).

Hardware: Computer with an Internet connection, working speakers, and microphone.

Prior knowledge: Participants should have basic knowledge of programming in C++.