Basics Track

Computation basics: memory, processes, kernel resources

Story Index Prologue Introduction Models Models of structure and semantics Data Types & instances Operations Callable objects Structures Class structure Libraries Standard libraries References Resource links    
Bite Index Platform Survey of dominant operating systems Memory Memory-mapped files, virtual memory Scheduling Work scheduling, ready, running, blocked IO Sync and async, unbuffered and buffered IO System Res System-wide shared resources Programming Program models Execution Native vs. Managed Functions Functions, methods, lambdas    
"Unix is simple. It just takes a genius to understand its simplicity."
- Dennis Ritchie

Fig 1. Windows API Hello World
This program was built using CMake build system generator. Perplexity AI provided help with Windows API types and correctly configuring compile options in CMakeLists.txt.
Building robust and maintainable system code is easier and more productive if you understand platform basics: OS architecture, hardware interfaces, memory management and system APIs. This Track provides introductions to common platforms, virtual memory management, scheduling, process structure, I/O, and system-wide resources. The Windows platform is our default exemplar, but Linux and macOS use similar models although they differ significantly in lower-level details. There will be four ways of viewing Basics content in this site - now only one:
  1. Basics Story
    An ebook that covers basic computer technology at intermediate level.
  2. Basics Bites
    A collection of pages each focused on one feature of computer technology, starting with platforms.
  3. Blogs
    will eventually contain discussion of interesting details and comparisons. Those are not yet available.
  4. Basics Playground code examples
    Table of links to a collection of basic to intermediate code examples running in Compiler Explorer.
It's easy to sample each of these views by using the links above, or more selectively, using links in the BasicsExplorer panel on the left (if you don't see it, click on Toggle Ctrl Panel button at bottom left).
What I Like About Basics
  • Basics reveal the core ideas inside complex software systems
    • Many performance problems trace back to fundamentals: high page-fault rates, thread contention, I/O latency, inefficient garbage collection, slow database access, or missing caching. A solid grasp of basics helps identify and address these issues quickly.
    • Clear, readable code comes from well-chosen abstractions and good organization. Understanding the underlying principles of control flow, data structures, and modular design leads toward cleaner, more maintainable solutions.
  • Basics form the foundation for competent software development
    • Performance: Fundamentals explain why some designs run efficiently while others waste time and resources.
    • Debugging: Core knowledge provides a mental model of how systems behave, making it easier to diagnose and fix errors.
    • Reliability: Basics highlight common failure modes and help prevent subtle bugs that surface only under stress.
    • Scalability: Principles like separation of concerns and data locality support growth from small prototypes to large systems.
The code above on the right illustrates a C++ hello world program implemented using only the Windows API, .e.g., no C or C++ runtime libraries.

Table 1. Resources for Basic Computer and Software Technology

Tutorials Content
CS50 Introduction to Computer Science Harvard’s famous free online course covering fundamental programming, data, memory, and systems.
GeeksforGeeks CS Tutorials Practical tutorials on data structures, algorithms, operating systems, databases, and networks.
W3Schools Hands-on tutorials for web technologies: HTML, CSS, JavaScript, SQL, and more.
References Content
MDN Web Docs Comprehensive reference for web standards, programming basics, and browser APIs.
TutorialsPoint Computer Fundamentals Covers core topics like computer organization, operating systems, and software engineering.
Wikipedia Computer Science High-level reference with links to essential CS concepts, languages, and history.
Platform Technologies Content
Operating Systems: Three Easy Pieces Classic open-access book explaining virtual memory, scheduling, concurrency, and file systems.
Linux Kernel Documentation Detailed docs on scheduling, memory management, interrupts, and I/O in a production OS.
Wikipedia: Virtual Memory Background and history of virtual memory, paging, segmentation, and performance tradeoffs.
Wikipedia: Task Scheduling Explains CPU scheduling algorithms like round robin, priority, and multi-level queues.
Design & Implementation Patterns Content
Refactoring.Guru Design Patterns Visual, example-driven explanations of the classic “Gang of Four” design patterns.
Martin Fowler’s Articles Widely cited essays on refactoring, microservices, enterprise design patterns, and architecture.
SourceMaking Patterns Practical explanations of design patterns, anti-patterns, and principles with examples.
The Twelve-Factor App Modern guidelines for designing scalable, maintainable, cloud-ready applications.
Kent Beck on Implementation Patterns (InfoQ Interview) Direct discussion of *Implementation Patterns* — how they emerged and connect to Extreme Programming.
InfoQ: “A Theory of Programming” Review Summarizes the values, principles, and structure behind Beck’s implementation patterns.
3 Kent Beck Insights That Are Still True A modern reflection on Beck’s insights — why his coding practices remain relevant.
Two More Implementation Patterns (TidyFirst Blog) Deep dive into the “Method Object” pattern with a practical example of refactoring.
CRC Cards Early object-oriented design tool co-developed by Beck — complements implementation patterns.
Portland Pattern Repository Historical archive of early software patterns, co-founded by Kent Beck and Ward Cunningham.
Blogs Content
Coding Horror (Jeff Atwood) Long-running blog about software development, programming culture, and engineering practices.
Martin Fowler’s Blog Articles on software architecture, design patterns, and agile development.
DEV Community Developer-driven articles, tutorials, and discussions across many programming topics.
Examples Content
Public APIs GitHub Repo Large collection of free APIs with code examples for learning integration and services.
Programiz Examples Beginner-friendly examples in Python, C, C++, Java, and JavaScript with step-by-step guides.
The Algorithms GitHub Open-source implementations of algorithms and data structures in many languages.
< id="bottomMenu">