⚠️

Work in progress — no notes or assignments have been uploaded yet. Check back soon.

Alberta Education · Computer Science · Grades 10–12

High School
Computer Science

A personal resource hub for Alberta CS teachers — notes and assignments I've put together myself, shared here for anyone teaching CS 10, CS 20, or CS 30 across the province.

Why CS Curriculum CLion IDE CS 10 CS 20 CS 30 Pathways Links

Rationale for CS
in the Age of AI

Artificial intelligence is reshaping every industry and aspect of daily life. Now more than ever, students need to understand the systems shaping their world — not just as consumers, but as critical thinkers, creators, and problem solvers. Computer science education builds the foundational literacy that makes this possible.

🧠

Computational Thinking

CS teaches students to decompose complex problems, recognize patterns, and design algorithmic solutions — cognitive skills that transfer across every discipline, from biology to business.

🤖

Understanding AI Systems

Students who understand how algorithms, data structures, and logic work are far better equipped to use AI tools critically, recognize their limitations, and evaluate their outputs responsibly.

🌐

Digital Citizenship

Programming literacy empowers students to participate meaningfully in civic and economic life — understanding privacy, security, and the societal impact of the technology they use every day.

🚀

Career Readiness

Software development, data science, cybersecurity, and AI engineering are among the fastest-growing fields globally. A CS foundation opens doors across virtually every career path.

⚖️

Ethics & Equity

Teaching CS with an emphasis on ethics ensures students think about who technology serves and who it harms — building a generation that creates technology responsibly and equitably.

🔧

Creative Problem-Solving

Programming is a creative discipline. Building functional software — even a simple game — gives students tangible proof of their own capability and fuels a growth mindset that extends far beyond class.

⚙️

Why C and C++?

C and C++ are taught because they demand intentionality. Explicit type declaration forces students to think carefully about the data they're working with. Manual memory management — allocating and freeing resources by hand — builds a deep understanding of how programs actually run. And pointers, while challenging at first, are essential groundwork for dynamic data structures like linked lists and trees that students encounter in later courses. Learning these concepts in C/C++ means students truly understand what higher-level languages are doing behind the scenes.

🦀

Rust as a Second or Third Language

Rust is a strong candidate for a second or third language in the CSE sequence. It shares C and C++'s focus on performance and low-level control, but introduces a modern ownership and borrowing system that enforces memory safety at compile time — eliminating entire classes of bugs that plague C/C++ programs. After learning manual memory management, exploring how Rust handles the same problems differently gives students a compelling real-world comparison and exposure to one of the fastest-growing languages in systems programming today.

The Alberta CS
Curriculum

Alberta's high school Computer Science program is a three-course sequence designed to take students from foundational digital concepts through to advanced programming and software design. The courses are structured to build sequentially, developing both technical skill and computational thinking across grades 10 through 12.


Each course aligns with Alberta Education's Program of Studies and emphasizes hands-on, project-based learning. Students develop fluency in structured programming languages — with C++ serving as the primary language across the sequence — while also exploring problem-solving, data management, and software design principles.


The curriculum prepares students for post-secondary study in computing, engineering, and technology fields, while also providing valuable analytical and logical skills for any academic path.

CS 10 — Foundations: Introduction to computing, hardware/software concepts, problem-solving strategies, and introductory programming logic.

CS 20 — Core Programming: Structured programming in C++, control structures, functions, arrays, and introductory data structures.

CS 30 — Advanced Concepts: Object-oriented programming, recursion, sorting/searching algorithms, file I/O, and software design patterns.

Assessment Focus: Portfolio-based evidence, practical coding assessments, and problem-solving scenarios aligned to Alberta Program of Studies outcomes.

Cross-Curricular Links: Mathematics (logic, algebra), Science (data analysis), and Social Studies (digital citizenship and ethics).

CLion IDE
for Schools

✓ Free — No License Required

CLion by JetBrains is a professional-grade C++ IDE available completely free through a JetBrains free account — no educational license application needed. Simply create a free account at jetbrains.com and CLion is included at no cost for personal, hobby, and educational use. Critically for school environments, it can be installed and run without requiring administrator privileges — removing a major barrier in managed school networks.

