Index Ai Academy
Phase 7 of 12 · about 12 hours of study

Software engineering

How software is built, from bits to tested, well-designed programs. 16 lessons, about 12 hours of study, in four tracks. One lesson is free to try without an account: the first, How computers run code. The rest need a free account.

Start with How computers run code Create a free account

What you'll learn

How computers run code · 4 lessons, about 2.5 hours

  1. How computers run code FreeBits, memory, the processor, and what really happens when Python runs.
  2. Algorithm complexityCount the work code does, and see why some programs stop scaling.
  3. Concurrency and asyncDo many things at once: processes, threads and the event loop.
  4. Performance and profilingMeasure before you optimize, then fix the part that matters.

Data structures & algorithms · 3 lessons, about 2 hours

  1. Core data structuresArrays, linked lists, stacks, queues and the hash table behind every dict.
  2. Recursion, trees and graphsFunctions that call themselves, and the shapes most real data takes.
  3. Searching, sorting and dynamic programmingThe classic algorithms, and the ideas behind them.

Writing good code · 5 lessons, about 3.5 hours

  1. Testing your codeAutomated tests that prove code works and keep it working.
  2. Debugging systematicallyFind any bug with a method instead of guesswork.
  3. Readable code and refactoringWrite code people can understand, and improve it safely.
  4. Types and data modelingType hints, dataclasses and checking data at the edges of a program.
  5. Software designModules, interfaces and dependencies that keep big programs changeable.

Building software · 4 lessons, about 3 hours

  1. Databases and SQLStore, query and join data with the language every database speaks.
  2. Secure codingInjection, escaping, secrets and passwords: the mistakes attackers look for.
  3. Projects, packaging and CILay out a real project, pin its dependencies and test it on every push.
  4. Capstone: a command-line appDesign, build and test a complete program with a database.

Before you start

Lessons here build on an earlier phase:

The placement test can mark off what you already know, so you only study what's new to you.

What you'll build

A command-line app

Design, build and test a complete program with a database. Read the tutorial.

  • Turn a short brief into requirements, a data model and a layered design
  • Build a command-line interface with argparse, exit codes and clear errors
  • Store data with a repository class over SQLite

When you finish

Finish every lesson in this phase, or show you know it in the placement test, and you earn a certificate of completion, "Software engineering (Phase 7)", with its own link you can share.