Learn
University Computer Science
Choose a lesson to begin.
1 Programming Fundamentals 0 / 7
2 Discrete Mathematics
2.1
Logic and proofs
Coming soon
2.2
Sets, functions and relations
Coming soon
2.3
Induction and recursion
Coming soon
2.4
Counting and combinatorics
Coming soon
2.5
Graphs and trees
Coming soon
2.6
Discrete probability
Coming soon
3 Computer Systems Fundamentals
3.1
Binary and data encoding
Coming soon
3.2
Logic gates and digital building blocks
Coming soon
3.3
Processor and memory overview
Coming soon
3.4
Machine instructions
Coming soon
3.5
The operating-system interface
Coming soon
3.6
Compilation and execution path
Coming soon
4 Object-Oriented Programming
4.1
Objects and classes
Coming soon
4.2
Encapsulation
Coming soon
4.3
Composition and inheritance
Coming soon
4.4
Interfaces and polymorphism
Coming soon
4.5
Exceptions and error handling
Coming soon
4.6
Testing and design quality
Coming soon
5 Data Structures and Algorithms
5.1
Asymptotic analysis
Coming soon
5.2
Lists, stacks and queues
Coming soon
5.3
Hashing
Coming soon
5.4
Trees and heaps
Coming soon
5.5
Graphs and traversal
Coming soon
5.6
Sorting
Coming soon
5.7
Searching
Coming soon
6 Computer Architecture
6.1
Instruction set architecture
Coming soon
6.2
Datapath and control
Coming soon
6.3
Pipelining
Coming soon
6.4
Memory hierarchy
Coming soon
6.5
Input/output
Coming soon
6.6
Parallelism and performance
Coming soon
7 Operating Systems
7.1
Processes and threads
Coming soon
7.2
Scheduling
Coming soon
7.3
Synchronisation
Coming soon
7.4
Virtual memory
Coming soon
7.5
File systems
Coming soon
7.6
Protection and security
Coming soon
8 Databases
8.1
Relational modelling
Coming soon
8.2
Relational algebra and SQL
Coming soon
8.3
Normalisation
Coming soon
8.4
Indexes and query plans
Coming soon
8.5
Transactions and concurrency
Coming soon
8.6
Security and data governance
Coming soon
9 Computer Networks
9.1
Layering and architecture
Coming soon
9.2
Link layer and IP
Coming soon
9.3
Routing
Coming soon
9.4
Transport (TCP/UDP)
Coming soon
9.5
Application protocols
Coming soon
9.6
Network security
Coming soon
9.7
Distributed systems fundamentals
Coming soon
10 Algorithm Design and Analysis
10.1
Recurrences and analysis tools
Coming soon
10.2
Divide and conquer
Coming soon
10.3
Greedy algorithms
Coming soon
10.4
Dynamic programming
Coming soon
10.5
Graph optimisation
Coming soon
10.6
Reductions and NP-completeness
Coming soon
11 Theory of Computation and Compilers
11.1
Automata and regular languages
Coming soon
11.2
Context-free languages and parsing theory
Coming soon
11.3
Computability
Coming soon
11.4
Lexical analysis
Coming soon
11.5
Parsing
Coming soon
11.6
Semantic analysis and code generation
Coming soon
12 Software Engineering
12.1
Requirements
Coming soon
12.2
Architecture and design
Coming soon
12.3
HCI and accessibility
Coming soon
12.4
Version control and teamwork
Coming soon
12.5
Testing and continuous integration
Coming soon
12.6
Security and professional ethics
Coming soon
12.7
Team project
Coming soon
13 Artificial Intelligence and Machine Learning
13.1
Search
Coming soon
13.2
Knowledge and reasoning
Coming soon
13.3
Probability models
Coming soon
13.4
Regression and classification
Coming soon
13.5
Optimisation and learning
Coming soon
13.6
Evaluation and leakage
Coming soon
13.7
Fairness and limitations
Coming soon