With intelligent code completion, real-time error highlighting, integrated debugging, and a polished interface, CLion gives students an industry-standard development experience from day one. It runs on Windows, macOS, and Linux, making it versatile across different lab and personal computing environments.

1

Create a Free JetBrains Account

Visit jetbrains.com and sign up for a free account. JetBrains offers CLion at no cost for personal, hobby, and educational use — no application process, no school email required. Just register and you're in.

2

Download the No-Install (Portable) Version

From the CLion download page, choose the .zip (no install) option. Extract it to any folder — your Desktop, Documents, or a USB drive. No administrator privileges required, making it ideal for managed school networks.

3

Compiler Included — No Separate Download Needed

The no-install CLion package bundles MinGW-w64 (GCC for Windows) directly — no separate compiler installation required. On macOS and Linux, the system compiler (Clang/GCC) is detected automatically. Students are coding within minutes of extracting the zip.

4

Launch & Sign In

Run clion.exe (or the equivalent on macOS/Linux) directly from the extracted folder. Sign in with the free JetBrains account created in Step 1. No installation wizard, no admin prompts.

5

Disable AI Features

Go to Settings → Tools → AI Assistant and uncheck Enable AI Assistant. Also navigate to Settings → Editor → Inlay Hints and disable any AI-powered suggestions. This keeps the focus on students writing and understanding their own code — a critical skill that AI completion shortcuts can undermine.

6

Create a New C++ Project & Start Coding

Select "New Project → C++ Executable". CLion auto-detects the bundled compiler and configures CMake for you. Students can save projects to OneDrive or Google Drive for seamless cloud backup across devices.

7

Explore Built-In Debugger & Tools

CLion includes a full visual debugger, memory view, and code analysis tools — giving students professional debugging experience that reinforces problem-solving and logical reasoning skills.

CS 10

Grade 10 · Foundations

Computer Science 10-Level Courses

The CSE 10-level courses introduce students to the world of computing — exploring how computers work, the nature of digital information, and the fundamentals of structured programming. Students develop the habits of mind that underpin all future CS learning across three complementary courses: CSE1010, CSE1110, and CSE1120.

CSE1010

Introduction to Computer Science

An overview of computing history, hardware and software components, the role of the operating system, binary representation, and the societal impact of technology. Students develop foundational digital literacy.

  • History of Computing
  • Hardware Components & Architecture
  • Binary & Number Systems
  • Operating Systems Overview
  • Social Impact of Technology

Add your note files here

  • Binary Conversion Practice
  • Computer Components Diagram
  • Technology Impact Research Report
  • CSE1010 Unit Assessment

Add your assignment files here

CSE1110

Structured Programming 1

Introduction to structured programming — sequential logic, variables, data types, input/output, and basic arithmetic. Students write their first C++ programs in CLion and learn to trace and debug simple code.

  • CLion Setup & First Program
  • Variables, Constants & Data Types
  • cin / cout — Basic I/O
  • Arithmetic & Assignment Operators
  • Tracing & Debugging Basics

Add your note files here

  • Hello World & Personalization Lab
  • Basic Calculator Program
  • Temperature / Unit Converter
  • CSE1110 Programming Test

Add your assignment files here

CSE1120

Structured Programming 2

Extends CSE1110 with selection structures (if/else, switch), repetition structures (for, while, do-while), Boolean logic, and an introduction to modular design. Students build progressively more complex programs.

  • Boolean Logic & Relational Operators
  • if / else if / else Structures
  • switch Statements
  • for / while / do-while Loops
  • Nested Structures & Loop Control

Add your note files here

  • Grade Classifier Program
  • Number Guessing Game
  • Multiplication Table Generator
  • CSE1120 Unit Exam

Add your assignment files here

CS 20

Grade 11 · Intermediate

Computer Science 20-Level Courses

The CSE 20-level courses develop students' programming proficiency through modular design, data structures, and applied problem-solving in C++. Students work across five courses — CSE2010 through CSE2140 — building increasingly sophisticated programs using CLion.

CSE2010

Computer Science 2

Broadens understanding of computer systems — memory management, data representation, the software development lifecycle, and an introduction to algorithm analysis and efficiency.

  • Memory & Data Representation
  • Software Development Lifecycle
  • Algorithm Efficiency — Introduction
  • Debugging Strategies

