Memory Management & Resource Ownership
- Memory Safety & Management Models
- Complex but Safe vs Simple but Unsafe Memory Management (2020 1a, 2022 1c, 2024 2a, Sample Paper 1a)
- Stack vs Heap (2021 2a, 2019 1a)
- Memory safety and its security issues (2022 1b)
- Memory safety of direct memory casting (2023 2a)
- Importance of direct memory control in systems programming (2023 3a)
- Reference Management
- Reference counting for memory management (2019 1b)
- Mutable vs immutable references (2023 3b, 2019 1c)
- Problems with reference counting (2019 1d)
- Garbage Collection
- Problems with writing an OS in a garbage collected language (2020 2b, 2024 1b, Sample Paper 2b)
- Value of unified memory models (2024 1a)
Type Systems & Safety
- Type System Concepts
- Definition of a strong type system (2019 3a)
- Why we don’t only use strongly typed languages in systems (2020 2c)
- Where weak typing is good and bad in C (2021 2b)
- Expressive type systems and security (2023 2b)
- Type-Driven Development
- Explain type-driven development (2019 3c)
- Pros and Cons of type-driven development (2022 3b, 2019 3d)
- Type-driven development in security of systems (2021 3d)
- Specific Type Features
- Why do we have unsafe blocks in Rust (2021 2c)
- Why are casts unsafe (2024 2b)
- Option types instead of null pointers (2024 2c)
- State Representation
- Explain State Machines (2020 1b, Sample Paper 1b)
- Enum vs struct state machines (2024 2d)
Concurrency & Parallelism
- Threading Models
- Move from single threaded to multithreaded (rise of concurrent programming) (2022 1a, 2023 1a)
- Synchronization Mechanisms
- Problems with locks/mutex in C++ and Java (2022 2a, 2019 2a)
- STM vs Message Passing for concurrency (2021 1a, 2022 2b, 2019 2b)
- Problems with message passing systems (2020 3c, 2024 3a, Sample Paper 3c)
- Message Passing Patterns
- Sync vs Async Message Passing (2021 1b)
- Mutable vs immutable message passing (2023 1b)
- “Let it crash” concurrency in systems programming (2023 1c)
Asynchronous Programming
- I/O Models
- Sync vs Async I/O (2020 3a, 2022 3a)
- Benefits of Async I/O (Sample Paper 3a)
- Coroutines
- Coroutines (2020 3b, Sample Paper 3b)
- Problems with async programming in Rust (2024 3b)
Security in Systems Programming
- Attack Vectors & Mitigations
- Explain buffer overflow attack (2021 3a)
- Explain address space layout randomization (2021 3b)
- Design Principles
- Problems with Postel’s law (2021 3c)
Operating Systems Development
- OS Implementation Languages
- Problems with writing an OS in strongly typed language (2020 2a, 2019 3b, Sample Paper 2a)
- Should we only write in strongly typed languages for systems programming? (Sample Paper 2c)
Emerging Paradigms
- Functional Programming
- Functional programming in systems programming (2023 3c)
Common ASP Question Topics Breakdown