Lecturer: Dr. Luke Mathieson | Semester: Autumn 2026
⚠️ Disclaimer
These notes were generated from a live lecture transcript and compiled using Claude Sonnet 4.6. While the conceptual content, explanations, and Q&A answers have been verified against the transcript and are accurate, please note the following:
- Some code examples are reconstructed or illustrative — the Java
printfexample in the Q&A section, theString.valueOf()snippet, and parts of the goblin game code were written by Claude to illustrate points the lecturer made verbally. They were not transcribed verbatim from the lecture. The syntax is correct, but the specific variable names and values may differ from what was shown on screen.- One Q&A entry is marked “(Implicit)” — this was inferred from the lecturer’s explanation, not from an actual student question.
- Always cross-reference with official course materials (lecture slides, Ed platform, Canvas) for assessable content.
Every programming language — to be “up and running” — requires exactly three elements:
| Element | Also Called | What It Is |
|---|---|---|
| State | Variables | The current values stored in memory |
| Decision | Branching / Conditional | Choosing which code to execute |
| Iteration | Looping / Repetition / Recursion | Repeating code |
Week coverage:
“After next week, you have all of the basic elements that you need to create a fully working programming language.”
With only state + decision + iteration, you could write something that looks like assembly language. Assembly has:
Everything else in modern programming languages is built on top of these three elements to make code easier to read, write, and debug — not to add fundamentally new capability.