Software & Computing

Programming, algorithms, systems, networks, databases, security and AI.

104 topics: 36 beginner, 34 intermediate, 34 advanced.

About this discipline

Software engineering is the discipline of building programs that are correct, efficient and maintainable. Computing provides the ideas: algorithms that solve problems, data structures that store information, and systems that run on real hardware and networks.

The course starts with programming basics and algorithms, moves through data structures, object-oriented design and testing, then covers operating systems, networks, databases, security and machine learning.

Who it is for

Students of computer science and software engineering, engineers who write code for their own discipline, and professionals who want a sound base in algorithms and systems.

How the levels build

Beginner topics cover variables, control flow, functions, loops, recursion and basic algorithms. Intermediate topics cover data structures, graphs, object-oriented design, testing, operating systems and networks. Advanced topics cover databases, distributed systems, security, web development and machine learning.

Use cases

  • Choosing a data structure for a fast lookup in a monitoring tool.
  • Writing unit tests for a control algorithm before deploying it.
  • Designing a database schema for sensor readings and events.
  • Routing messages between services with a queue.

Beginner Software & Computing

Topic 1What is a programA sequence of instructions a computer executes to perform a task.Topic 2AlgorithmsStep-by-step procedures to solve problems with defined inputs and outputs.Topic 3Variables and data typesNamed storage with types such as integer, float, string and boolean.Topic 4Operators and expressionsArithmetic, comparison and logical operators combine values.Topic 5Control flowif/else and switch select between paths of execution.Topic 6Loopsfor and while repeat code; careful termination conditions avoid infinite loops.Topic 7FunctionsReusable named blocks that take parameters and return values.Topic 8Arrays and listsOrdered collections accessed by index.Topic 9StringsSequences of characters with operations like slicing and searching.Topic 10RecursionA function calling itself on smaller inputs, requiring a base case.Topic 11DebuggingSystematically locate and fix defects using prints, debuggers and tests.Topic 12Pseudocode and flowchartsTools for planning logic before coding.Topic 13Version control with GitTracks changes, enables branching and collaboration.Topic 14Command line basicsNavigate files and run programs with a shell.Topic 15Binary and data representationEverything is stored as bits; text uses encodings such as UTF-8.Topic 16Big-O notationDescribes how run time or memory grows with input size.Topic 17Linear and binary searchBinary search halves a sorted list each step for O(log n).Topic 18Sorting algorithmsBubble, insertion, merge and quick sort have different complexity trade-offs.Topic 19Stacks and queuesLIFO and FIFO structures used in parsing, scheduling and buffering.Topic 20Linked listsNodes with pointers allow cheap insertion and deletion.Topic 21Hash tablesMap keys to values in average O(1) time using hash functions.Topic 22TreesHierarchical structures; binary search trees keep ordered data.Topic 23Balanced treesAVL and red-black trees guarantee O(log n) operations.Topic 24Heaps and priority queuesQuickly access the smallest or largest element.Topic 25GraphsVertices and edges model networks; stored as adjacency lists or matrices.Topic 26BFS and DFSBreadth-first and depth-first traversals explore graphs.Topic 27Shortest path algorithmsDijkstra and Bellman-Ford find least-cost paths.Topic 28Minimum spanning treesKruskal and Prim connect all nodes at minimum cost.Topic 29Dynamic programmingSolves overlapping subproblems once and stores results.Topic 30Greedy algorithmsMake locally optimal choices that sometimes give a global optimum.Topic 31Divide and conquerSplit a problem, solve parts, and combine; merge sort is a classic.Topic 32BacktrackingExplore choices and undo when they lead to dead ends.Topic 33NP-completenessA class of problems with no known polynomial algorithms; P vs NP is unsolved.Topic 34Object-oriented programmingModels software as objects with data and behaviour.Topic 35Encapsulation, inheritance and polymorphismThe core OOP principles for modular code.Topic 36SOLID principlesGuidelines for maintainable object-oriented design.

Intermediate Software & Computing

