⚙️ MemoLearning Systems Programming

Low-level programming, operating systems, memory management, and system internals

← Back to Computer Science

Systems Programming Curriculum

14
Core Units
~200
System Concepts
5
Programming Languages
8
OS Components
1

C Programming Fundamentals

Master the foundation language for systems programming with memory management and pointers.

  • C syntax and data types
  • Pointers and pointer arithmetic
  • Arrays and strings in C
  • Function pointers and callbacks
  • Structures and unions
  • Dynamic memory allocation
  • Memory management best practices
  • C standard library functions
2

Memory Management

Deep dive into how programs use memory and manage system resources efficiently.

  • Stack vs heap memory
  • Virtual memory concepts
  • Memory allocation algorithms
  • Garbage collection principles
  • Memory leaks and debugging
  • Memory mapping and shared memory
  • Cache memory and optimization
  • Memory protection mechanisms
3

Process Management

Understand how operating systems create, schedule, and manage running programs.

  • Process lifecycle and states
  • Process creation (fork, exec)
  • Process scheduling algorithms
  • Context switching
  • Process communication (IPC)
  • Signals and signal handling
  • Zombie and orphan processes
  • Process monitoring and control
4

Thread Programming

Learn concurrent programming with threads, synchronization, and parallel execution.

  • Thread creation and management
  • Thread synchronization primitives
  • Mutexes and semaphores
  • Deadlock detection and prevention
  • Producer-consumer problems
  • Thread pools and work queues
  • Lock-free programming
  • Thread-safe data structures
5

File Systems

Explore how data is stored, organized, and accessed on persistent storage devices.

  • File system architecture
  • Inodes and file metadata
  • Directory structures
  • File allocation methods
  • Journaling and crash recovery
  • File permissions and security
  • Virtual file systems (VFS)
  • Distributed file systems
6

I/O and System Calls

Master the interface between user programs and the operating system kernel.

  • System call interface
  • File I/O operations
  • Buffered vs unbuffered I/O
  • Asynchronous I/O
  • I/O multiplexing (select, poll, epoll)
  • Memory-mapped I/O
  • Device drivers and hardware
  • Error handling and errno
7

Network Programming

Build networked applications using sockets and network protocols.

  • Socket programming basics
  • TCP and UDP protocols
  • Client-server architecture
  • Network byte order
  • Concurrent server design
  • HTTP protocol implementation
  • Network security basics
  • Performance optimization
8

Shell and Scripting

Automate system tasks and build command-line tools with shell programming.

  • Shell basics and command line
  • Bash scripting fundamentals
  • Variables and parameter expansion
  • Control flow and loops
  • Regular expressions
  • Text processing tools (awk, sed)
  • Process substitution
  • Advanced shell features
9

System Security

Understand security principles and implement secure systems programming practices.

  • Buffer overflow attacks
  • Privilege escalation
  • Access control mechanisms
  • Cryptographic primitives
  • Secure coding practices
  • Sandboxing and isolation
  • Security auditing tools
  • Vulnerability assessment
10

System Performance

Optimize system performance through profiling, monitoring, and tuning techniques.

  • Performance profiling tools
  • CPU and memory optimization
  • I/O performance tuning
  • Benchmarking methodologies
  • Bottleneck identification
  • Cache optimization strategies
  • System monitoring tools
  • Performance debugging
11

Device Drivers

Learn how to write kernel modules and device drivers for hardware interaction.

  • Kernel module programming
  • Character and block devices
  • Interrupt handling
  • DMA (Direct Memory Access)
  • Hardware abstraction layers
  • Device tree and configuration
  • Power management
  • Driver debugging techniques
12

Assembly Language

Understand low-level programming and computer architecture through assembly language.

  • CPU architecture basics
  • Assembly syntax and instructions
  • Registers and memory addressing
  • Function calls and stack frames
  • Inline assembly in C
  • Optimization techniques
  • Debugging assembly code
  • Platform-specific considerations
13

Build Systems and Tools

