1st Principles

Subject

Programming

How programs run, how data and control flow work, and how to grow programs without breaking contracts. Language-agnostic foundations first.

104 sub-topics · use search below on large subjects

Topics

Abstraction and APIs

Modules, interfaces, and boundaries between parts.

No published concepts in this chapter yet.

Control flow

Conditionals, loops, and reusable procedures.

No published concepts in this chapter yet.

Data and types

Values, variables, and collections.

No published concepts in this chapter yet.

How programs run

Source code, execution, and the machine model behind running software.

  • What Is a Program?Programming · 21 min

    A program is a precise description of a process a computer can execute step by step. Source code is the human-readable form; running it transforms inputs into outputs under fixed rules.

Application

Constraints in real jobs (Code)

Constraints in real jobs as it applies to Programming.

Cost and benefit (Code)

Cost and benefit as it applies to Programming.

Failure modes (Code)

Failure modes as it applies to Programming.

Implementation steps (Code)

Implementation steps as it applies to Programming.

Maintenance over time (Code)

Maintenance over time as it applies to Programming.

Problem framing (Code)

Problem framing as it applies to Programming.

Risk (Code)

Risk as it applies to Programming.

Scaling up (Code)

Scaling up as it applies to Programming.

Stakeholders (Code)

Stakeholders as it applies to Programming.

Trade-offs (Code)

Trade-offs as it applies to Programming.

Communication

Cross-disciplinary talk (Code)

Cross-disciplinary talk as it applies to Programming.

Explaining to beginners (Code)

Explaining to beginners as it applies to Programming.

Media coverage (Code)

Media coverage as it applies to Programming.

Open questions (Code)

Open questions as it applies to Programming.

Policy briefs (Code)

Policy briefs as it applies to Programming.

Presentations (Code)

Presentations as it applies to Programming.

Public controversy (Code)

Public controversy as it applies to Programming.

Teaching others (Code)

Teaching others as it applies to Programming.

Visuals that teach (Code)

Visuals that teach as it applies to Programming.

Writing clear summaries (Code)

Writing clear summaries as it applies to Programming.

Comparison

Analogies from other fields (Code)

Analogies from other fields as it applies to Programming.

Common confusions (Code)

Common confusions as it applies to Programming.

Competing models (Code)

Competing models as it applies to Programming.

Consensus areas (Code)

Consensus areas as it applies to Programming.

Debates that matter (Code)

Debates that matter as it applies to Programming.

Historical shifts (Code)

Historical shifts as it applies to Programming.

Interdisciplinary links (Code)

Interdisciplinary links as it applies to Programming.

Regional differences (Code)

Regional differences as it applies to Programming.

Schools of thought (Code)

Schools of thought as it applies to Programming.

Translation of terms (Code)

Translation of terms as it applies to Programming.

Context

Climate and environment (Code)

Climate and environment as it applies to Programming.

Demographics (Code)

Demographics as it applies to Programming.

Equity and access (Code)

Equity and access as it applies to Programming.

Funding (Code)

Funding as it applies to Programming.

Future scenarios (Code)

Future scenarios as it applies to Programming.

Global trends (Code)

Global trends as it applies to Programming.

Institutions (Code)

Institutions as it applies to Programming.

Regulation (Code)

Regulation as it applies to Programming.

Social impact (Code)

Social impact as it applies to Programming.

Technology change (Code)

Technology change as it applies to Programming.

Core ideas

Abstraction levels (Code)

Abstraction levels as it applies to Programming.

Cause and correlation (Code)

Cause and correlation as it applies to Programming.

Central definitions (Code)

Central definitions as it applies to Programming.

Equilibrium and change (Code)

Equilibrium and change as it applies to Programming.

Feedback loops (Code)

Feedback loops as it applies to Programming.

Laws, rules, or patterns (Code)

Laws, rules, or patterns as it applies to Programming.

Models and diagrams (Code)

Models and diagrams as it applies to Programming.

Scale: micro to macro (Code)

Scale: micro to macro as it applies to Programming.

Systems and parts (Code)

Systems and parts as it applies to Programming.

Units and measurement (Code)

Units and measurement as it applies to Programming.

Deep dives

Advanced preview (Code)

Advanced preview as it applies to Programming.

Capstone directions (Code)

Capstone directions as it applies to Programming.

Classic papers or texts (Code)

Classic papers or texts as it applies to Programming.

Edge cases (Code)

Edge cases as it applies to Programming.

Landmark discoveries (Code)

Landmark discoveries as it applies to Programming.

Minority reports (Code)

Minority reports as it applies to Programming.

Open research fronts (Code)

Open research fronts as it applies to Programming.

Paradigm shifts (Code)

Paradigm shifts as it applies to Programming.

Synthesis projects (Code)

Synthesis projects as it applies to Programming.

Where to go next (Code)

Where to go next as it applies to Programming.

Evidence

Anomalies (Code)

Anomalies as it applies to Programming.

Bias and blind spots (Code)

Bias and blind spots as it applies to Programming.

Case studies (Code)

Case studies as it applies to Programming.

Conflicting studies (Code)

Conflicting studies as it applies to Programming.

Data tables and charts (Code)

Data tables and charts as it applies to Programming.

Primary sources (Code)

Primary sources as it applies to Programming.

Secondary summaries (Code)

Secondary summaries as it applies to Programming.

Strong versus weak claims (Code)

Strong versus weak claims as it applies to Programming.

Triangulation (Code)

Triangulation as it applies to Programming.

Uncertainty language (Code)

Uncertainty language as it applies to Programming.

Methods

Documentation (Code)

Documentation as it applies to Programming.

Estimation and error (Code)

Estimation and error as it applies to Programming.

Ethics in method (Code)

Ethics in method as it applies to Programming.

Experiments and controls (Code)

Experiments and controls as it applies to Programming.

Observation protocols (Code)

Observation protocols as it applies to Programming.

Peer review (Code)

Peer review as it applies to Programming.

Replication (Code)

Replication as it applies to Programming.

Reproducible workflows (Code)

Reproducible workflows as it applies to Programming.

Simulation and models (Code)

Simulation and models as it applies to Programming.

Surveys and samples (Code)

Surveys and samples as it applies to Programming.

Orientation

Careers and roles (Code)

Careers and roles as it applies to Programming.

Everyday examples (Code)

Everyday examples as it applies to Programming.

History in one glance (Code)

History in one glance as it applies to Programming.

How claims get checked (Code)

How claims get checked as it applies to Programming.

Jargon worth learning first (Code)

Jargon worth learning first as it applies to Programming.

Objects you study (Code)

Objects you study as it applies to Programming.

Reading habits that stick (Code)

Reading habits that stick as it applies to Programming.

Tools practitioners use (Code)

Tools practitioners use as it applies to Programming.

What questions the field asks (Code)

What questions the field asks as it applies to Programming.

What the field is not (Code)

What the field is not as it applies to Programming.

Skills

Checklists (Code)

Checklists as it applies to Programming.

Collaboration norms (Code)

Collaboration norms as it applies to Programming.

Debugging mistakes (Code)

Debugging mistakes as it applies to Programming.

Hands-on practice (Code)

Hands-on practice as it applies to Programming.

Mentorship (Code)

Mentorship as it applies to Programming.

Pattern recognition (Code)

Pattern recognition as it applies to Programming.

Portfolio pieces (Code)

Portfolio pieces as it applies to Programming.

Self-assessment (Code)

Self-assessment as it applies to Programming.

Speed versus accuracy (Code)

Speed versus accuracy as it applies to Programming.

Tooling basics (Code)

Tooling basics as it applies to Programming.