Between Autumn 2019 and Summer 2021, I worked as a University Assistant at the Technical University of Moldova. Throughout this period, I was lecturing three courses:
- Network Programming, covering concurrency primitives and network protocols.
- Real-Time Programming, covering message-based concurrency paradigms, also with some off-topics related to scalability, parallelization, and mechanical sympathy.
- Distributed Systems, covering both microservice and Big Data processing architectures patterns, and more fundamental problems of distributed systems (think delivery guarantees, consensus, and distributed transactions).
Plus, supervised some students pursuing their B.E.
I was teaching specifically at the anglophone branch, called FAF. It’s considered a kind of “SpecOps” academic group, with numerous perks and a selection process in place to pick who will get in there and who won’t. Because of this, I majorly “refactored” these courses, specifically for them, making these much more fast-paced and covering substantially more material, with some new complex practical projects (i.e. labs).
All courses were significantly updated, but Real-Time Programming is a different topic entirely. The Real-Time Programming course didn’t exist in the form I was teaching it, so I made it from scratch. Originally it was a course about event-driven programming in Windows, the Win32 API mind you. My version of Real-Time Programming is about asynchronous (and synchronous, a bit) message-driven communication, actor model, message brokers, and a bit about reactive programming. Real-Time referring to soft real-time constraints usually in place for such systems.
Being an Open Source believer, I’m now sharing my lecture slides. I authored these, so no copyright/IP infringements here.