... student should be able to interpret teacher-provided solution requirements and designs and use appropriate features of an object-oriented programming language to develop working software modules.
-- VCE Applied Computing Study Design 2025-2028
Resources related to this Area of Study elsewhere on this site:
At FHS we will be using Python as our main programming language in VCE Computing and it is required that students complete their Unit 3 Outcome 1 SAC using Python.
You may use another environment for your SAT project provided you have approval from your teacher.
This outcome is covered in Software Development VCE Units 3&4 by Bass, Dennis, & Keane (2025) chapters 1 and 2.
A sequence of small coding tasks
Python and Code analysis Tests
A SAC where you create, document and test working modules "in response to teacher-provided designs"
TODO: Using AI in programming
Creating GUIs with Python & Flet
More programming advice and generic exercises in our Programming Page.
Python Tutor - will step through (basic) Python code and visualise how the program is executed and the data structures built & used.
Grok Learning: Python Part 1 & Part 2
Good support and given for holiday homework in Dec 2024 - Jan 2025Khan Academy: Intro to CS with Python,
AP CS Principles
Textbook - A practical intro to Python Programming
Data Types (pptx) [Ch1]
Data Structures (pptx) [Ch1]
Naming Conventions (pptx) [Ch1]
Pseudocode (pptx) [Ch1]
Data Dictionaries (pptx) [Ch1]
XML (pptx) [Ch1]
Mockups [Ch1]
Procedures, Functions, etc (pptx) [Ch2]
Trace Tables & Desk Checks (pptx) [Ch2]
Test Data (pptx) [Ch2]
Types of Errors and Debugging (??) [Ch2]
Data Validation (pptx) [Ch2]
Linear and Binary Searching (pptx) [Ch2]
Selection Sort and Quicksort (ADD) [Ch2]
Creating GUIs with PySimpleGUI
Tk vs Ttk - almost all of the widgets (screenshot in slides)
Counting button presses, Button: Bind & Command
Listbox + Scrollbar (minimum example) [Also see ScrolledText]
Menubar and Spinbox (overly simple date picker!)
Hash functions are everywhere in software. They form two categories: Cryptographic and non-Cryptographic hashes.
All hashes are algorithms that take an arbitrary digital object (which is just a long, binary number) and return a fixed length hash of that object. The hashes are designed to be:
noninvertible - you can find the hash of an object, but not the object from the hash
"spread out" the hashes of two similar objects are very different and all hashes are used roughly equally (the space of hashes is fully exploited). This is to avoid hash collisions.
Cryptographic hashes are used for digitally signing files or to store passwords/keys (preferably salted). They are designed to be slow to prevent brute force attacks.
Non-cryptographic hashes are used to create hash tables for use in Associative Arrays, Objects, etc... in programming languages. (In Python, this is the dict, set, and all instances of classes).
Videos: Cryptographic: Computerphile: Hashing Algorithms and Security, SHA, How Not to store Passwords.
Hash Tables: Introduction to hash tables (including querying and collisions). Python: Modern Dictionaries (long, but worth it)
Articles: The moment when you realize every server in the world is vulnerable, Password Hashing, SHAttered
Qt (pronounced "q.t." or "cute") is one of the major GUI frameworks. It is a native C++ library, but there are bindings for other languages. Python has recently (last few years) received a lot of support from the parent company of Qt.
Tutorials:
Definition: a process or set of rules to be followed in calculations or other problem-solving operations, especially by a computer.
Part of SAT Criteria 5 is "Documents the efficient use of a complex algorithm in the solution." In 2016 this explicitly required a sorting algorithm, which is a hint at the expected complexity level.
The named algorithms you are expected to know are Linear & Binary Search (U3O1) and Selection Sort & Quicksort (U4O1). But designing and analysing algorithms is a key skill - in the exam using Pseudocode and Trace tables. Hashes are another type of algorithm and you should know the general idea behind them and their uses, but not any of the specific algorithms.
Binary Search: TODO add new
The sorting algorithms in the study design are
Selection Sort - A good base case of reasonable sorting algorithms
Average: O(n2) comparisons, O(n) swaps
Quicksort - A commonly used recursive algorithm
Average: O(n log(n)) comparisons
also available in iterative form (e.g., here)
Other algorithms worth looking at are
Bubble Sort - simple to implement
Insertion Sort - the twin to Selection Sort - good for data streams
Merge Sort - A good example to introduce recursive sorts
also available in iterative form
Tim Sort - the default sorting algorithm used by Python (and other languages). It's a pragmatic, adaptive merge sort.
Visualisation sites: sorting.at, sorting algorithms
Videos: Sound of Sorting (most in one video), AlgoRythmics, Sorting Algorithms Redux, Color Circle, etc
Book: Problem Solving with Algorithms and Data Structures (Python, CS focus): Searching and Sorting
Khan Academy: Their algorithm sequence is good, but is more of a CS than a SofDev focus.