Skip to main content

Electives

Software Engineering

Every elective Zooky offers for this major.

Year 1 · Semester 1 · choose 1 of 1

  • Ready to learn · Level 3 · 6 points

    Introduction to Cybersecurity

    Assets, the CIA triad and risk, passwords and authentication, symmetric encryption, hashing and integrity, network attacks, malware and social engineering, detection and incident response, and the ethics and law of security work.

    Prerequisites: no set prerequisites

    What you'll learn (18 topics)
    • Assets, the CIA triad and risk
    • Security principles and least-privilege workflows
    • Threat modelling: STRIDE, boundaries and defensive controls
    • Passwords, entropy and authentication
    • Sessions, cookies and authentication boundaries
    • Symmetric encryption and key space
    • Hashing, MACs and integrity
    • Modular arithmetic
    • Application cryptography and key lifecycles
    • Network security: RSA, Diffie-Hellman, TLS and firewalls
    • Network attacks
    • Common vulnerabilities: injection, XSS and object permissions
    • Secure coding: validation, sizes and memory boundaries
    • Malware, social engineering and secure habits
    • Detection, logging and incident response
    • Security testing and verification evidence
    • Security ethics, law and responsible disclosure
    • Ethics and professional practice

Year 3 · Semester 1 · choose 1 of 1

  • Ready to learn · Level 3 · 6 points

    Advanced Algorithms and Theory of Computation

    Divide and conquer with the FFT, network flow and matching, finite automata, context-free languages, Turing machines and undecidability, P and NP, NP-completeness proofs, approximation and randomised algorithms.

    Prerequisites: Data Structures and Algorithms

    What you'll learn (26 topics)
    • Formal growth bounds and amortised analysis
    • Recursion and divide and conquer
    • Recurrence relations
    • The radix-2 FFT algorithm and zero padding
    • Divide and conquer beyond the basics
    • Greedy algorithms: choices that need a proof
    • Dynamic programming: states, tables and witnesses
    • Graphs: degrees, paths, Euler and Hamilton
    • Graph traversal and nonnegative shortest paths
    • Network flow and matching
    • Logic and proof techniques
    • Sets, relations and functions
    • Mathematical induction
    • Modular arithmetic
    • Finite automata and regular languages
    • Counting and combinatorics
    • Stacks, queues and circular buffers
    • Context-free languages and pushdown automata
    • Turing machines, computability and undecidability
    • Time complexity, P and NP
    • NP-completeness proofs
    • Approximation algorithms
    • Events and probability
    • Discrete random variables: binomial and Poisson
    • Merge, quick and heap sort
    • Randomised algorithms

