Students
Sign in
Swift Chat is your account for Swift Media courses. Sign in below — no account yet? Create one on swiftapp.ca.
No Swift Chat account? Create one on swiftapp.ca, then come back here to enroll.
Questions? Contact us.
Programming Foundations
Nine days per track
Quick outline — full lessons live in the workspace after you enroll.
-
Day 1
Where JavaScript runs — the browser engine
Before writing a single line of code, understand what actually executes it. JavaScript lives inside your browser, and that changes everything about how it works.
-
Day 2
Storing values — variables and types
Programs need to remember things. Variables are named containers for values. JavaScript has a handful of core types you will use constantly.
-
Day 3
Operators, strings, and comparisons
How do you calculate things, combine text, and compare values? These are the building blocks of any logic your program needs to make.
-
Day 4
Control flow — making decisions and repeating things
Programs are not just lists of instructions — they branch and repeat. If/else lets you choose; loops let you repeat. These two patterns underlie almost all logic.
-
Day 5
Functions — reusable named blocks of logic
Functions let you name a piece of logic and use it repeatedly. They are the core unit of organisation in any program.
-
Day 6
Arrays — ordered lists and how to transform them
Arrays hold ordered collections of values. Beyond storing data, they have powerful built-in methods that let you transform and filter without writing explicit loops.
-
Day 7
Objects — structured data and how programs model the world
Objects group related values under one name. Almost everything in JavaScript is an object, and JSON — the format that powers web APIs — is built on this same idea.
-
Day 8
The DOM — JavaScript's connection to the page
The Document Object Model is how JavaScript reads and changes a webpage. Every element is an object you can find, modify, and listen to.
-
Day 9
Async JavaScript and where to go next
JavaScript in the browser is single-threaded — it can only do one thing at a time. But it handles waiting (network, timers) through an event loop. Understanding this makes async code click.
-
Day 1
Where Python runs — the interpreter and the shell
Python is a language designed to control data and computer functions. It runs in a shell — not a browser. Understanding that environment is the first step.
-
Day 2
Variables, names, and core types
Python uses simple assignment — no const or let. Every name points to an object, and objects have types. Python's type system is clean and consistent.
-
Day 3
Operators, strings, and f-strings
Python's arithmetic is clean and readable. F-strings make string formatting easy. Comparisons work without the coercion surprises of JavaScript.
-
Day 4
Control flow — indentation is the syntax
Python uses indentation to define blocks of code — no curly braces. This is not just style; it is the language. If the indentation is wrong, the program is wrong.
-
Day 5
Functions — def, return, and scope
Functions in Python work the same conceptually as in JavaScript — but the syntax and a few details differ. Understanding scope and closures here deepens your mental model of how all languages handle this.
-
Day 6
Lists — Python's workhorse collection
Lists are ordered, mutable sequences. Python's list comprehensions are one of its most expressive features — a clean way to build new lists from existing ones.
-
Day 7
Dictionaries — mapping keys to values
Dictionaries are Python's version of objects (or hash maps). They map keys to values and are central to how Python represents structured data.
-
Day 8
Script structure, exceptions, and reading errors
A well-structured Python script is easy to import, test, and run. Understanding the traceback is the fastest debugging skill you can develop.
-
Day 9
Files, the OS, and where to go next
Python's real power is interacting with the operating system — reading files, running commands, processing data. This is why Python dominates scripting and automation.
-
Day 1
What Bash is — controlling the computer directly
Bash is not a general programming language — it is a computer control language. Its job is to run other programs, connect their inputs and outputs, and automate system tasks.
-
Day 2
Variables, quoting, and expansion
Bash variables and quoting have rules that differ from JavaScript and Python. Understanding expansion — how Bash transforms text before running a command — is essential.
-
Day 3
Pipes, redirection, and connecting programs
The pipe is Bash's most powerful feature. It lets the output of one program become the input of another — building powerful data pipelines without writing code.
-
Day 4
Conditionals — exit codes and if / then / fi
In Bash, every command returns an exit code. Zero means success; anything else means failure. if in Bash tests exit codes, not boolean values. This is fundamentally different from JavaScript and Python.
-
Day 5
Loops — for, while, and case
Bash loops iterate over words, files, or ranges. They are essential for processing multiple files, retrying commands, or building simple menus.
-
Day 6
Functions and arguments
Bash functions work like small scripts inside your script. Arguments are positional — $1, $2, etc. Understanding how to structure a script around functions makes it readable and testable.
-
Day 7
Arrays and string operations
Bash arrays and parameter expansion let you handle collections of values and manipulate strings without reaching for Python or other tools.
-
Day 8
Robust scripts — set -euo pipefail and error handling
By default Bash keeps running even when a command fails. These three settings change that. Writing scripts that fail loudly and clearly is a core production skill.
-
Day 9
Real automation — combining tools and knowing when to stop
Bash is powerful for gluing tools together, but it has limits. Knowing when to write a Bash script and when to reach for Python is as important as knowing Bash itself.
-
Day 1
What C is — and why it still matters
C is not just another language. It is the language that built Unix, Linux, Python, and the V8 engine that runs JavaScript. Understanding C means understanding what every other language is doing underneath.
-
Day 2
Types, variables, and memory — C is explicit about everything
In JavaScript you never think about memory. In C you must. Every variable has a fixed size in bytes, and you declare its type before using it. This is not a limitation — it is power.
-
Day 3
Operators, control flow, and the for loop
C's control flow looks almost identical to JavaScript — because JavaScript borrowed C's syntax. Once you know C control flow, you know the shape of a dozen languages.
-
Day 4
Functions — declarations, return types, and the call stack
C functions are strict: you declare the return type, every parameter's type, and there is no optional chaining or default arguments (until C23). What you get in return is clarity about what data flows where.
-
Day 5
Pointers — addresses, not values
Pointers are the feature that makes C unique among the languages in this course. Every other modern language hides memory addresses from you. C hands you the address and lets you do arithmetic on it. This is where real understanding begins.
-
Day 6
Arrays, strings, and pointer arithmetic
In C, an array name is a pointer to its first element. Strings are just arrays of characters ending with a null byte. This unification is elegant and powerful — and is the source of C's most famous security bugs.
-
Day 7
Structs — grouping data into named shapes
A struct is C's way of grouping related data into a single named type. It is the predecessor of objects in C++, Python classes, and JavaScript objects. Understanding structs is understanding where OOP came from.
-
Day 8
Dynamic memory — malloc, free, and the heap
Stack memory is automatic and fast but limited. The heap is where you allocate memory at runtime — as much as the OS will give you. malloc gives it; free gives it back. Forgetting to free is a memory leak. This is the tradeoff every garbage-collected language resolves automatically.
-
Day 9
File I/O, the C standard library, and where to go next
C's file I/O is the model that Python's open() and many other languages copy. On Day 9 you close the loop: you have now seen the machine from the metal up — types, memory, pointers, structs, the heap. Everything else in programming is built on this foundation.