πŸ“˜ FIT1008: Introduction to Computer Science

Map of Content

Index for the Algorithms & Algorithmic Complexity strand (FIT1008/2085). Start with Algorithm.

πŸ“Š Assessment Map

  • Weekly Quizzes (30%):
  • Assignment 1 (30%):
  • Assignment 2 (40%):

🧰 Unit Cheatsheet

πŸ“… Knowledge Index

Week 1 β€” Algorithms and Complexity

Week 2 β€” Intro to ADTs: Stack and Set ADT

Week 3 β€” List ADT and Queue ADT

Week 4 β€” Sorted List ADT and Linked List

Week 5 β€” Linked Stack, Linked Queue, and Iterator

(Week 5.5 β€” mid-semester break; mid-sem test material = Weeks 1–5.)

Week 6 β€” Recursion

  • Recursion β€” backbone (incl. Notation + Accumulator + Auxiliary Function + vs Iteration + β†’Iteration via Stack subsections)
  • Tower of Hanoi

Week 7 β€” Recursive Sorts

Week 8 β€” Binary Trees and BSTs

Week 9 β€” Priority Queues and Binary Heaps

Week 10 β€” Dictionary ADT, Hash Functions, and Hash Tables

Week 11 β€” Hash Tables and Collision Resolution

  • Hash Table β†’ Collision Resolution + Open Addressing + Linear Probing + Load Factor subsections (extended in Week 11 β€” one clustered note spans both weeks)

🧭 Suggested Reading Order

(read leftβ†’right within each week Β· bold = the week’s core hand skill)

🎯 Learning Outcomes (key skills per week)

  • W1 βž”
    • define algorithm vs problem (lower bounds live on problems)
    • measure best/worst
    • apply Big-O algebra + the class ladder
    • state search preconditions (binary = sorted + random access)
    • analyse the three sorts via invariants, stability, adaptivity
  • W2 βž”
    • separate contract (ADT) from cost (implementation)
    • code ArrayStack with ops
    • choose ArraySet vs BVSet by data type + universe size
  • W3 βž”
    • code ArrayList ops + shift costs
    • explain factor-growth amortised append (vs additive )
    • code Linear and Circular queues (mod-arithmetic ring)
  • W4 βž”
    • state SortedList’s add-replaces-insert contract + / split
    • code LinkList relink ops
    • argue array vs linked as mirror images
  • W5 βž”
    • code LinkStack/LinkQueue (never full, pointer overhead)
    • write an Iterator (__iter__/__next__/StopIteration, single-use)
    • use lazy generators for memory
  • W6 βž”
    • write recursion with base + call + convergence
    • convert recursion↔iteration (accumulator forward, explicit stack backward)
    • trace Hanoi’s moves
    • analyse via recurrences
  • W7 βž”
    • derive from balanced splits
    • code merge sort (stable, scratch)
    • code quicksort + explain pivot pathology ()
  • W8 βž”
    • use tree vocabulary + law
    • run pre/in/post/level traversals
    • code BST insert (return-and-relink) + delete (in-order successor)
    • explain the degenerate stick
  • W9 βž”
    • show every linear PQ has one op
    • code heap rise/sink at
    • prove bottom-up build is
    • run heapsort in place, unstable
  • W10 βž”
    • state the Dictionary contract
    • design hash functions (Horner’s method, prime base + TABLESIZE)
    • derive expected
  • W11 βž”
    • compare chaining vs open addressing
    • maintain the linear-probing invariant (incl. deletion)
    • trigger rehash from load factor