Year 3 · Semester 2 · choose 1 of 7

  • Ready to learn · Level 3 · 6 points

    Computer Architecture

    Why a processor is fast or slow: performance, instruction sets, pipelines, caches, virtual memory, I/O and parallel machines.

    Prerequisites: Computer Systems and C Programming, Digital Systems Design

    What you'll learn (10 topics)
    • Performance, CPI and Amdahl's law
    • ISA design and instruction encoding
    • Datapath and control
    • Pipelines and hazards
    • Branch prediction
    • Caches
    • Virtual memory
    • Input, output and storage
    • Parallel hardware
    • Superscalar issue
  • Ready to learn · Level 4 · 6 points

    Machine Learning and Vision

    Learning from data and honest evaluation, linear and logistic models, classifiers, PCA and clustering, neural networks and backpropagation, 2-D image filtering, segmentation, convolutional networks, deep learning for signals, and squeezing a model onto a microcontroller.

    Prerequisites: Embedded Systems, Multivariable Calculus, Mathematical Methods

    What you'll learn (22 topics)
    • Events and probability
    • Point estimation: moments, maximum likelihood, bias and variance
    • Learning from data and evaluation
    • Least-squares regression
    • Gradient and directional derivatives
    • Linear and logistic models
    • Detection in noise: matched filter and bit error rate
    • Bayes, neighbour and tree classifiers
    • Joint distributions and correlation
    • Eigenvalues and eigenvectors
    • Features, PCA and clustering
    • The multivariable chain rule
    • Neural networks and backpropagation
    • Discrete convolution and impulse copies
    • Image filtering and edges
    • Thresholding, morphology and segmentation
    • Convolutional networks
    • Windowing and spectral estimation
    • Deep learning for signals
    • Low-power design: duty cycling, battery life, CMOS power and sleep break-even
    • Real-time basics: polling, utilisation, response time and state machines
    • Models on microcontrollers
  • Ready to learn · Level 3 · 6 points

    Operating Systems

    The kernel boundary and system calls, processes and threads, CPU scheduling, races and synchronisation, deadlock and the Banker's algorithm, memory management, virtual memory and page replacement, and file systems with disk scheduling and RAID.

    Prerequisites: Computer Systems and C Programming, Discrete Mathematics

    What you'll learn (14 topics)
    • Interrupts: latency, load, preemption and shared data
    • Kernel, user mode and system calls
    • Processes, threads and communication
    • CPU scheduling
    • Real-time basics: polling, utilisation, response time and state machines
    • Synchronisation
    • Deadlock
    • Memory management
    • Virtual memory
    • Virtual memory and page replacement
    • Input, output and storage
    • File systems and storage
    • Virtualisation and containers
    • Security principles and least-privilege workflows
  • Ready to learn · Level 3 · 6 points

    Data Analytics and Data Science

    Turning raw data into a conclusion you can defend: tidy tables and joins, summaries and outliers, honest charts, validation and the bias-variance trade-off, regularised regression, classifier scoring and costs, the bootstrap and multiple testing, and reporting results with their uncertainty.

    Prerequisites: Engineering Computing, Probability and Statistics for Engineers

    What you'll learn (26 topics)
    • Descriptive statistics and data presentation
    • Data analysis
    • SQL queries: select, join, aggregate and subqueries
    • Data wrangling and tidy data
    • Joint distributions and correlation
    • Exploratory analysis: summaries, outliers and correlation
    • Plotting with matplotlib
    • Presenting and analysing data
    • Visualisation: choosing and critiquing charts
    • Learning from data and evaluation
    • Point estimation: moments, maximum likelihood, bias and variance
    • Model validation and the bias–variance trade-off
    • Least-squares regression
    • Regression and correlation: fit, inference and prediction
    • Regression for prediction and regularisation
    • Linear and logistic models
    • Classification and how to evaluate it
    • Bayes, neighbour and tree classifiers
    • Eigenvalues and eigenvectors
    • Features, PCA and clustering
    • Hypothesis tests for a mean and a proportion
    • Comparing two samples: independent, paired and proportions
    • Sampling distributions and confidence intervals
    • Resampling and multiple testing
    • Technical communication
    • Communicating results honestly
  • Ready to learn · Level 3 · 6 points

    Concurrent, Parallel and Distributed Computing

    Why shared state goes wrong and how to count it, what locks and compare-and-swap cost, sizing thread pools, splitting work across processors, message passing and collectives, logical clocks, replication and consensus, and surviving failures with retries and checkpoints.

    Prerequisites: Software Architecture

    What you'll learn (19 topics)
    • Counting and combinatorics
    • Computer organisation: performance and caches
    • Interrupts: latency, load, preemption and shared data
    • Interleavings and the memory model
    • Locks and lock-free
    • Queueing, Little's law and Erlang B
    • Scalability, capacity and availability
    • Thread pools and scalability
    • Parallel hardware
    • Parallel decomposition
    • Transport layer: UDP, reliable transfer and TCP timers
    • Message passing and collectives
    • Time and ordering in distributed systems
    • Discrete random variables: binomial and Poisson
    • Transactions, serialisability and concurrency control
    • Replication and consensus
    • Repairable systems and availability
    • System reliability and redundancy
    • Fault tolerance and checkpointing
  • Ready to learn · Level 3 · 6 points

    Artificial Intelligence

    Rational agents and problem formulation, uninformed and informed search, local search and constraint satisfaction, games and alpha-beta pruning, logic and inference, automated planning, Bayesian networks and decisions, and how generative AI works, where it helps and where it fails.

    Prerequisites: Data Structures and Algorithms

    What you'll learn (21 topics)
    • Events and probability
    • Agents and problem formulation
    • Graph traversal and nonnegative shortest paths
    • Heaps and indexed priority queues
    • Uninformed search
    • Informed search and heuristics
    • Path planning: A-star, potential fields and RRT
    • Graphs: degrees, paths, Euler and Hamilton
    • Trees, spanning trees and colouring
    • Local search and constraint satisfaction
    • Recursion and divide and conquer
    • Adversarial search and games
    • Logic and proof techniques
    • Knowledge representation and logical inference
    • Automated planning
    • The Bayes filter and Gaussian noise
    • Discrete random variables: binomial and Poisson
    • Uncertainty, Bayesian networks and decisions
    • Vectors, projections, lines and planes
    • Neural networks and backpropagation
    • Generative AI: how it works, uses and limits
  • Ready to learn · Level 3 · 6 points

    Advanced Databases and Data Systems

    How a database joins and optimises a query, when a document store fits, how data is partitioned, replicated and kept consistent across machines, distributed transactions and sagas, data warehouses and columnar storage, batch and stream pipelines, and sketches for data too big to hold.

    Prerequisites: Software Architecture

    What you'll learn (21 topics)
    • Relational model, keys and relational algebra
    • SQL queries: select, join, aggregate and subqueries
    • Indexing and query cost: B+ trees, scans and selectivity
    • Transactions, serialisability and concurrency control
    • Join algorithms and external sorting
    • Descriptive statistics and data presentation
    • Query optimisation: estimates, plans and join order
    • Functional dependencies and normal forms
    • Entity-relationship modelling and mapping to tables
    • NoSQL families and document modelling
    • Discrete random variables: binomial and Poisson
    • Scalability, capacity and availability
    • Partitioning and replication
    • Consistency, quorums and CAP
    • Distributed transactions: two-phase commit and sagas
    • Data warehousing, dimensional models and OLAP
    • Queueing, Little's law and Erlang B
    • Big data pipelines: batch and stream processing
    • Events and probability
    • Hash tables and collision invariants
    • Probabilistic data structures for scale

Year 4 · Semester 1 · choose 1 of 1

  • Ready to learn · Level 4 · 6 points

    Real-time and Advanced Embedded Systems

    How firmware meets its deadlines: the kernel, scheduling proofs, shared resources and deadlock, timing chains and hardware-software co-design.

    Prerequisites: Embedded Systems, Computer Systems and C Programming

    What you'll learn (11 topics)
    • The real-time kernel
    • Cyclic executive and super loop
    • Fixed-priority scheduling analysis
    • EDF, demand and overload
    • Shared resources and priority inversion
    • Semaphores, queues and deadlock
    • Timing analysis and latency chains
    • Stacks and memory pools
    • Hardware-software co-design
    • Multiprocessor and time-triggered scheduling
    • Soft real time and stochastic timing