Skip to content
Browse by Grade: Grade 12

Canada · Ontario Curriculum Expectations

Grade 12 Computer Science

This course prepares students for post secondary computer science by focusing on abstract data types, complex algorithm analysis, and the social implications of automation. Students develop professional grade software solutions while exploring the underlying hardware and networking protocols that power the modern web.

4 units·50 topics·Ages 17-18

01Data Structures and Abstract Data Types

13 topics·Term 1

Students move beyond primitive types to explore how complex data can be organized and manipulated efficiently using stacks, queues, and linked lists.

Introduction to Data Structures

Students will explore the fundamental concepts of data organization and the need for efficient data management in programming.

Concept MappingThink-Pair-Share
Dynamic Memory Allocation

Understanding how data elements are stored in non-contiguous memory locations and managed through pointers or references.

Problem-Based LearningSimulation Game
Linked Lists: Fundamentals

Students will learn the basic structure and operations of singly linked lists, including insertion and deletion.

Peer TeachingCollaborative Problem-Solving
Doubly and Circular Linked Lists

Exploring variations of linked lists and their specific use cases and implementation complexities.

JigsawCase Study Analysis
Stacks: LIFO Principle

Exploring LIFO structures and their practical applications in operating systems and print spooling.

Stations RotationSimulation Game
Queues: FIFO Principle

Understanding FIFO structures and their applications in task scheduling and buffer management.

Collaborative Problem-SolvingProblem-Based Learning
Binary Search Trees: Structure

Implementing hierarchical data structures to optimize searching and sorting operations.

Gallery WalkConcept Mapping
Tree Traversal Algorithms

Exploring different methods to visit nodes in a tree, such as in-order, pre-order, and post-order traversal.

Peer TeachingInquiry Circle
Balanced Trees: AVL and Red-Black

Understanding the importance of tree balancing for maintaining search efficiency and exploring self-balancing tree algorithms.

Case Study AnalysisProblem-Based Learning
Heaps and Priority Queues

Introducing heap data structures and their application in implementing efficient priority queues.

Simulation GameCollaborative Problem-Solving
Hash Tables and Hashing

Exploring hash tables for fast data retrieval and understanding collision resolution strategies.

Document MysteryInquiry Circle
Graphs: Representation and Traversal

Introduction to graph data structures, their representations (adjacency matrix/list), and basic traversal algorithms (BFS/DFS).

Concept MappingStations Rotation
Abstract Data Types (ADTs)

Understanding the concept of ADTs as a mathematical model for data structures, focusing on their interface rather than implementation.

Socratic SeminarThink-Pair-Share

02Algorithm Analysis and Optimization

13 topics·Term 2

A deep dive into computational complexity, Big O notation, and the mathematical foundations of efficient code.

Introduction to Algorithm Analysis

Students will learn the importance of evaluating algorithm efficiency and the metrics used for comparison.

Case Study AnalysisThink-Pair-Share
Big O Notation: Fundamentals

Evaluating the performance of algorithms as input size grows toward infinity.

Case Study AnalysisCollaborative Problem-Solving
Common Time Complexities

Understanding and comparing O(1), O(log n), O(n), O(n log n), O(n^2), and O(2^n) complexities with practical examples.

Gallery WalkSimulation Game
Space Complexity Analysis

Analyzing the memory usage of algorithms using Big O notation, considering auxiliary space.

Problem-Based LearningConcept Mapping
Recursive Problem Solving: Basics

Mastering the divide and conquer approach to solve complex problems by breaking them into smaller sub-problems.

Problem-Based LearningJigsaw
Recursion vs. Iteration

Comparing recursive and iterative solutions, focusing on their advantages, disadvantages, and performance implications.

Formal DebateThink-Pair-Share
Sorting Algorithms: Simple

Analyzing and implementing basic sorting algorithms like Bubble Sort, Selection Sort, and Insertion Sort.

Stations RotationPeer Teaching
Sorting Algorithms: Advanced (MergeSort)

Understanding the divide-and-conquer strategy of MergeSort and its O(n log n) complexity.

Inquiry CircleProblem-Based Learning
Sorting Algorithms: Advanced (QuickSort)

Exploring QuickSort, its pivot selection strategies, and average-case efficiency.

Collaborative Problem-SolvingSimulation Game
Searching Algorithms

Comparing linear search, binary search, and hash table lookups in terms of efficiency.

