Teaching
Here you can find most of the teaching material that I have been working on recently. I received all my education for free, in public schools financed by Serbian and Swiss taxpayers (for which I'm deeply grateful) and I truly believe that knowledge should be free and accessible to all. If you find any of these materials useful for your own teaching, feel free to use them, but I would appreciate some words of acknowledgment. Most of the slides are in Serbian, but hopefully, that should not be too much of an obstacle today. Many of the slides likely also contain mistakes, since they are all very fresh; in case you spot any, please send me an email with the details.
Undergraduate course, University of Novi Sad, 2024
Here you can find the course material for the Algorithms in Hardware Design research-oriented, seminar-style course as it was given in the fall semester of 2024/25. The idea was to introduce the students to fundamental concepts from logic synthesis, technology mapping, placement, and routing through a small number of lectures and then to proceed with reading select papers from these areas. The papers were chosen not only based on the historical impact that they had, but also on the appropriateness of the ideas that they present for someone with little to no experience in reading papers and conducting research. In particular, I tried to select groups of papers in which a logical progression of ideas could be observed.
Undergraduate course, University of Novi Sad, 2024
This course introduces the students to object-oriented programming in C++. Since it is given to master students of mathematics—for many of whom it is the only computer science course that they are taking in the entire bachelor and master curriculum, apart from an introduction to programming in Python—I also used the opportunity to introduce various other topics which could help them become truly good programmers and which should, in my opinion, be part of general culture of any person taking a course in computer science. To further reduce the artificial gap between mathematics and computer science, I tried to use examples that are actually relevant to mathematicians, as well as to refer to historical contributions of various mathematicians to the establishment of computer science as a scientific discipline. Finally, I made an attempt to really explain why certain things have been designed a certain way, by exposing the students to some extent to what the hardware and the compiler are doing underneath, as well as to what is the fundamental purpose of some language constructs. My hope was that this would make everything much clearer and reduce the need to learn anything by heart.