Browse all 233 lessons across thirteen courses. Filter by course or search by topic.
233 lessons
Learn what Java is, why it matters in the South African job market, and run your first Hello World program.
Start lesson →Install the JDK, verify your environment, and compile your first Java file from the terminal.
Start lesson →Understand Java's strict syntax rules — case sensitivity, semicolons, braces, and naming conventions.
Start lesson →Declare and use typed variables in Java, including constants with the final keyword.
Start lesson →Master Java's primitive types — int, double, boolean, char — and when to use each one.
Start lesson →Use arithmetic, comparison, logical, and assignment operators to compute and make decisions.
Start lesson →Write if / else if / else chains and switch statements to control program flow.
Start lesson →Repeat code with for, while, do-while, and for-each loops — and know when to use each.
Start lesson →Store and iterate fixed-size collections of values, including 2D arrays for table data.
Start lesson →Write reusable named blocks of code with parameters, return types, and method overloading.
Start lesson →Define your own classes with fields and methods, then create and use objects at runtime.
Start lesson →Use constructors to initialise objects cleanly and reliably from the moment they are created.
Start lesson →Keep fields private and expose them through validated getters and setters.
Start lesson →Reuse code across classes using extends, super(), and protected access.
Start lesson →Override parent methods with @Override and treat different types through a common parent reference.
Start lesson →Define abstract classes with shared logic and abstract methods subclasses must implement.
Start lesson →Write contracts using interfaces and implement them across unrelated class hierarchies.
Start lesson →Handle runtime errors with try/catch/finally and throw your own exceptions from business logic.
Start lesson →Use ArrayList, HashMap, and HashSet for dynamic, type-safe data structures.
Start lesson →Read and write files safely with try-with-resources, FileWriter, and BufferedReader.
Start lesson →Connect Java to a relational database with JDBC and prevent SQL injection with PreparedStatement.
Start lesson →Discover C# — Microsoft's modern language — and run your first Console.WriteLine program.
Start lesson →Understand the .NET platform: CLR, BCL, NuGet, and the project types you will work with.
Start lesson →Learn C# syntax rules and modern string interpolation with the $ prefix.
Start lesson →Declare variables with explicit types or use var for compiler-inferred, strongly-typed values.
Start lesson →Master C# types including decimal for financial precision and nullable value types with ?.
Start lesson →Use C# operators including the null-coalescing ?? and null-conditional ?. operators.
Start lesson →Write if/else chains and modern switch expressions with pattern matching.
Start lesson →Iterate with for, foreach, while, and do-while — foreach is idiomatic C# for collections.
Start lesson →Declare fixed-size arrays and use LINQ extension methods for max, min, average, and sorting.
Start lesson →Write methods with expression bodies, optional parameters, and named arguments.
Start lesson →Define C# classes and use object initialiser syntax for concise, readable instantiation.
Start lesson →Use auto properties and full properties with validation — the C# way to expose class data.
Start lesson →Initialise objects with constructors, use this() for chaining, and records for immutable data.
Start lesson →Apply access modifiers (private, protected, internal, public) and validate data in property setters.
Start lesson →Inherit with :, call parent constructors with base(), and mark methods virtual to enable override.
Start lesson →Override virtual methods and use C# pattern matching with the is keyword for type-safe dispatch.
Start lesson →Define abstract classes with abstract methods that concrete subclasses must override.
Start lesson →Write I-prefixed interfaces, implement them in classes, and use default interface methods (C# 8+).
Start lesson →Handle errors with try/catch/finally, exception filters using when, and safe rethrowing.
Start lesson →Work with List<T>, Dictionary<K,V>, and HashSet<T> from the .NET collections library.
Start lesson →Write composable, readable queries on any collection using Where, OrderBy, Select, and more.
Start lesson →Read and write files with File.ReadAllLines, File.WriteAllText, and StreamWriter.
Start lesson →Access databases with ADO.NET parameterised queries and Entity Framework Core ORM.
Start lesson →Discover Python — readable, powerful, and the dominant language in data science and AI.
Start lesson →Install Python 3, choose an editor, create a virtual environment, and run your first script.
Start lesson →Learn Python's indentation rules, f-strings, colons, and comments.
Start lesson →Create variables with simple assignment — Python infers the type automatically.
Start lesson →Work with int, float, str, bool, and None — and convert between them with built-in functions.
Start lesson →Use Python's arithmetic operators including // for floor division and ** for power.
Start lesson →Write if / elif / else chains, ternary expressions, and match/case (Python 3.10+).
Start lesson →Iterate with for and range(), while loops, and loop else clauses.
Start lesson →Create and manipulate Python's most versatile collection — including slicing and comprehensions.
Start lesson →Use immutable sequences for data that should not change, and named tuples for clarity.
Start lesson →Store unique items and use union, intersection, and difference for set algebra.
Start lesson →Map keys to values with Python dicts, iterate with .items(), and build dict comprehensions.
Start lesson →Define functions with def, default parameters, *args, **kwargs, and docstrings.
Start lesson →Import from Python's standard library and organise your own code into reusable modules.
Start lesson →Read and write files with the with open() pattern, including CSV reading with the csv module.
Start lesson →Handle errors with try/except/finally, raise your own exceptions, and use the else clause.
Start lesson →Define classes with __init__ and self, create objects, implement __str__ for readable output.
Start lesson →Use @property for encapsulation, @classmethod for factory methods, and @staticmethod for utilities.
Start lesson →Extend classes with Python inheritance, call super().__init__(), and use isinstance() for type checks.
Start lesson →Work with dates and durations using the datetime module — today(), timedelta, and strptime.
Start lesson →Read CSV files, calculate statistics, and get started with pandas DataFrames.
Start lesson →Learn what SQL is, its sub-languages (DQL/DDL/DML), and which database engines are common in SA.
Start lesson →Understand tables, rows, columns, relationships, and the ACID guarantees of relational databases.
Start lesson →Learn SQL data types — INT, DECIMAL, VARCHAR, DATE — and how to structure a table.
Start lesson →Define auto-increment primary keys that uniquely and reliably identify every row.
Start lesson →Link tables with foreign keys and enforce referential integrity with ON DELETE CASCADE.
Start lesson →Retrieve data with SELECT, choose specific columns, use aliases, and remove duplicates with DISTINCT.
Start lesson →Filter rows using comparison operators, AND/OR/NOT, BETWEEN, IN, LIKE, and IS NULL.
Start lesson →Sort results with ASC and DESC, multi-column ordering, and limit rows with LIMIT or TOP.
Start lesson →Add single and multiple rows to a table using INSERT INTO ... VALUES.
Start lesson →Modify existing rows with SET — always with a WHERE clause to avoid updating every row.
Start lesson →Remove rows safely using WHERE — and understand soft delete patterns for production systems.
Start lesson →Define a table's full structure with column types, NOT NULL, UNIQUE, DEFAULT, and CHECK constraints.
Start lesson →Add, modify, and drop columns, and add constraints to an existing table.
Start lesson →Permanently remove a table — understand DROP vs TRUNCATE and the correct drop order for FK tables.
Start lesson →Summarise data with COUNT, SUM, AVG, MIN, and MAX — including COUNT DISTINCT.
Start lesson →Group rows and apply aggregates per group — and follow the SELECT column rules for GROUP BY.
Start lesson →Filter aggregated groups with HAVING — the equivalent of WHERE for grouped results.
Start lesson →Understand why joins exist and the four types: INNER, LEFT, RIGHT, and FULL OUTER JOIN.
Start lesson →Return only matched rows using INNER JOIN with table aliases and multi-table chaining.
Start lesson →Include all left-table rows even when no match exists on the right — find unmatched rows with IS NULL.
Start lesson →Include all right-table rows — and learn how every RIGHT JOIN can be written as a LEFT JOIN.
Start lesson →Return all rows from both tables — and simulate FULL OUTER JOIN in MySQL using UNION.
Start lesson →Nest a query inside another with subqueries in WHERE, IN, EXISTS, and as derived tables in FROM.
Start lesson →Save a SELECT query as a view — query it like a table, replace it, or drop it safely.
Start lesson →Speed up SELECT queries by indexing the right columns — and understand the write-overhead trade-off.
Start lesson →Create named, reusable SQL procedures in MySQL and SQL Server to encapsulate business logic.
Start lesson →Identify entities and relationships, draw ERDs, and implement 1:1, 1:M, and M:N relationships.
Start lesson →Apply 1NF, 2NF, and 3NF to eliminate data redundancy and prevent update/insertion/deletion anomalies.
Start lesson →A beginner-friendly introduction to C++: what it is, why it exists, and where it is used in the real world.
Start lesson →How to install a C++ compiler and set up an editor or IDE so you can write, compile, and run C++ programs.
Start lesson →An overview of C++ program structure: includes, namespaces, functions, statements, and comments.
Start lesson →Learn how to declare variables in C++ and the core built-in data types: int, double, char, bool, and string.
Start lesson →A guide to C++ operators: arithmetic, relational, logical, assignment, and increment/decrement, with precedence notes.
Start lesson →How to read user input with cin and print output with cout in C++, including handling multiple values and strings.
Start lesson →Learn if, else if, else, and switch statements in C++ for controlling program flow based on conditions.
Start lesson →Learn the for, while, and do-while loops in C++, plus break and continue for controlling loop execution.
Start lesson →Learn how to declare, initialise, and loop through arrays in C++, including multi-dimensional arrays.
Start lesson →Learn how to work with std::string in C++: concatenation, length, substrings, and comparison.
Start lesson →Learn how to declare and call functions in C++, including parameters, return types, and function overloading.
Start lesson →An introduction to pointers in C++: declaring, dereferencing, the address-of operator, and null pointers.
Start lesson →Learn how references work in C++, how they differ from pointers, and when to use each.
Start lesson →Learn how to define classes and create objects in C++, including member variables, member functions, and access specifiers.
Start lesson →Learn how constructors and destructors work in C++, including default, parameterised, and overloaded constructors.
Start lesson →Learn how encapsulation works in C++ using private member variables, public getters and setters, and validation logic.
Start lesson →Learn how class inheritance works in C++, including base and derived classes, protected members, and constructor chaining.
Start lesson →Learn runtime polymorphism in C++ using virtual functions, function overriding, and base class pointers.
Start lesson →Learn how to write generic function and class templates in C++ to avoid duplicating logic across data types.
Start lesson →Learn how try, catch, and throw work in C++ for handling runtime errors gracefully.
Start lesson →An introduction to the C++ Standard Template Library: vector, map, and common algorithms like sort and find.
Start lesson →A beginner's introduction to HTML: what it is, how browsers use it, and why it's the foundation of every website.
Start lesson →Learn the structure of an HTML document: doctype, html, head, and body elements, and what belongs in each.
Start lesson →Learn HTML text elements: headings h1-h6, paragraphs, strong and em, line breaks, and horizontal rules.
Start lesson →Learn how to create links in HTML using the anchor tag, including relative vs absolute URLs and linking to page sections.
Start lesson →Learn how to add images with the img tag in HTML, including alt text, width and height, and responsive images.
Start lesson →Learn how to create ordered lists, unordered lists, and nested lists in HTML.
Start lesson →Learn how to build HTML tables with thead, tbody, tr, th, and td, including accessible table headers.
Start lesson →Learn how to build HTML forms with input fields, labels, select menus, and the submit button.
Start lesson →Learn semantic HTML5 elements like header, nav, main, article, section, and footer, and why they matter.
Start lesson →Learn about HTML attributes: id, class, data-* attributes, and common global attributes like title and tabindex.
Start lesson →Learn how to embed audio and video in HTML using the audio and video elements, with controls and multiple sources.
Start lesson →Learn HTML accessibility basics: semantic markup, alt text, labels, ARIA attributes, and keyboard navigation.
Start lesson →Learn HTML SEO fundamentals: title tags, meta descriptions, heading structure, and descriptive link text.
Start lesson →HTML best practices: validation, consistent indentation, lowercase tags, and avoiding common structural mistakes.
Start lesson →An introduction to CSS: what it is, how it connects to HTML, and the three ways to apply styles to a page.
Start lesson →Learn CSS selectors: element, class, id, descendant, and combinator selectors, with examples of each.
Start lesson →Learn CSS colour formats (hex, rgb, hsl) and length units (px, %, em, rem, vh, vw).
Start lesson →Learn the CSS box model: content, padding, border, and margin, and the difference between content-box and border-box sizing.
Start lesson →Learn CSS typography properties: font-family, font-size, font-weight, line-height, and text-align.
Start lesson →Learn CSS background properties (colour, image, position, size) and border properties including border-radius.
Start lesson →Learn the CSS display property (block, inline, inline-block, none) and position property (static, relative, absolute, fixed, sticky).
Start lesson →Learn CSS Flexbox: display flex, justify-content, align-items, flex-direction, and flex-wrap.
Start lesson →Learn CSS Grid layout: grid-template-columns, grid-template-rows, gap, and placing items in a grid.
Start lesson →Learn responsive web design with CSS media queries, the viewport meta tag, and mobile-first design principles.
Start lesson →Learn CSS pseudo-classes (:hover, :nth-child, :focus) and pseudo-elements (::before, ::after) with examples.
Start lesson →Learn CSS transitions: transition-property, duration, timing-function, and how to animate hover and focus states.
Start lesson →Learn CSS keyframe animations: @keyframes, animation-duration, iteration-count, and common animation patterns.
Start lesson →Learn CSS custom properties (variables): defining them with --name, using var(), and scoping with :root.
Start lesson →Learn how CSS specificity and the cascade determine which styles win when multiple rules conflict.
Start lesson →CSS best practices: naming conventions like BEM, avoiding overly specific selectors, and organising stylesheets.
Start lesson →An introduction to T-SQL: what it is, how it relates to standard SQL, and where it's used in real database systems.
Start lesson →How to install SQL Server Express and SQL Server Management Studio (SSMS) to start writing and running T-SQL queries.
Start lesson →Learn the SELECT statement in T-SQL: selecting specific columns, using aliases, and selecting all columns with the asterisk.
Start lesson →Learn how to filter query results in T-SQL using the WHERE clause, comparison operators, AND/OR, and pattern matching with LIKE.
Start lesson →Learn how to sort query results in T-SQL using ORDER BY, ASC, DESC, and sorting by multiple columns.
Start lesson →Learn T-SQL aggregate functions: COUNT, SUM, AVG, MIN, and MAX, with examples of each.
Start lesson →Learn GROUP BY for grouping rows in T-SQL, and HAVING for filtering aggregated groups.
Start lesson →Learn T-SQL joins: INNER JOIN, LEFT JOIN, RIGHT JOIN, and FULL JOIN, with examples of each.
Start lesson →Learn T-SQL subqueries: scalar subqueries, subqueries in WHERE with IN/EXISTS, and correlated subqueries.
Start lesson →Learn how to insert, update, and delete rows in T-SQL, and why a WHERE clause is critical for UPDATE and DELETE.
Start lesson →Learn T-SQL data types (INT, VARCHAR, DATETIME, DECIMAL) and constraints (PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE).
Start lesson →Learn how to create and use views in T-SQL to simplify complex queries and control data access.
Start lesson →Learn how to create and execute stored procedures in T-SQL, including parameters and output parameters.
Start lesson →Learn how to create scalar and table-valued user-defined functions in T-SQL.
Start lesson →Learn how T-SQL triggers work, including AFTER triggers, and common use cases like auditing changes.
Start lesson →Learn T-SQL transactions: BEGIN TRANSACTION, COMMIT, and ROLLBACK, and why they matter for data integrity.
Start lesson →Learn T-SQL error handling using TRY...CATCH, ERROR_MESSAGE(), and combining it with transactions.
Start lesson →An introduction to PHP: what server-side scripting means, why PHP is popular, and how it fits into a web page's lifecycle.
Start lesson →How to install a local PHP development environment using XAMPP or PHP's built-in server, so you can run .php files.
Start lesson →Learn PHP syntax fundamentals: tags, statements, semicolons, and comments.
Start lesson →Learn PHP's core data types: string, integer, float, boolean, array, and null, and how PHP's loose typing works.
Start lesson →Learn PHP operators: arithmetic, comparison (== vs ===), logical, and the null coalescing operator.
Start lesson →Learn if, elseif, else, and switch statements in PHP, plus the ternary operator for concise conditions.
Start lesson →Learn PHP loops: for, while, do-while, and foreach, with practical array iteration examples.
Start lesson →Learn PHP arrays: indexed arrays, associative arrays, multidimensional arrays, and common array functions.
Start lesson →Learn how to define and call functions in PHP, including default parameters, type hints, and return types.
Start lesson →Learn PHP string handling: single vs double quotes, concatenation, and common string functions like strlen, str_replace, and substr.
Start lesson →Learn how PHP handles form submissions using $_GET and $_POST superglobals, and when to use each.
Start lesson →Learn how PHP sessions and cookies work, including session_start(), storing session data, and setting cookies.
Start lesson →Learn how to read and write files in PHP using fopen, fwrite, fread, and file_get_contents.
Start lesson →Learn how to define classes and create objects in PHP, including properties, methods, and constructors.
Start lesson →Learn PHP class inheritance with extends, and interfaces with implements, including abstract classes.
Start lesson →Learn PHP exception handling with try, catch, throw, and finally, including custom exception classes.
Start lesson →Learn how to connect PHP to a MySQL database using PDO, including connection setup and basic error handling.
Start lesson →Learn how to perform CRUD operations (Create, Read, Update, Delete) in PHP using PDO prepared statements.
Start lesson →Learn PHP security fundamentals: preventing SQL injection, XSS, and safely handling passwords with password_hash.
Start lesson →An introduction to JSON: what it is, why it's used, and where you'll encounter it in web development.
Start lesson →Learn the strict syntax rules of JSON: double-quoted keys, colons, commas, and the two core structures — objects and arrays.
Start lesson →Learn the six JSON data types: string, number, boolean, null, object, and array, with examples of each.
Start lesson →Learn how to nest objects and arrays inside JSON to model complex, hierarchical data structures.
Start lesson →Learn how to use arrays in JSON to represent ordered lists of values or objects.
Start lesson →Learn how to parse JSON strings into JavaScript objects using JSON.parse, and handle parsing errors safely.
Start lesson →Learn how to convert JavaScript objects into JSON strings using JSON.stringify, including formatting options.
Start lesson →Compare JSON and XML: syntax differences, verbosity, and why JSON has become the dominant format for web APIs.
Start lesson →Learn how to fetch JSON data from a web API using JavaScript's fetch function, and handle the response.
Start lesson →Learn the basics of validating JSON data and an introduction to JSON Schema for describing expected structure.
Start lesson →An introduction to XML: what it is, how it differs from HTML, and where it's commonly used today.
Start lesson →Learn the core syntax rules of XML: a single root element, matching tags, case sensitivity, and proper nesting.
Start lesson →Learn the difference between XML elements and attributes, and when to use each to represent data.
Start lesson →Understand how XML documents form a tree structure with parent, child, and sibling relationships between elements.
Start lesson →Learn the difference between well-formed XML (correct syntax) and valid XML (matches a defined schema or DTD).
Start lesson →Learn the basics of DTD (Document Type Definition) for validating the structure of XML documents.
Start lesson →Learn the basics of XML Schema (XSD): defining element types, structure, and why it improved on DTDs.
Start lesson →Learn XPath basics for navigating and selecting elements in an XML document.
Start lesson →Learn the basics of XSLT for transforming XML documents into HTML or other formats.
Start lesson →Learn the two main approaches to parsing XML programmatically: the DOM (tree-based) and SAX (event-based, streaming) models.
Start lesson →Compare XML and JSON directly: verbosity, capabilities, and when XML remains the better choice over JSON.
Start lesson →An introduction to software testing: what it is, why it matters, and the mindset that makes a good tester effective.
Start lesson →Learn how software testing fits into the Software Development Life Cycle (SDLC), and why early testing matters.
Start lesson →Compare manual and automated software testing, including their respective strengths and when to use each.
Start lesson →Learn the four levels of software testing: unit, integration, system, and acceptance testing.
Start lesson →Learn the difference between black box testing (behaviour-focused) and white box testing (code-structure-focused).
Start lesson →Learn how to write clear, effective test cases, including preconditions, steps, and expected results.
Start lesson →Learn how to write a software test plan, including scope, objectives, resources, and entry/exit criteria.
Start lesson →Learn functional testing: verifying software features work according to their specified requirements.
Start lesson →Learn about non-functional testing types: performance, security, usability, and reliability testing.
Start lesson →Learn regression testing: why it matters after every code change, and how automation makes it practical at scale.
Start lesson →Learn the bug life cycle and how to write an effective defect report, including reproduction steps and severity.
Start lesson →Learn the basics of test automation: what makes a good candidate for automation and common tool categories.
Start lesson →An introduction to Selenium WebDriver for automating browser-based tests, with a simple example.
Start lesson →Learn how unit testing frameworks like JUnit and PyTest work, including assertions and test structure.
Start lesson →Learn how testing fits into agile development and CI/CD pipelines through continuous testing practices.
Start lesson →Learn common software testing metrics: test coverage, pass/fail rate, and defect density, and how to report them.
Start lesson →An introduction to cloud computing: what it is, its core characteristics, and why it has transformed how businesses build software.
Start lesson →Learn the three cloud service models: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS).
Start lesson →Learn the cloud deployment models: public, private, hybrid, and multi-cloud, and when each is appropriate.
Start lesson →An overview of the major cloud providers: Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).
Start lesson →Learn how virtual machines and containers work, and the key differences between them in cloud computing.
Start lesson →Learn the main types of cloud storage: object storage, block storage, and file storage, and when to use each.
Start lesson →Learn cloud networking basics: virtual private clouds, subnets, and security groups/firewalls.
Start lesson →Learn about cloud compute services: virtual machines, managed container services, and auto-scaling.
Start lesson →Learn about managed cloud database services, including relational and NoSQL options.
Start lesson →Learn the difference between vertical and horizontal scaling, and how elasticity enables automatic scaling in the cloud.
Start lesson →Learn cloud security fundamentals, including the shared responsibility model and core security practices.
Start lesson →Learn Identity and Access Management (IAM) basics: users, roles, policies, and the principle of least privilege.
Start lesson →Learn serverless computing: how Functions-as-a-Service (FaaS) works, and its trade-offs compared to traditional servers.
Start lesson →Learn how DevOps and CI/CD pipelines work in cloud environments, automating build, test, and deployment.
Start lesson →Learn cloud cost management fundamentals: monitoring spend, right-sizing resources, and common cost pitfalls.
Start lesson →Learn common cloud migration strategies: rehosting, replatforming, and refactoring, and how to choose between them.
Start lesson →