π 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
- π FIT1008 Unit Cheatsheet β complexity tables, ADT matrix, sorting suite, trees/heaps/hashing
π Knowledge Index
Week 1 β Algorithms and Complexity
- Algorithm
- Computational Problem
- Algorithmic Complexity β backbone (incl. Input Size + Running Time + Time Complexity + Cost of Elementary Operations + Best/Worst-Case subsections)
- Big-O Notation β backbone (incl. Asymptotic Analysis + Big-Omega/Theta + Properties + Complexity Classes subsections)
- Arithmetic Series
- Linear Search
- Binary Search
- Sorting Problem β backbone (incl. Bubble + Selection + Insertion sorts + Stability + Incrementality subsections)
- Invariant
Week 2 β Intro to ADTs: Stack and Set ADT
- Abstract Data Type (ADT)
- Data Type
- Data Structure
- Array (Data Structure)
- Abstract Base Class
- Stack (ADT) β backbone (incl. ArrayStack + LinkStack subsections; LinkStack lands Week 5)
- Set (ADT) β backbone (incl. ArraySet + BVSet subsections)
- Bit Vector
Week 3 β List ADT and Queue ADT
- List (ADT) β backbone (incl. ArrayList + LinkList + LinkListIterator subsections; linked parts land Weeks 4β5)
- Dynamic Array Resizing
- List Slicing
- List Comprehension
- Queue (ADT) β backbone (incl. LinearQueue + CircularQueue + LinkQueue subsections; LinkQueue lands Week 5)
Week 4 β Sorted List ADT and Linked List
- Sorted List (ADT) β backbone (incl. SortedArrayList subsection)
- Binary Search (revisited: the SortedList search engine)
- Node
- Linked Node Data Structure
- List (ADT) β LinkList subsection (extended in Week 4)
Week 5 β Linked Stack, Linked Queue, and Iterator
- Stack (ADT) β LinkStack subsection (extended in Week 5)
- Queue (ADT) β LinkQueue subsection (extended in Week 5)
- Iterable
- Iterator
- List (ADT) β LinkListIterator subsection (extended in Week 5)
- Generator Expression
- Higher-Order Function
(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
- Tree
- Binary Tree β backbone (incl. Tree Traversal + Expression Tree subsections)
- Binary Search Tree (BST)
Week 9 β Priority Queues and Binary Heaps
- Priority Queue (ADT)
- Heap β backbone (incl. Bottom-Up Construction subsection)
- Heapsort
Week 10 β Dictionary ADT, Hash Functions, and Hash Tables
- Dictionary (ADT)
- Hash Table β backbone: Hash Function subsections this week (polynomial/Horner, prime discipline)
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)
- W1 β algorithms & complexity: Algorithm β Computational Problem β Algorithmic Complexity β Big-O Notation β Linear Search vs Binary Search β Sorting Problem (bubble/selection/insertion via Invariant + Arithmetic Series)
- W2 β ADTs, Stack & Set: Abstract Data Type (ADT) β Data Type Β· Data Structure β Array (Data Structure) β Abstract Base Class β Stack (ADT) (ArrayStack) β Set (ADT) + Bit Vector (ArraySet vs BVSet)
- W3 β List & Queue: List (ADT) (ArrayList) β Dynamic Array Resizing (amortised ) β List Slicing Β· List Comprehension β Queue (ADT) (Linear β Circular)
- W4 β Sorted List & Linked List: Sorted List (ADT) β Binary Search (revisited) β Node β Linked Node Data Structure β List (ADT) Β§LinkList
- W5 β linked variants & iterators: Stack (ADT) Β§LinkStack β Queue (ADT) Β§LinkQueue β Iterable β Iterator β Generator Expression β Higher-Order Function
- W6 β recursion: Recursion (base + call + convergence; aux functions, accumulator, stack conversion) β Tower of Hanoi
- W7 β recursive sorts: Divide and Conquer β Merge Sort vs Quick Sort (split/combine mirror)
- W8 β trees & BSTs: Tree β Binary Tree (+ traversals, Expression Tree) β Binary Search Tree (BST) (insert return-and-relink, 3-case delete)
- W9 β priority queues & heaps: Priority Queue (ADT) β Heap (rise/sink, bottom-up build) β Heapsort
- W10 β dictionaries & hashing: Dictionary (ADT) β Hash Table (hash functions: Horner + primes)
- W11 β collision resolution: Hash Table Β§Collision Resolution β Β§Open Addressing β Β§Linear Probing β Β§Load Factor
π― 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