Free degree-level programming lessons for careful independent study.
Degree Level Programmes

Programming 1

A first-semester Java programming portfolio course covering the software lifecycle, core programming constructs, testing, maintenance and professional practice.

Lessons

Lesson 1 · Starting the portfolio

Java Portfolio Setup

Install and organise a Java workspace, run a first program and start a reflective portfolio.

Lesson 2 · Programming culture

The Appropriate Programmer

Develop the disciplined habits needed to learn programming from first principles rather than chasing copied answers.

Lesson 3 · Build feedback

Compilation and Build Feedback

Learn how Java translation reports syntax, names, types and structure before a program can run.

Lesson 4 · State manipulation

Declaring and Assigning Variables

Understand declaration, assignment and reassignment as controlled changes to program state.

Lesson 5 · Program entry point

The Main Method

Understand why Java needs a precise starting point before any other code can run.

Lesson 6 · Flow of control

Calling and Returning with Methods

See a method call as a temporary jump away from the current flow, followed by a return to the caller.

Lesson 7 · Code organisation

Packages, Imports and Names

Understand how Java names code so programmers can use libraries without naming conflicts.

Lesson 8 · Requirements analysis

Requirements and User Stories

Turn a vague brief into functional requirements, constraints, user stories and acceptance checks.

Lesson 9 · Design

Program Design Before Java

Plan a small program using decomposition, pseudocode, data choices and a simple class outline before coding.

Lesson 10 · Programming foundations

Java Types, Variables and Expressions

Use Java primitive types, strings, variables, constants and expressions accurately.

Lesson 11 · Control flow

Selection and Iteration in Java

Build programs that choose between paths and repeat work using if, switch, while and for.

Lesson 12 · Safer branching

If Statements, Determinism and Safer Control Flow

Use if statements deliberately by understanding control-flow traces, state explosion, guard clauses and clearer alternatives.

Lesson 13 · Structure

Methods and Decomposition

Split Java programs into small methods with parameters, return values and single responsibilities.

Lesson 14 · Data handling

Arrays, Strings and Input

Collect, validate and process simple data using arrays, strings and scanner-style input.

Lesson 15 · Testing

Testing, Debugging and Maintenance

Design tests, use debugging evidence and make small maintenance changes without breaking behaviour.

Lesson 16 · Data persistence

File I/O and Persistence

Read and write simple text files so program data can survive after the program closes.

Lesson 17 · Professional practice

Professional, Ethical and Legal Practice

Connect beginner programming choices to copyright, privacy, accessibility, security and professional responsibility.

Lesson 18 · Portfolio project

Portfolio Artefact 1: Console Application

Build a small console program from requirements through design, implementation, testing and reflection.

Lesson 19 · Portfolio review

Portfolio Artefact 2 and Review

Improve a second artefact with better structure, testing and maintenance evidence.