About This Platform
A custom NSW HSC Software Engineering platform built at Tempe High School.
Who built this and why
This site is a bespoke learning platform created for students of the NSW Stage 6 Software Engineering course at Tempe High School. It is not a commercial product and is not affiliated with NESA — it is a classroom tool built to give students focused, syllabus-aligned practice in everything they need for the HSC examination and project.
The platform is designed and developed by Ben Jones (Mr Jones), Software Engineering teacher at Tempe High School.
A focused LMS for Software Engineering
The platform includes full Learning Management System functionality: 53 modules and 312 lessons from Year 9 foundations to HSC exam preparation, covering every core concept in the NSW Software Engineering syllabus — from algorithm design and OOP through to mechatronics, secure architecture, DevOps, and the mathematical foundations of the course. Each module is structured into lessons with a mix of explanation, worked examples, interactive coding exercises, and progress tracking. A syllabus tracker links outcomes and sub-points to the lessons that cover them and updates as students complete them.
Written-response activities use writing scaffolds aligned directly to the NESA key verbs (identify, describe, explain, analyse, evaluate, justify, construct…). Students are guided to structure responses the way HSC markers expect to see them.
What's on the platform
Past HSC Questions
Every question from the new Software Engineering exams plus selected SDD questions back to 2017, with marking criteria and sample responses — including the objective response question types from the 2025 NESA online examination (multiple choice, multiple answer, fill-in-the-blank dropdowns and matching grids).
Modelling Validators
Tight, NESA-specific validation of system modelling artifacts — Structure Charts, Data Flow Diagrams, Flowcharts, Class Diagrams, IPO Charts, Decision Trees, Storyboards and Pseudocode — all checked against NESA Course Specifications, not generic UML.
Mechatronics Calculator
A built-in Voltage & Current power-budget calculator for mechatronics projects — pick a power supply (RPi Pico, Arduino, ESP32, micro:bit, AA / LiPo battery packs or a custom supply), add components from a built-in library of sensors, motors and outputs, and instantly see total current draw, headroom and warnings against the supply rating.
Flip Cards (incl. PvP)
Practise 742 cards covering key terms and concepts in Learning, Quiz (multiple choice), Game, Prompt and Answer modes — the last two with a flip-and-self-mark or type-your-answer option — and challenge a classmate head-to-head in PvP with a shared challenge code.
Circuit Diagram Tool
Build mechatronics circuit diagrams with a built-in shape library of microcontrollers (RPi Pico, Arduino Uno, ESP32), sensors and driver modules, plus the NESA-specified symbols for power sources, switches, outputs and passive components. Wiring is checked pin by pin to catch unwired connection points, reverse polarity, swapped I2C lines and missing power or ground, and the tool auto-generates a Bill of Materials (BOM) from the components on the canvas.
Programming Challenges
314 in-browser challenges across Python, SQL, NESA pseudocode, HSC-style flowcharts and Cyber CTF, including 174 Python challenges. All include automated validation and instant feedback.
Cyber CTF
Solve 27 capture-the-flag challenges covering encoding, classical cryptography, XOR, hashing and RSA. Progressive hints support each investigation, with server-verified flags and full solution walkthroughs after completion.
Pseudocode Validator
Dedicated pseudocode validator that enforces NESA's uppercase keywords, matched structures (IF / ENDIF, WHILE / ENDWHILE, FOR / NEXT…) and the indentation conventions students are expected to use in HSC examination responses.
Documentation Tools
Structured editors and validators for Data Dictionaries and IPO tables that match exactly what NESA expects to see.
The stack
The platform is a server-rendered Python web application designed to run in any modern browser with no install required.
Backend & Data
- Python 3.13 + Flask 3, with Jinja templates and Blueprints
- PostgreSQL with SQLAlchemy ORM and Alembic migrations
- Redis for shared caching and rate-limit state
- Tantivy (Rust) full-text index behind site-wide search, rebuilt on every deploy
- Gunicorn application server hosted on Render.com
Browser Tools
- Bootstrap 6, vanilla JavaScript, PWA service worker
- Ace Editor for in-browser code editing (Python, SQL, pseudocode, C++ and C#)
- Pyodide — full Python running entirely client-side for execution and automated test-case validation
- sql.js (SQLite) — in-browser SQL execution and grading via WebAssembly
- Draw.io (diagrams.net) embedded for flowcharts, DFDs, structure charts, class diagrams and circuits
Delivery & Testing
- pytest for unit, integration, content and security tests
- Playwright for end-to-end browser tests, run in parallel batches
- mypy, pylint, ruff and ESLint static analysis, with architecture rules enforced as tests
- GitHub Actions for continuous integration on pushes and pull requests
-
Automatic deployment to Render.com from
main, released only when every check passes
Security
- GitHub OAuth and Flask-Login session management
- Global CSRF protection, nonce-based CSP, HTTPS and secure browser headers
- Redis-backed rate limiting, server-side input bounds and fresh administrator checks for privileged operations
- Bound database queries and defusedxml parsing for untrusted XML
- CodeQL, Bandit and hash-pinned production dependencies
By the numbers
Measured directly from first-party source and content — vendored libraries, minified assets and import statements are excluded. The pytest figure is the current collected test-case count.
Built at Tempe High School.
Spotted a bug or have an idea? .