π FIT2102: Programming Paradigms
Map of Content
Index for FIT2102 Programming Paradigms β programming languages as different abstractions of computation. The whole unit turns on one distinction: Syntax versus Semantics. Arc: abstraction ladder β paradigms β JavaScript/TypeScript β Haskell (type classes β Functor/Applicative β Foldable/Traversable β Monad/IO β parser combinators) β lambda calculus β MiniZinc. No exam β the assessable act is defending your own code in an interview, so every note must make the WHY sayable out loud.
π Assessment Map
- Tutorials + Quizzes (40%) β completed individually, assessed via in-class interviews. Marked on correct and timely completion (submitted via Moodle) and demonstrated understanding in the interview.
- Assignment 1 (30%) β set W4, due W7. Individual; interviews check understanding; standard plagiarism checks.
- Assignment 2 (30%) β set W8, due W12. Same conditions.
- Workload calibration β most tutorial tasks are a few lines; no single problem should exceed ~30 minutes. Stuck? Write the question as a code comment, split it into sub-questions, bring it to the lab. This is deliberate β the pedagogy is productive failure + active learning.
- Out of scope β not a full βProgramming Languagesβ course: you will not build a compiler or design a language, though both are discussed.
π Knowledge Index
Week 1 β Syntax vs Semantics, Abstraction, JavaScript
- Syntax versus Semantics β Parent Framework: Programming Paradigms (the distinction that makes every concept transferable)
- Levels of Abstraction (Machine to High-Level) β Parent Framework: Von Neumann Architecture and Programs (shared with FIT1047 β the assembly/x86 tables are flagged not examinable)
- Programming Paradigms β Parent Framework: FIT2102_MOC (the unitβs spine β imperative vs declarative, purity, referential transparency, the four-surface loop critique)
- JavaScript Basics (Syntax, Types, Control Flow) β Parent Framework: Programming Paradigms (
const/let,===, truthiness, operators) - JavaScript Functions as Values β Parent Framework: Higher-Order Function (arrow functions, closures,
forEach/map/filter/reduce,range, loopβmethod refactor β the W1 hand skill) - Cons List (Closures as Data) β Parent Framework: JavaScript Functions as Values (W1 tutorial punchline β selectors, closures as storage, HOFs re-derived for your own type)
- Higher-Order Function (dual-unit β FIT1008 Python forms + the FIT2102 JavaScript/arrow forms)
- Recursion (dual-unit β FIT1008 converts recursion to loops for stack safety, FIT2102 converts loops to recursion for purity)
- Von Neumann Architecture and Programs (Smart Merged: FIT2102 adds the imperative-model framing that lambda calculus later replaces)
π§ Suggested Reading Order
- W1 β from the machine to functions-as-values: Levels of Abstraction (Machine to High-Level) β Syntax versus Semantics β Programming Paradigms (the spine) β JavaScript Basics (Syntax, Types, Control Flow) β JavaScript Functions as Values (W1 hand skill) β Recursion (loop replacement) β Cons List (Closures as Data) (tutorial punchline)
π― Learning Outcomes
- W1 β
- justify abstraction from machine instructions to high-level languages
- distinguish syntax from semantics
- write JS with immutable bindings; desugar arrows to
functionform - define a closure as a function capturing its enclosing scope
- contrast composition via higher-order functions vs objects (cons list)
- replace hand-coded loops with Array HOFs or accumulator recursion