System software engineering was an introduction to writing system software (event-driven, time-driven, real-time) that involved theoretical and practical implementation of system level software using C++. Practically speaking The coursework often involved writing multi-threaded and multi-process implementations of popular algorithms like QuickSort and topics covered are summarized below:
- Concurrent and Parallel Programming using threads and processes in terms of managing shared resources and inter-process communication
- Mutual exclusion (Locks, Mutexes, Semaphores)
- UML
- Synchronization & Deadlock
- Priority and Scheduling
- Agile
- Testing (Unit Testing, Integration Testings, Regression Testing)
- Advanced Patterns (Producer-Consumer, Client-Server, Readers-Writers, RCU)
This repository contains all the coursework that I completed during the semester.