Akiekintveld Systems Save Abandoned

Resources for learning systems programming.

Project README

What is systems programming?

Broadly, developing software that is:

  1. Relied upon for correctness and security by other software.
  2. Constrained by physical resources of its execution environments.

What are some resources to learn about systems programming?

General

Data Structures & Algorithms

Keywords: asymptotic complexity, array, queue, hash table, search tree, linked list, heap, sorting, binary search, backtracking, graph search, divide and conquer, memoization, string matching

Programming Languages

Computer Architecture

Keywords: von Neumann architecture, instruction set architecture, memory hierarchy, endianness, pipelining, branch prediction, out-of-order execution, cache coherence, trap

Compilers, Linkers, Loaders and Runtimes

Abstract Machine

Keywords: undefined behavior, memory model, pointer provenance, implementation-defined behavior, Rust ownership/lifetimes, memory safety, strict aliasing, C/C++ volatile

Security/Cryptography

Keywords: threat model, principle of least priviledge, Kerckhoffs's principle, confidentiality, data integrity, authentication, non-repudiation, computational hardness, vulnerabilities, buffer overflow, side-channel attack

Performance

Keywords: cache locality, zero-copy, data oriented design, benchmarking, SIMD

Scalability

Concurrency & Asynchrony

Keywords: multithreading, race condition, synchronization, deadlock, starvation, linearizability, memory ordering, shared mutable state, fiber, coroutine, async/await

Functional Programming

Keywords: referential transparency, algebraic datatypes, lambda expression, recursion, higher order function, persistent data structure, lazy evaluation, category theory

Distributed Systems

Keywords: CAP theorem, consensus, clock synchronization, logical clock, redundancy, fault tolerance, ACID, eventual consistency, MapReduce

Operating Systems

Keywords: scheduling, preemption, context switch, address space, virtual memory, file system, device driver, IPC, virtualization, networking

Research

Teaching

Open Source Agenda is not affiliated with "Akiekintveld Systems" Project. README Source: akiekintveld/systems
Stars
56
Open Issues
0
Last Commit
1 year ago

Open Source Agenda Badge

Open Source Agenda Rating