Work in progress — no notes or assignments have been uploaded yet. Check back soon.
Alberta Education · Computer Science · Grades 10–12
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.
01 — Why Computer Science
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.
02 — Alberta Education
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).
03 — Development Environment
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.
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.
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.
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.
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.
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.
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.
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.
04 — Course Resources
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
Add your assignment files here
05 — Course Resources
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
Add your assignment files here
06 — Course Resources
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
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.
Add your note files here
Add your assignment files here
07 — Course Pathways
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.
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.
08 — External Resources
A small collection of external resources I've found valuable for teaching Alberta Computer Science.
Teaching Resource
Couprie's How I Teach Computer Science ↗A great resource, though slightly outdated, on starting a CS program in your school. Uses Processing — a simple language that gets visuals to the screen almost immediately, but lacks some of the low-level requirements for later modules. I used this as a starting point for many of my own assignments.
Official Curriculum
Alberta Education — CSE Program of Studies ↗The official Alberta Education Computing Science (CSE) Program of Studies on LearnAlberta. The authoritative source for course outcomes, module descriptions, and assessment guidelines across the full CSE sequence.
Teacher Community
CSTA Alberta Chapter ↗The Alberta chapter of the Computer Science Teachers Association — a community of CS educators across the province sharing resources, professional development opportunities, and advocacy for CS education in Alberta schools.
C Reference
C Programming Tutorial — GeeksforGeeks ↗A thorough C programming reference and tutorial series covering everything from basic syntax through to pointers, memory management, and data structures. Useful for students who want to read ahead or review concepts at their own pace.
C Exercises
C Programming Exercises — w3resource ↗A great resource for simple to complex algorithms to talk about and go over in class. The exercises are well-organized by topic and difficulty, making it easy to pull examples on the fly or assign targeted practice problems to students at any level.