1. Introduction
  2. Year 1 Notes
  3. CS118 - Programming for Computer Scientists
    ❱
    1. IEEE-754
    2. Robot Maze Reference
  4. CS126 - Design of Information Structures
    ❱
    1. Analysis of algorithms
    2. Recursion
    3. Data structures
    4. Sorting
    5. Heaps and priority queues
    6. Trees
    7. Binary search trees
    8. Graphs
  5. CS130 - Mathematics for Computer Scientists I
    ❱
    1. Sets, sequences and functions
    2. Logic
    3. Algebra of sets
    4. Proof
    5. Relations
    6. Functions
    7. Countability and cardinality
    8. Graphs
    9. Partial orders
    10. Probability
  6. CS131 - Mathematics for Computer Scientists II
    ❱
    1. Number systems
    2. Linear algebra
    3. Matrices
    4. Sequences and series
    5. Limits
    6. Calculus
  7. CS132 - Computer Organisation and Architecture
    ❱
    1. Data representation
    2. Combinatorial logic
    3. Sequential logic
    4. Microprocessor fundamentals
    5. Memory systems
    6. IO mechanisms
    7. Processor architecture
  8. CS139 - Web Development Technologies
    ❱
    1. HTML
    2. CSS
    3. Flask and Python
    4. Databases and SQL
    5. Protocols
    6. Security
    7. JavaScript
    8. Usability and accessibility
  9. CS140 - Computer Security
    ❱
    1. Introduction
    2. Authentication
    3. Public-key cryptography
    4. Secret-key cryptography
    5. Access control
    6. Security protocols
  10. CS141 - Functional Programming
    ❱
    1. Introduction
    2. Haskell basics
    3. Type system
    4. Type classes
    5. Data structures
    6. Functions
    7. Functors
    8. Foldable and traversable
    9. Semigroup and monoid
    10. Monads
    11. Best practices
  11. Year 2 Notes
  12. CS241 - Operating Systems and Computer Networks
  13. CS257 - Advanced Computer Architecture
  14. CS258 - Database Systems
  15. CS259 - Formal Languages
  16. CS260 - Algorithms
    ❱
    1. Greedy algorithms
      ❱
      1. Interval Scheduling
      2. Interval Partitioning
      3. Scheduling to Minimise Lateness
      4. Dijkstra's Algorithm
      5. Minimum Spanning Tree Algorithms
    2. Divide and conquer algorithms
      ❱
      1. Merge Sort
      2. Finding the Closest Pair of Points
      3. Integer Multiplication
      4. The Master Theorem
    3. Dynamic programming
      ❱
      1. Weighted Interval Scheduling
      2. Subset Sum
      3. Sequence Alignment
    4. Computational complexity
      ❱
      1. Polynomial-time reductions
      2. P and NP
      3. NP-completeness
  17. CS261 - Software Engineering
  18. CS262 - Logic and Verification
  19. CS263 - Cyber Security
  20. Year 3 Notes
  21. CS313 - Mobile Robotics
  22. CS325 - Compiler Design
  23. CS331 - Neural Computing
  24. CS349 - Principles of Programming Languages
  25. CS355 - Digital Forensics
  26. CS435 - Advanced Computer Security
  27. Dropped modules
  28. CS249 - Digital Communications and Signal Processing
  29. CS255 - Artificial Intelligence
  30. CS345 - Sensor Networks and Mobile Data Communications
  31. Other stuff
  32. LF213 - Virology
  33. LF313 - System Interactions In Human Disease
  34. PH212 - Applied Ethics
  35. PH379 - The Philosophy of Terrorism and Counterterrorism
  36. PS358 - Emotion Theories and Research

Computer Science Notes

CS260 - Algorithms

  • Greedy algorithms
    • Interval Scheduling
    • Interval Partitioning
    • Scheduling to Minimise Lateness
    • Dijkstra's Algorithm
    • Minimum Spanning Tree Algorithms
  • Divide and conquer algorithms
    • Merge Sort
    • Finding the Closest Pair of Points
    • Integer Multiplication
    • The Master Theorem
  • Dynamic programming
    • Weighted Interval Scheduling
    • Subset Sum
    • Sequence Alignment
  • Computational complexity
    • Polynomial-time reductions
    • P and NP
    • NP-completeness