Add your note files here

  • SDLC Case Study Analysis
  • Data Representation Activity
  • CSE2010 Assessment

Add your assignment files here

CSE2110

Procedural Programming 1

Functions, parameter passing (by value and reference), return types, variable scope, and top-down modular design. Students build programs composed of well-defined, reusable functions.

  • Function Definition & Prototypes
  • Pass by Value vs Reference
  • Return Types & void Functions
  • Variable Scope & Lifetime
  • Top-Down Modular Design

Add your note files here

  • Math Function Library
  • Menu-Driven Program Lab
  • Modular Design Project
  • CSE2110 Programming Test

Add your assignment files here

CSE2120

Data Structures 1

One and two-dimensional arrays, parallel arrays, string manipulation (std::string), and passing arrays to functions. Students apply arrays to real-world data management and sorting problems.

  • 1D Arrays — Declaration & Traversal
  • 2D Arrays & Matrices
  • Parallel Arrays
  • std::string Functions
  • Passing Arrays to Functions

Add your note files here

  • Student Gradebook Program
  • Word Frequency Counter
  • Tic-Tac-Toe (2D Array Project)
  • CSE2120 Unit Exam

Add your assignment files here

CSE2130

Files & File Structures

Reading and writing text files using fstream, sequential file processing, CSV data handling, data validation, and designing programs that persist information between runs.

  • ifstream & ofstream
  • Sequential File Processing
  • Reading & Writing CSV Files
  • Data Validation & Error Handling

Add your note files here

  • Contact Book Application
  • CSV Data Processor Lab
  • File-Based Quiz Program
  • CSE2130 Assessment

Add your assignment files here

CSE2140

Second Language Programming 1

Introduction to a second programming language, reinforcing transferable programming concepts and highlighting how syntax, structure, and paradigms differ across languages. Students apply existing problem-solving skills in a new language context.

  • Why Learn a Second Language?
  • Language Syntax Comparison
  • Variables & I/O in the New Language
  • Control Structures — Syntax Transfer
  • Functions in the New Language

Add your note files here

  • Hello World — Language Comparison
  • Port a C++ Program to New Language
  • Language Feature Exploration Lab
  • CSE2140 Unit Exam

Add your assignment files here

CS 30

Grade 12 · Advanced

Computer Science 30-Level Courses

The CSE 30-level courses challenge students with advanced programming concepts — object-oriented design, recursion, dynamic data structures, and algorithm analysis. Students work across eight courses (CSE3010–CSE3330) and engage in substantial software projects that mirror real-world development practice.

CSE3010

Computer Science 3

Explores advanced computing concepts — operating system internals, parallel processing, network fundamentals, and the social and ethical implications of emerging technologies including AI.

  • Advanced OS Concepts
  • Parallel & Concurrent Processing
  • Networking Fundamentals
  • AI & Emerging Technology Ethics

Add your note files here

  • Emerging Tech Research Report
  • AI Ethics Seminar Activity
  • CSE3010 Assessment

Add your assignment files here

CSE3110

Iterative Algorithm 1

Advanced sorting algorithms using iterative approaches — merge sort, quicksort — and Big-O notation for algorithm analysis. Students compare performance empirically and select algorithms based on context.

  • Big-O Notation Introduction
  • Merge Sort — Divide & Conquer
  • Quicksort Algorithm
  • Algorithm Performance Comparison

Add your note files here

  • Sorting Algorithm Visualizer
  • Performance Benchmarking Lab
  • Algorithm Selection Report
  • CSE3110 Unit Exam

Add your assignment files here

CSE3120

Object-Oriented Programming 1

Classes, objects, encapsulation, constructors, destructors, and designing programs using OOP principles in C++. Students create well-structured class hierarchies and apply object-oriented thinking to program design.

  • Classes vs Structs in C++
  • Constructors & Destructors
  • Encapsulation & Access Modifiers
  • Inheritance & Derived Classes
  • Polymorphism & Virtual Functions

Add your note files here

  • BankAccount Class Design Lab
  • Animal Hierarchy — Inheritance Project
  • OOP Design Challenge
  • CSE3120 Unit Exam

Add your assignment files here

CSE3310

Recursive Algorithms 1

