---
title: "Programming"
description: "26 topics in Computing, in the order they build on each other."
canonical: https://lightmysky.com/learn/computing/areas/programming
source: https://lightmysky.com/learn/computing/areas/programming.md
retrieved: 2026-09-02
---

> **Agent view.** This is the Markdown twin of the page, for tools and assistants.
> When to use this site, and the call that answers each job: https://lightmysky.com/agent-instructions.md
> API description (OpenAPI 3.1): https://lightmysky.com/openapi.json · Authentication: https://lightmysky.com/auth.md
> Pricing: https://lightmysky.com/pricing.md · Catalog: https://lightmysky.com/llms.txt · Full catalog: https://lightmysky.com/llms-full.txt
> Every machine-readable file on this domain: https://lightmysky.com/.well-known/ai-catalog.json
> Ask for Markdown with `Accept: text/markdown`, a `.md` address, or `?mode=agent`.

# Programming

26 topics in Computing, in the order they build on each other.

Page: https://lightmysky.com/learn/computing/areas/programming

- [Variables and Assignment in Text Code](https://lightmysky.com/learn/computing/variables-and-assignment-in-text-code-mt_uLHLaX8BQq): Storing a value under a name in written code, then replacing it later. The name holds whatever was last assigned to it, which is how a program remembers anything.
- [Input, Output and Type Conversion](https://lightmysky.com/learn/computing/input-output-and-type-conversion-mt_lZmkGSELbC): Reading what a user types, printing results back, and converting typed text into a number before doing arithmetic with it.
- [Arithmetic in Code: Integer Division and Remainder](https://lightmysky.com/learn/computing/arithmetic-in-code-integer-division-and-remainder-mt_ZPnPrLGPmT): The arithmetic a program actually offers, including whole-number division and the remainder, and the order operators are applied in.
- [Boolean Expressions and Comparison Operators](https://lightmysky.com/learn/computing/boolean-expressions-and-comparison-operators-mt_0aIh-DPCZ4): Expressions that come out true or false: comparisons between values, and the way and, or and not combine them.
- [Selection with if, elif and else](https://lightmysky.com/learn/computing/selection-with-if-elif-and-else-mt_zylJ-p9g1g): Making a program take one path or another according to a condition, including several branches tested in order until one fits.
- [Count-Controlled Loops](https://lightmysky.com/learn/computing/count-controlled-loops-mt_r1eXTWI_6j): Repeating a block a known number of times, with a loop variable that takes each value of a range in turn.
- [Condition-Controlled Loops](https://lightmysky.com/learn/computing/condition-controlled-loops-mt_LjxO2n3Fy6): Repeating for as long as a condition stays true, for when the number of repeats is not known in advance, and making sure something inside the loop can make the condition false.
- [Strings: Indexing, Slicing and Length](https://lightmysky.com/learn/computing/strings-indexing-slicing-and-length-mt_33hA050_Qz): Treating text as a sequence of characters that can be measured, indexed from zero, and cut into parts.
- [Lists: Many Values Under One Name](https://lightmysky.com/learn/computing/lists-many-values-under-one-name-mt_ipB6kmyK85): Holding a whole collection of values in a single variable, then reading and changing items by their position.
- [Traversing a List to Build a Result](https://lightmysky.com/learn/computing/traversing-a-list-to-build-a-result-mt_lusbjHFt95): Looping over every item in a collection while carrying a running result: a total, a count, or the largest value seen so far.
- [Defining a Function with Parameters](https://lightmysky.com/learn/computing/defining-a-function-with-parameters-mt_pyo7yBg4H3): Giving a named block of code a job of its own and passing values into it, so the same steps run on different data.
- [Return Values and Variable Scope](https://lightmysky.com/learn/computing/return-values-and-variable-scope-mt_jivtTHpZc7): Sending a result back out of a function, and the rule that a name created inside a function does not exist outside it.
- [Decomposing a Problem into Subprograms](https://lightmysky.com/learn/computing/decomposing-a-problem-into-subprograms-mt_P293LckCnd): Splitting a task into parts small enough to write and check one at a time, then wiring the parts together into the whole program.
- [Tracing a Program by Hand](https://lightmysky.com/learn/computing/tracing-a-program-by-hand-mt__rsnZ5Goow): Following code line by line with a table of the variables, to say what it does and where it goes wrong. Errors that stop the program are found differently from errors that give a wrong answer.
- [Linear Search](https://lightmysky.com/learn/computing/linear-search-mt_32LwZIhSiB): Looking for a value by checking items one after another until it is found or the collection runs out, and counting the checks that takes in the best and worst case.
- [Binary Search on Sorted Data](https://lightmysky.com/learn/computing/binary-search-on-sorted-data-mt_3avV-VasFZ): Finding a value in sorted data by halving the range that is still in play at every step, and the reason the method breaks on unsorted data.
- [Functions at Depth: Default and Keyword Arguments](https://lightmysky.com/learn/computing/functions-at-depth-default-and-keyword-arguments-mt_SR8RhRmYhz): Giving a parameter a default so callers can leave it out, and naming arguments at the call so their order stops mattering. This is how one function serves several jobs without a second copy of the code.
- [Dictionaries: Values Found by Key](https://lightmysky.com/learn/computing/dictionaries-values-found-by-key-mt_mofpj0n5AM): A collection where each value is stored under a key of the programmer's choosing instead of a position. Looking a value up by key stays fast however many pairs are stored.
- [Classes and Objects: Bundling Data with Behaviour](https://lightmysky.com/learn/computing/classes-and-objects-bundling-data-with-behaviour-mt_kRvg7LZ_kk): A class describes what every object of its kind holds and what it can do; an object is one filled-in copy of that description. The constructor sets the starting state and the methods are the only code that changes it.
- [Inheritance and Overriding Behaviour](https://lightmysky.com/learn/computing/inheritance-and-overriding-behaviour-mt_wBp7j_B6fj): A class can extend another, taking its fields and methods and replacing the ones it needs to do differently. Shared behaviour is written once, and the differences sit in the class they belong to.
- [Designing with Objects: Deciding What Each Class Owns](https://lightmysky.com/learn/computing/designing-with-objects-deciding-what-each-class-owns-mt_De_gpvpOzg): Reading a problem description and deciding which things deserve a class, what each one is responsible for, and where the boundaries between them fall. The judgement is about responsibility, not about syntax.
- [Reading and Writing Files, Including CSV](https://lightmysky.com/learn/computing/reading-and-writing-files-including-csv-mt_j5qb4FdkdI): Opening a file, reading it line by line or writing to it, and closing it again, plus the row-and-column shape of CSV. This is where a program's data starts outliving the run that produced it.
- [Exceptions: Raising, Catching and Recovering](https://lightmysky.com/learn/computing/exceptions-raising-catching-and-recovering-mt_hEVa1JRrGu): Signalling a failure by raising an exception, and handling it where the caller knows what to do about it. Catching everything and carrying on hides faults, so the choice of what to catch is the real skill.
- [Unit Tests: Deciding What Is Worth Testing](https://lightmysky.com/learn/computing/unit-tests-deciding-what-is-worth-testing-mt_tuIQecq5Le): Writing small automated checks that call one function with chosen inputs and assert what should come back. The value is in the cases picked: the boundary, the empty input, the failure that should be raised.
- [Debugging as a Method: Reproduce, Isolate, Fix](https://lightmysky.com/learn/computing/debugging-as-a-method-reproduce-isolate-fix-mt_2JGE4ICRf6): Working from a fault to its cause by a repeatable route: reproduce it reliably, cut the program down until the fault is cornered, then change one thing and check. Guessing edits is the habit this replaces.
- [The Project Arc: Building a Program in Stages](https://lightmysky.com/learn/computing/the-project-arc-building-a-program-in-stages-mt_hACOaB3nA_): Taking a project from a written aim to working software in stages: a thin version that runs end to end, then features added one at a time, each kept working. Refactoring is the step that keeps the code liveable as it grows.
