Welcome to the Algorithm Design Fundamentals course! This curriculum teaches essential algorithm design skills using flowcharts and pseudocode following NESA HSC (New South Wales Higher School Certificate) standards. By the end of this course, you'll be able to design, visualize, and analyze algorithms with confidence.
| Lesson | Topic | Jupyter Notebook | Markdown | |
|---|---|---|---|---|
| 1 | What is an Algorithm? | π Notebook | π Markdown | π PDF |
| 2 | Variables and Input/Output | π Notebook | π Markdown | π PDF |
| 3 | Selection (If-Then-Else) | π Notebook | π Markdown | π PDF |
| 4 | Counting and Accumulating Loops (FOR) | π Notebook | π Markdown | π PDF |
| 5 | Conditional Loops (WHILE) | π Notebook | π Markdown | π PDF |
| 6 | Nested Loops | π Notebook | π Markdown | π PDF |
| 7 | Working with Lists (Arrays) | π Notebook | π Markdown | π PDF |
| 8 | Essential Algorithm Patterns | π Notebook | π Markdown | π PDF |
| 9 | Advanced Algorithm Patterns | π Notebook | π Markdown | π PDF |
Choose Your Format:
- π Jupyter Notebooks - Interactive, with embedded videos and diagrams (Recommended)
- π Markdown - Easy to read, great for reference
- π PDF - Print-friendly, perfect for offline study
Each lesson follows this format:
- Learning Objectives - What you'll master
- πΊ Video Content - Embedded YouTube explanations
- π Flowchart Diagrams - Visual algorithm representations
- π§ͺ Quick Check Questions - Multiple choice self-assessment
- βοΈ Practice Exercises - Hands-on pseudocode writing
Duration: 20-30 minutes
Define 'algorithm' and learn to visualize simple algorithms with flowcharts and pseudocode.
Key Concepts: Algorithm characteristics, Procedural design (Sequence, Selection, Iteration), Decomposition, Flowchart basics
Duration: 20-30 minutes
Learn to store data in variables and design algorithms using the IPO model.
Key Concepts: Variables, IPO Model (Input-Process-Output), Flowchart I/O symbols, HSC pseudocode conventions
Duration: 20-30 minutes
Design algorithms with conditional logic using flowcharts and pseudocode.
Key Concepts: Binary selection, Multiway selection (IF-ELSEIF-ELSE), Boolean logic (AND, OR, NOT), Comparison operators
Duration: 20-30 minutes
Master definite iteration using FOR loops in flowcharts and pseudocode.
Key Concepts: FOR...NEXT syntax, Counting pattern, Accumulator pattern, Loop tracing
Duration: 20-30 minutes
Design algorithms with indefinite iteration, sentinel values, and input validation.
Key Concepts: WHILE loops (pre-test), Sentinel values, Input validation pattern, Infinite loop prevention
Duration: 20-30 minutes
Decompose 2D problems and use nested iteration for grids, tables, and patterns.
Key Concepts: Nested loop structure, 2D thinking (rows Γ columns), Pattern printing, Iteration counting
Duration: 20-30 minutes
Select appropriate data structures and apply standard algorithms for collections.
Key Concepts: Array indexing (0-based), Traversal, Standard algorithms (sum, find max/min, search)
Duration: 20-30 minutes
Master the six fundamental algorithm patterns that form the building blocks of programming.
Key Concepts: Counter, Accumulator, Flag, Best-So-Far, Filter, Transform patterns
Duration: 20-30 minutes
Learn recursion, divide and conquer, and backtracking techniques.
Key Concepts: Recursion (base/recursive cases), Fibonacci example, Divide and conquer, Permutations, Backtracking
Learn-Fundamentals-of-Algorithm-Design/
βββ README.md # This file
βββ QUICKSTART_PDF.md # Quick guide for PDF conversion
βββ notes.md # Curriculum planning notes
βββ TEACHING_NOTES.md # Instructor guidance
βββ requirements.txt # Python dependencies
β
βββ lessons/ # π Interactive Jupyter Notebooks
β βββ lesson1_what_is_algorithm.ipynb
β βββ lesson2_variables_io.ipynb
β βββ lesson3_selection.ipynb
β βββ lesson4_for_loops.ipynb
β βββ lesson5_while_loops.ipynb
β βββ lesson6_nested_loops.ipynb
β βββ lesson7_lists.ipynb
β βββ lesson8_algorithm_patterns.ipynb
β βββ lesson9_advanced_patterns.ipynb
β
βββ other_formats/
β βββ markdown_lessons/ # π Markdown versions
β β βββ drawio_assets/ # Rendered diagram images
β β βββ lesson*.md
β βββ pdf_lessons/ # π PDF Documents
β βββ lesson*.pdf
β
βββ utils/ # π§ Utility Scripts
βββ md_to_pdf.py # Markdown to PDF converter
βββ ipynb_to_md.py # Notebook to Markdown converter
βββ drawio_to_png.py # Draw.io diagram renderer
βββ install_dependencies.sh # Dependency installer
βββ convert_lessons.sh # Quick conversion script
βββ README.md # Utils documentation
Each lesson is available in three formats to suit different learning styles:
Location: lessons/
- Interactive environment with embedded videos
- Flowchart diagrams rendered inline
- Multiple choice questions with expandable answers
- Best for hands-on learning
How to use:
- Navigate to
lessons/ - Open
lesson1_what_is_algorithm.ipynb - Follow instructions, watch videos, and complete exercises
Location: other_formats/markdown_lessons/
- Step-by-step written guides
- Easy to read in VSCode or GitHub
- Great for quick reference
- Includes all diagrams as images
How to use:
- Navigate to
other_formats/markdown_lessons/ - Open
lesson1_what_is_algorithm.md - Read and follow along
Location: other_formats/pdf_lessons/
- Print-friendly format
- Professional formatting with GitHub styling
- Perfect for offline study or classroom handouts
- Easy to annotate
How to use:
- Navigate to
other_formats/pdf_lessons/ - Download or open
lesson1_what_is_algorithm.pdf - Print or view on tablet/second screen
- Watch the videos - They provide essential context before reading
- Draw your own flowcharts - Recreate the diagrams by hand for better retention
- Write pseudocode yourself - Don't just read; practice writing
- Complete all quiz questions - They check understanding before moving on
- Trace through algorithms - Step through execution with sample data
- Build incrementally - Each lesson builds on previous concepts
- Practice the patterns - The 6 fundamental patterns solve most problems
Want to create your own PDFs from markdown files or update existing PDFs?
bash utils/convert_lessons.shThis will automatically:
- Install required dependencies (if needed)
- Convert all Jupyter notebooks to Markdown
- Render draw.io diagrams to PNG
- Convert Markdown to PDF with GitHub styling
- Save PDFs to
other_formats/pdf_lessons/directory
Install dependencies:
bash utils/install_dependencies.shConvert all lessons:
python3 utils/md_to_pdf.py --directory "other_formats/markdown_lessons" --output-dir "other_formats/pdf_lessons"Convert single lesson:
python3 utils/md_to_pdf.py --file "other_formats/markdown_lessons/lesson1_what_is_algorithm.md" --output-dir "other_formats/pdf_lessons"For more details, see utils/README.md or QUICKSTART_PDF.md
- Re-watch the videos - They often explain concepts multiple ways
- Review flowchart symbols - Each shape has a specific meaning
- Check pseudocode syntax - HSC conventions differ from Python
- Review previous lessons - Concepts build on each other
- Ask your instructor - We're here to help!
This course covers key algorithm design concepts aligned with the NSW HSC Software Design and Development syllabus:
β
Define and apply algorithm characteristics
β
Use procedural design principles (sequence, selection, iteration)
β
Apply decomposition to break down problems
β
Design algorithms using flowcharts (NESA standard symbols)
β
Write pseudocode following HSC conventions
β
Apply standard algorithm patterns
β
Understand recursion and advanced techniques
Key Skills for HSC:
- Drawing flowcharts with correct symbols
- Writing pseudocode with proper syntax (BEGIN/END, IF/ENDIF, FOR/NEXT, WHILE/ENDWHILE)
- Tracing algorithm execution with sample data
- Choosing appropriate control structures
- Applying algorithm patterns to solve problems
- Analyzing algorithm efficiency
Start with Lesson 1 in the lessons/ folder to begin your algorithm design journey!
Course maintained by: TempeHS
Version: 1.0
Last Updated: February 2026