41039 · Programming 1
September Session 2026 · Subject Outline · 41039

Programming 1

Java and Python, taught side by side, from your first line of code. No prior programming knowledge assumed — this subject is designed for people who have never written a program.

12 weeks 6cp · 150 hours 3 hours per week on campus Java Python
Subject code
41039
Duration
12 weeks
Labs start
Week 2
Pass mark
50% overall
01 · What this subject covers

Three ideas, then how to organise them

Weeks 2, 3 and 5 deliver the three concepts every general-purpose program is built from. Add input and output and you can write any program at all. Everything from Week 6 adds no fourth idea — it is about keeping those three manageable as programs grow.

Part 1 · Weeks 1–5

The three basic tools

State, decision and iteration — plus the input and output that connect a program to the world. This is SLO1, and it is the whole foundation.

  • Simplest working program & output
  • Data types & variables
  • Decisions & branching
  • Arrays & user input
  • Loops & iteration
Part 2 · Weeks 6–12

Organising bigger programs

No new primitives — just structure. Classes, methods, lists, files and inheritance are all ways of keeping state, decision and iteration under control at scale.

  • Classes & constructors
  • Methods, properties & access control
  • Lists & polymorphism
  • File input and output
  • OO techniques & structures
  • Inheritance & interfaces
Why two languages

Python shows you an idea with the least ceremony. Java shows you what that ceremony buys — types checked before the program runs, and errors caught at compile time rather than in front of a user. Seeing the same concept in both is the fastest way to tell a language feature apart from a programming idea.

02 · Subject learning outcomes

By the end of the session, you can

Write programs

  • SLO1 — Apply the basic programming concepts of state, iteration and decision
  • SLO2 — Solve computational problems using abstract modelling
  • SLO3 — Design and create simple functioning programs

Explain programs

  • SLO4 — Interpret, describe and document programs clearly
  • SLO5 — Reflect on programming decisions and formulate alternatives
Read this twice

Writing code is 55% of the marks. Explaining and reasoning about code is 45%. Students who treat this as a subject about typing code are consistently surprised by the other half.

03 · Assessment

How the final grade is calculated

Pass mark is 50% overall. All assessments are individual. Canvas → Assignments is authoritative for tasks and deadlines.

30%

Lab assessments

Exercises most weeks, marked automatically. Unlimited attempts — attempt 1 and attempt 101 score the same — but you must pass every test case in an exercise to get its marks. Due 11:55pm the Monday of the following week.

25%

Code comprehension

Four in-person orals, about three minutes each, run during lab classes. You are given a short piece of code and asked about it. The questions are released beforehand.

25%

Project

One program of roughly 500 lines, built progressively across the session. The only assessment touching all five SLOs, and the only one where you design the structure yourself.

20%

Exam

Take-home, open-book, one day. Tests understanding and application, not recall.

Code comprehension · four stages

Stage 1 in Week 4 (5%) · Stage 2 in Week 7 (5%) · Stage 3 in Week 11 (7%) · Stage 4 in Week 12 (8%). Timetabling permitting — confirm on Canvas.

Optional · 0% · Extension

Challenging free-form problems, sometimes requiring research beyond the subject. Worth 0% by itself, but can substitute for the lab assessments. Worth considering if the weekly exercises feel easy.

Academic integrity

All submitted code is analysed by similarity tools that examine how code works, not how it looks — renaming variables does not help. Researching a concept or an error message is encouraged and expected. Submitting code you cannot explain is not, and four times this session you will be asked to explain code out loud, in person. Reported cases go to a committee, not to teaching staff, and can take months to resolve. Ask for help early instead.

04 · Schedule

Twelve weeks at a glance

There is no lab in Week 1 — lab classes start in Week 2. Weekly topics follow the subject outline; exact assessment scheduling is confirmed on Canvas.

Part 1 · The three basic tools
Week 1 Simplest working program, and simple output JavaPython Your first program, variables and types, reading an error message. No lab this week.
Week 2 Data types and variables SLO1 · state · labs start this week
Week 3 Decisions and branching program flow SLO1 · decision
Week 4 Arrays and user inputCode comprehension 1 · 5% On Ed this week: methods in Java, functions in Python, and record classes
Week 5 Loops and iterative program flow SLO1 · iteration · with Weeks 2 and 3, this completes the foundation On Ed this week: object-oriented programming, classes and objects in Java and Python, enums, and advanced switch
Part 2 · Organising bigger programs
Week 6 Classes and constructors
Week 7 Methods, properties and access controlCode comprehension 2 · 5%
Week 8 Lists and polymorphism
Week 9 File input and output
Week 10 Object oriented programming techniques and structures
Week 11 Inheritance and interfacesCode comprehension 3 · 7%
Week 12 Review, and a preview of Programming 2Code comprehension 4 · 8%

Weekly topics come from the subject outline. Lab arrangements, session dates and the exact scheduling of assessments may be adjusted to suit our situation here — where anything differs, announcements and Canvas are authoritative.

05 · Materials

Where the subject actually happens

All subject material is on Ed. Work through the Lessons page top to bottom each week — lectures, readings and coding exercises are all there, and nothing needs installing: Ed gives you Java and Python in the browser.

Week 1

Introduction — Your First Program

What programming is, your first Java and Python programs, variables and types, and how to read an error message when it all goes wrong.

6 topics · 20 MCQs · lecture slides
Weeks 2–3

Choosing and Repeating

Booleans and conditionals, switch and match, every kind of loop in both languages, then arrays, lists, dicts, sets and tuples — and how Java bundles data before it has objects.

15 topics · 46 runnable · 8 exercises · lecture slides
Week 4

Methods, Functions and Records

Breaking a program into methods and functions, how arguments are passed in Java and Python, what a call does on the stack and the heap, and Java records for plain old data.

12 topics · 35 runnable · 8 exercises · 24 MCQs
Week 5

Classes, Objects and Enums

The principles of OOP, writing your own classes in Java and Python, static members, constructors and this, objects in memory, enums, and Java's newer switch.

12 topics · 35 runnable · 8 exercises · 24 MCQs
▶

Playground — run Java and Python

A real JVM and real CPython, running in your browser. Write a program, feed it input, run it. Nothing to install, nothing submitted — break things freely.

10 example programs · Java + Python
▶

Ed — Lessons

Lectures, readings and coding exercises. Run the code in the readings, change things, break things — refreshing restores the original, so you cannot damage anything.

Java + Python in the browser
?

Ed — Discussion board

Search first. Then a new thread, short descriptive title, public unless genuinely sensitive, and no code in the post. Not monitored over the weekend — get stuck on Friday, not Sunday night.

anonymous hides you from students, not staff
Optional local setup

You do not need it, but if you want to work offline: OpenJDK (the subject uses 23; anything after 14 works), Python 3 (Ed runs 3.12.7), and VS Code handles both.

How this subject runs

Flipped lectures → readings with runnable examples → practice exercises → a 1.5 hour lab weekly from Week 2 → assessed exercises, plus weekly drop-in sessions. The step people skip: when you get stuck, go back and review that specific topic, then try again.