Recursive thinking, base cases, call stack visualization, and applying recursion to classic problems — factorials, Fibonacci, binary search, Tower of Hanoi, and recursive backtracking.

  • Recursive Thinking & Base Cases
  • The Call Stack — Visualization
  • Classic Recursive Problems
  • Recursion vs Iteration Tradeoffs
  • Tower of Hanoi Walkthrough

Add your note files here

  • Recursive Function Set Lab
  • Fractal Drawing with Recursion
  • Maze Solver — Recursive Backtracking
  • CSE3310 Assessment

Add your assignment files here

CSE3320

Dynamic Data Structures 1

Pointers, dynamic memory allocation, linked lists, stacks, queues, and an introduction to binary trees. Students choose and implement appropriate dynamic structures for real problem contexts.

  • Pointers & Dynamic Memory
  • Linked Lists — Design & Operations
  • Stacks & Queue ADTs
  • Introduction to Binary Trees
  • STL Containers Overview

Add your note files here

  • Linked List Implementation Lab
  • Stack-Based Expression Evaluator
  • Final Capstone Project
  • CSE3320 Portfolio Submission

Add your assignment files here

CSE3020

Computer Science 4

An advanced exploration of computing systems — distributed computing, cloud architecture, cybersecurity principles, and the ethical, legal, and societal dimensions of emerging technologies at scale.

  • Distributed & Cloud Computing
  • Cybersecurity — Advanced Concepts
  • Legal & Ethical Frameworks in Tech
  • Emerging Technologies Survey

Add your note files here

  • Emerging Tech Research & Presentation
  • Cybersecurity Threat Analysis
  • CSE3020 Assessment

Add your assignment files here

CSE3140

Second Language Programming 2

Deepens proficiency in the second programming language introduced in CSE2140 — exploring more advanced language features, data structures, and paradigms. Students build more sophisticated programs and compare design patterns across languages.

  • Advanced Language Features
  • Data Structures in the Second Language
  • Object-Oriented vs Other Paradigms
  • Cross-Language Design Patterns

Add your note files here

  • Advanced Program in Second Language
  • Language Paradigm Comparison Report
  • CSE3140 Unit Exam

Add your assignment files here

CSE3330

Recursive Algorithms 2

Extends CSE3310 with more complex recursive applications — recursive data structures, tree traversal algorithms, divide-and-conquer strategies, and dynamic programming as an optimization of recursive approaches.

  • Recursive Data Structures
  • Tree Traversal — Pre/In/Post-Order
  • Divide & Conquer Strategies
  • Introduction to Dynamic Programming
  • Memoization Techniques

Add your note files here

  • Binary Search Tree Implementation
  • Tree Traversal Lab
  • Dynamic Programming Problem Set
  • CSE3330 Unit Exam

Add your assignment files here

Module Distribution
by Pathway

This is how I plan out the modules for CS 10-3 and CS 10-5. Both pathways share the same 10-level foundation, but diverge at the 20-level — with 10-5 students moving into more advanced modules sooner. The tables below outline which CSE modules are covered at each level for each pathway.

Note: Tracking modules becomes complex at the 20-level and beyond. Not every student completes all credits from a previous course before enrolling in the next, which often results in catch-up work or credit recovery alongside new content.

Comp Sci 10

Both Pathways

10-3

CSE1010 CSE1110 CSE1120

10-5

CSE1010 CSE1110 CSE1120 CSE2110 CSE2120

Comp Sci 20

After 10-3 or 10-5

If took 10-3

CSE2010 CSE2110 CSE2120 CSE2130 CSE2140

If took 10-5

CSE2010 CSE3110 CSE3120 CSE2130 CSE2140

Comp Sci 30

After 10-3 or 10-5

If took 10-3

CSE3010 CSE3110 CSE3120 CSE3310 CSE3320 CSE3140 (if C++ is new)

If took 10-5

CSE3010 CSE3310 CSE3320 CSE3020 CSE3330 CSE3140 (if C++ is new)
⚠️

Prerequisite Tracking Challenge

Once students move past the 10-level, the module list becomes complex to track across both pathways. A common real-world challenge is that not every student fully completes all credits from a given course before enrolling in the next level — creating situations where catch-up work or formal credit recovery needs to happen alongside new content. The prerequisite diagram in the accompanying document illustrates how the modules chain together across the full sequence.