Master the tools and processes for building, testing, and deploying system software.

  • Make and Makefiles
  • Compiler toolchains
  • Static and dynamic linking
  • Package management
  • Version control (Git)
  • Continuous integration
  • Debugging tools (GDB, Valgrind)
  • Documentation and testing
14

Advanced Systems Topics

Explore cutting-edge topics in systems programming and emerging technologies.

  • Container technologies (Docker)
  • Virtualization and hypervisors
  • Microkernel architectures
  • Real-time systems
  • Embedded systems programming
  • System programming in Rust
  • WebAssembly for systems
  • Edge computing and IoT

Unit 1: C Programming Fundamentals

Master the foundation language for systems programming with memory management and pointers.

C Syntax and Data Types

Learn C language fundamentals, primitive types, operators, and control structures for system programming.

Pointers and Pointer Arithmetic

Master pointer manipulation, address arithmetic, and memory access patterns essential for low-level programming.

Arrays and Strings in C

Understand C-style arrays, string handling, and the relationship between arrays and pointers.

Function Pointers and Callbacks

Implement dynamic function calls, callback mechanisms, and polymorphism in C programming.

Structures and Unions

Design complex data types, understand memory layout, and implement efficient data structures.

Dynamic Memory Allocation

Master malloc, calloc, realloc, and free for runtime memory management and avoiding memory leaks.

Memory Management Best Practices

Learn defensive programming techniques, memory debugging, and strategies for robust memory handling.

C Standard Library Functions

Utilize essential library functions for string manipulation, I/O operations, and mathematical computations.

Unit 2: Memory Management

Deep dive into how programs use memory and manage system resources efficiently.

Stack vs Heap Memory

Understand different memory regions, their characteristics, and appropriate use cases for each.

Virtual Memory Concepts

Learn how operating systems provide memory abstraction, paging, and address translation.

Memory Allocation Algorithms

Study first-fit, best-fit, worst-fit algorithms and their impact on memory fragmentation.

Garbage Collection Principles

Understand automatic memory management techniques and their trade-offs in system design.

Memory Leaks and Debugging

Identify, diagnose, and fix memory leaks using tools like Valgrind and AddressSanitizer.

Memory Mapping and Shared Memory

Implement memory-mapped files and inter-process communication through shared memory regions.

Cache Memory and Optimization

Optimize code for cache performance through data locality and cache-friendly algorithms.

Memory Protection Mechanisms

Learn about memory protection, segmentation faults, and hardware-assisted security features.

Unit 3: Process Management

Understand how operating systems create, schedule, and manage running programs.

Process Lifecycle and States

Learn process states (running, ready, blocked) and transitions in the process lifecycle.

Process Creation (fork, exec)

Master Unix process creation primitives and understand parent-child process relationships.

Process Scheduling Algorithms

Study FCFS, SJF, Round Robin, and priority scheduling algorithms for CPU time allocation.

Context Switching

Understand the overhead and mechanics of switching between processes and saving state.

Process Communication (IPC)

Implement pipes, message queues, and shared memory for inter-process communication.

Signals and Signal Handling

Learn asynchronous event handling through Unix signals and custom signal handlers.

Zombie and Orphan Processes

Understand process cleanup, preventing zombie processes, and handling orphaned processes.

Process Monitoring and Control

Use tools like ps, top, and htop to monitor processes and implement process control mechanisms.

Unit 4: Thread Programming

Learn concurrent programming with threads, synchronization, and parallel execution.

Thread Creation and Management

Master pthread library for creating, joining, and managing threads in multithreaded applications.

Thread Synchronization Primitives

Learn mutexes, condition variables, and barriers for coordinating thread execution.

Mutexes and Semaphores

Implement critical sections and resource counting using mutual exclusion and semaphore mechanisms.

Deadlock Detection and Prevention

Understand deadlock conditions and implement strategies to prevent and detect deadlocks.

Producer-Consumer Problems

Solve classic concurrency problems using bounded buffers and synchronization primitives.

Thread Pools and Work Que