Memory Management & Resource Ownership

  1. 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)
  2. Reference Management
    • Reference counting for memory management (2019 1b)
    • Mutable vs immutable references (2023 3b, 2019 1c)
    • Problems with reference counting (2019 1d)
  3. 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

  1. 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)
  2. 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)
  3. 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)
  4. State Representation
    • Explain State Machines (2020 1b, Sample Paper 1b)
    • Enum vs struct state machines (2024 2d)

Concurrency & Parallelism

  1. Threading Models
    • Move from single threaded to multithreaded (rise of concurrent programming) (2022 1a, 2023 1a)
  2. 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)
  3. 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

  1. I/O Models
    • Sync vs Async I/O (2020 3a, 2022 3a)
    • Benefits of Async I/O (Sample Paper 3a)
  2. Coroutines
    • Coroutines (2020 3b, Sample Paper 3b)
    • Problems with async programming in Rust (2024 3b)

Security in Systems Programming

  1. Attack Vectors & Mitigations
    • Explain buffer overflow attack (2021 3a)
    • Explain address space layout randomization (2021 3b)
  2. Design Principles
    • Problems with Postel’s law (2021 3c)

Operating Systems Development

  1. 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

  1. Functional Programming
    • Functional programming in systems programming (2023 3c)

Common ASP Question Topics Breakdown