Skip to content

Essential algorithm design skills using flowcharts and pseudocode following NESA HSC (New South Wales Higher School Certificate) standards.

License

Notifications You must be signed in to change notification settings

TempeHS/Learn-Fundamentals-of-Algorithm-Design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Learn Fundamentals of Algorithm Design 🧠

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.

πŸ“š Quick Access: All Lessons

Lesson Topic Jupyter Notebook Markdown PDF
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

πŸ“– Lesson Structure

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

Lesson Breakdown

Lesson 1: What is an Algorithm?

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


Lesson 2: Variables and Input/Output

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


Lesson 3: Selection (If-Then-Else)

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


Lesson 4: Counting and Accumulating Loops (FOR)

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


Lesson 5: Conditional Loops (WHILE)

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


Lesson 6: Nested Loops

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


Lesson 7: Working with Lists (Arrays)

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)


Lesson 8: Essential Algorithm Patterns

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


Lesson 9: Advanced Algorithm 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


πŸ“‚ Project Structure

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

πŸ“– Lesson Formats

Each lesson is available in three formats to suit different learning styles:

πŸ““ Jupyter Notebooks (Recommended)

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:

  1. Navigate to lessons/
  2. Open lesson1_what_is_algorithm.ipynb
  3. Follow instructions, watch videos, and complete exercises

πŸ“ Markdown

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:

  1. Navigate to other_formats/markdown_lessons/
  2. Open lesson1_what_is_algorithm.md
  3. Read and follow along

πŸ“„ PDF Documents

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:

  1. Navigate to other_formats/pdf_lessons/
  2. Download or open lesson1_what_is_algorithm.pdf
  3. Print or view on tablet/second screen

🎯 Learning Tips

  1. Watch the videos - They provide essential context before reading
  2. Draw your own flowcharts - Recreate the diagrams by hand for better retention
  3. Write pseudocode yourself - Don't just read; practice writing
  4. Complete all quiz questions - They check understanding before moving on
  5. Trace through algorithms - Step through execution with sample data
  6. Build incrementally - Each lesson builds on previous concepts
  7. Practice the patterns - The 6 fundamental patterns solve most problems

πŸ“„ Generating PDFs

Want to create your own PDFs from markdown files or update existing PDFs?

Quick Start

bash utils/convert_lessons.sh

This 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

Manual Conversion

Install dependencies:

bash utils/install_dependencies.sh

Convert 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

🀝 Getting Help

  1. Re-watch the videos - They often explain concepts multiple ways
  2. Review flowchart symbols - Each shape has a specific meaning
  3. Check pseudocode syntax - HSC conventions differ from Python
  4. Review previous lessons - Concepts build on each other
  5. Ask your instructor - We're here to help!

πŸ“ Curriculum Alignment (NESA HSC)

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

πŸŽ“ Assessment Focus Areas

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

⭐ Ready to Learn?

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

About

Essential algorithm design skills using flowcharts and pseudocode following NESA HSC (New South Wales Higher School Certificate) standards.

Topics

Resources

License

Stars

Watchers

Forks