Topic 37Design patternsReusable solutions such as Singleton, Observer and Factory.Topic 38Functional programmingUses pure functions and immutability to reduce side effects.Topic 39Exceptions and error handlingHandle failures predictably without crashing.Topic 40Memory managementStack versus heap, garbage collection and manual allocation.Topic 41Pointers and referencesVariables that refer to memory locations.Topic 42Concurrency and threadsRun tasks simultaneously; need care with shared state.Topic 43Race conditions and deadlocksBugs from unsynchronised access and cyclic lock waiting.Topic 44Asynchronous programmingNon-blocking I/O with callbacks, promises and async/await.Topic 45Software development life cyclePhases from requirements to maintenance.Topic 46Agile and ScrumIterative delivery with sprints and continuous feedback.Topic 47Requirements engineeringGather, specify and validate what the system must do.Topic 48UML and modellingDiagrams that describe structure and behaviour of software.Topic 49Unit testingVerifies small components in isolation.Topic 50Test-driven developmentWrite failing tests first, then code to pass them.Topic 51Integration and system testingCheck components working together and the whole system.Topic 52Code review and refactoringImprove design without changing behaviour; peers catch bugs.Topic 53CI/CDAutomated building, testing and deployment pipelines.Topic 54Software architecture patternsLayered, microservices and event-driven structures.Topic 55MicroservicesIndependent small services communicating over networks.Topic 56APIs and RESTDefine how clients use services over HTTP with resources and verbs.Topic 57Computer organisationCPU, memory and I/O work together to execute programs.Topic 58Operating systemsManage hardware, processes, memory and files for applications.Topic 59Processes and schedulingDecide which process runs next using policies like round robin.Topic 60Virtual memoryPaging provides isolated large address spaces.Topic 61File systemsOrganise data on disks with directories, inodes and journaling.Topic 62Synchronisation primitivesLocks, semaphores and monitors coordinate concurrent code.Topic 63Virtualisation and containersVMs and containers isolate workloads on shared hardware.Topic 64Compilers and interpretersTranslate source code to executable form through lexing, parsing and code generation.Topic 65Computer networksSystems of connected devices exchanging data.Topic 66OSI and TCP/IP modelsLayered models that structure protocols.Topic 67IP addressing and routingAddresses identify hosts; routers forward packets by tables.Topic 68TCP and UDPReliable ordered delivery versus fast connectionless datagrams.Topic 69DNSTranslates domain names to IP addresses.Topic 70HTTP and HTTPSWeb request-response protocol, secured with TLS.

Advanced Software & Computing

Topic 71Network security basicsFirewalls, VPNs and intrusion detection protect networks.Topic 72Wireless networkingWi-Fi and cellular technologies share the radio spectrum.Topic 73Cloud computingOn-demand compute and storage as IaaS, PaaS and SaaS.Topic 74Relational databasesStore data in tables manipulated with SQL.Topic 75SQL queries and joinsSELECT, JOIN and GROUP BY retrieve and aggregate data.Topic 76NormalisationOrganise tables to reduce redundancy.Topic 77Transactions and ACIDAtomicity, consistency, isolation and durability guarantee reliable updates.Topic 78IndexingData structures such as B-trees speed up queries.Topic 79NoSQL databasesDocument, key-value, column and graph stores scale flexibly.Topic 80CAP theoremA distributed store can guarantee only two of consistency, availability and partition tolerance.Topic 81Distributed systemsMultiple machines cooperate, facing latency and failures.Topic 82Consensus algorithmsPaxos and Raft let nodes agree despite failures.Topic 83Caching and load balancingImprove performance and scale by distributing and reusing work.Topic 84Message queues and streamingDecouple services and process event streams.Topic 85Cryptography basicsSymmetric and public-key encryption and hashing protect data.Topic 86Authentication and authorisationVerify identity and control access.Topic 87Common vulnerabilitiesSQL injection, XSS and buffer overflows exploit unsafe code.Topic 88Secure software developmentThreat modelling, least privilege and dependency hygiene.Topic 89Web developmentHTML, CSS and JavaScript build interactive browser applications.Topic 90Front-end frameworksComponent-based libraries build complex user interfaces.Topic 91Back-end developmentServers handle logic, data and APIs.Topic 92Mobile developmentApps for Android and iOS using native or cross-platform tools.Topic 93Machine learning basicsAlgorithms that learn patterns from data.Topic 94Supervised and unsupervised learningLearning from labelled data or discovering structure without labels.Topic 95Neural networksLayers of weighted units trained by gradient descent.Topic 96Overfitting and regularisationModels memorising training data fail on new data; regularisation helps.Topic 97Deep learningLarge neural networks that learn hierarchical features.Topic 98Natural language processing and LLMsTransformers model language and power modern assistants.Topic 99Computer visionAlgorithms interpreting images, often with convolutional networks.Topic 100Reinforcement learningAgents learn by trial and reward.Topic 101MLOps and ethicsDeploy and monitor models responsibly, addressing bias and privacy.Topic 102ObservabilityLogs, metrics and traces let engineers understand a running system's internal state.Topic 103Infrastructure as codeServers and networks defined in version-controlled files and applied automatically.Topic 104Formal verificationMathematically proves that software or hardware satisfies a specification.

Frequently asked questions

What is Software & Computing?

Programming, algorithms, systems, networks, databases, security and AI.

How many topics are in Software & Computing?

104 topics, ordered from beginner to advanced: 36 beginner, 34 intermediate and 34 advanced.

Where should a beginner start in Software & Computing?

Start with "What is a program" and work through the list in order. Each topic builds on the one before it.

What is the best first programming language for an engineer?

Python is a good first choice because its syntax is clear and it is widely used for data analysis and automation. C is useful later for embedded work.

How much mathematics do I need for programming?

Discrete mathematics, logic and basic probability are most useful. Advanced topics such as linear algebra become important in graphics and machine learning.

Why do algorithms matter if computers are fast?

Growth rate decides whether a method still works when data becomes large. A quadratic method may be fine for a hundred items and useless for a million.

How do I start testing my code?

Write a small unit test for each function, including edge cases and invalid inputs. Run the tests automatically whenever you change the code.

Is machine learning replacing programming?

No. It adds a new tool. Engineers still need to define the problem, prepare data, check results, and make sure the system is safe and fair.

Practise in the interactive course with quizzes, tests and labs.