A first-principles programming course using Python to develop explicit state reasoning, control flow, abstraction, data handling, algorithmic judgement, debugging, testing, file processing, reproducible simulation, and software craft.
Trace programs as explicit state transformations and reason about values, types, control flow, and observable effects.
Design functions and interfaces that expose inputs, outputs, effects, and coherent responsibilities.
Use lists, dictionaries, sets, strings, CSV, and JSON appropriately while separating representation, parsing, and validation.
Implement small search, sorting, accumulation, grouping, and transformation algorithms and reason about their correctness and scaling.
Diagnose syntax, runtime, and logic failures using traces, invariants, boundary cases, unit tests, regression tests, and properties.
Build controlled numerical experiments and seeded simulations whose parameters, assumptions, and reproducibility are explicit.
Write readable, documented, testable programs and use version-control concepts to make change inspectable.
Build and defend a standard-library scientific/data CLI that validates data, computes reproducible summaries, simulates uncertainty, and passes automated acceptance tests.