Build Systems

Effective decision-making systems require reliable software foundations. This section introduces the core practices needed to implement, operate, and iteratively improve systems for measuring impact and allocating resources. We cover programming with Python, Jupyter notebooks, and VS Code, as well as software engineering practices including version control with Git, collaboration on GitHub, automated testing and linting, and AI-assisted development with Kiro. These skills enable analytical insights to be embedded in durable, extensible software rather than remaining isolated analyses.

Programming

Python

Python is the primary programming language for this course. We use it for data analysis, causal inference, simulation, and building decision systems. The language’s rich ecosystem of scientific computing libraries—including pandas for data manipulation, NumPy for numerical operations, SciPy for scientific computing, and matplotlib for visualization—makes it ideal for translating analytical insights into working code.

Resources

Jupyter

Jupyter notebooks provide an interactive computing environment that combines code, visualizations, and narrative text. This format is ideal for exploratory data analysis, prototyping models, and documenting analytical workflows. Notebooks make it easy to iterate on ideas and share reproducible analyses with collaborators.

Resources

VS Code

Visual Studio Code is a lightweight code editor that serves as the primary development environment for this course. Its rich extension ecosystem supports Python development through the Python extension and integrated Git workflows. It serves as a central hub where coding, Git workflows, and data exploration come together in one interface.

Resources

Software Engineering

Git & GitHub

Git is a distributed version control system that tracks changes to code over time, enabling experimentation through branches and reliable rollback when needed. GitHub builds on Git by providing a collaborative platform for hosting repositories, reviewing code through pull requests, and automating workflows with GitHub Actions. Together, they form the backbone of modern software collaboration—ensuring that analytical code remains reproducible, auditable, and easy to extend.

Resources

Code Quality

Ruff enforces consistent style and catches common errors like undefined variables through automated linting and formatting. pytest provides a framework for writing tests that verify code behaves as expected and serve as living documentation. Together, these tools help ensure that decision systems remain reliable as they evolve.

Resources

Kiro

Kiro is an AI-powered IDE from Amazon that brings agentic AI capabilities to software development. It uses a spec-driven approach where developers define requirements, design, and tasks in structured documents, and the AI assists with implementation while maintaining context across the project. This workflow aligns well with building decision systems—translating business requirements into working code with AI assistance.

Resources