Stations RotationDocument Mystery
Greedy Algorithms

Introduction to greedy algorithms and their application in optimization problems, such as coin change or shortest path.

Case Study AnalysisProblem-Based Learning
Dynamic Programming

Exploring dynamic programming as a technique for solving complex problems by breaking them into overlapping subproblems.

Flipped ClassroomCollaborative Problem-Solving
Algorithm Design Strategies

Reviewing various algorithm design paradigms: brute force, divide and conquer, greedy, dynamic programming, and backtracking.

Project-Based LearningDecision Matrix

03Networks and Distributed Systems

13 topics·Term 3

Examining how computers communicate across local and global networks using standardized protocols and layers.

Introduction to Computer Networks

Students will explore the fundamental concepts of computer networks, including network topologies and types.

Concept MappingGallery Walk
The OSI Model and TCP/IP

Analyzing the layered architecture that allows diverse hardware to communicate over the internet.

Simulation GameJigsaw
Network Protocols: TCP and UDP

Understanding the differences between connection-oriented (TCP) and connectionless (UDP) protocols and their use cases.

Case Study AnalysisFormal Debate
IP Addressing and Routing

Exploring how IP addresses identify devices and how routers direct traffic across networks.

Problem-Based LearningSimulation Game
Domain Name System (DNS)

Understanding how domain names are translated into IP addresses and the hierarchical structure of DNS.

Document MysteryConcept Mapping
Network Security Fundamentals

Investigating basic network vulnerabilities and common security measures like firewalls and intrusion detection systems.

Escape RoomCase Study Analysis
Cryptography: Symmetric & Asymmetric

Investigating how data is protected in transit through encryption and authentication methods.

Problem-Based LearningSimulation Game
Digital Signatures and Certificates

Understanding how digital signatures ensure data integrity and authenticity, and the role of digital certificates.

Document MysterySocratic Seminar
Cloud Computing: Concepts

Understanding the shift from local hardware to distributed, virtualized resources in the cloud.

Decision MatrixCase Study Analysis
Cloud Security and Privacy

Examining the unique security and privacy challenges associated with cloud computing.

Philosophical ChairsFormal Debate
Distributed Systems and Microservices

Introduction to distributed systems architecture and the benefits of microservices for scalability and resilience.

Project-Based LearningCollaborative Problem-Solving
Edge Computing and IoT

Exploring the concepts of edge computing and its role in supporting the Internet of Things (IoT).

Case Study AnalysisInquiry Circle
Network Forensics and Incident Response

Introduction to techniques for investigating network security incidents and responding to breaches.

Simulation GameProblem-Based Learning

04Software Engineering Principles

11 topics·Term 4

Applying industry-standard methodologies to manage the lifecycle of a software project from requirements to maintenance.

Introduction to Software Engineering

Students will learn about the software development lifecycle and the importance of systematic approaches to building software.

Concept MappingThink-Pair-Share
Requirements Engineering

Understanding how to gather, analyze, and document user and system requirements for a software project.

Role PlayCase Study Analysis
Agile Methodologies

Comparing traditional linear development models with modern iterative approaches.

Role PlayCollaborative Problem-Solving
Waterfall and Hybrid Models

Exploring the traditional Waterfall model and hybrid approaches, identifying their strengths and weaknesses.

Decision MatrixFormal Debate
Software Design Principles

Learning about design patterns, modularity, cohesion, and coupling for creating maintainable and scalable code.

Concept MappingPeer Teaching
Quality Assurance and Testing

Implementing unit tests, integration tests, and debugging strategies to ensure robust code.

Peer TeachingInquiry Circle
Debugging and Error Handling

Mastering debugging techniques and implementing effective error handling mechanisms in software.

Problem-Based LearningCollaborative Problem-Solving
Version Control with Git

Using industry-standard tools to track changes and collaborate on shared codebases.

Project-Based LearningPeer Teaching
Code Review and Best Practices

Understanding the importance of code reviews, coding standards, and documentation for team collaboration and code quality.

Chalk TalkExpert Panel
Deployment and Maintenance

Exploring the final stages of the software lifecycle, including deployment strategies and ongoing maintenance.

Case Study AnalysisProject-Based Learning
Capstone Project Planning

Students will begin planning their capstone project, applying software engineering principles to define scope, requirements, and initial design.

Project-Based LearningDecision Matrix