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.

Data Structures and Abstract Data Types
Students move beyond primitive types to explore how complex data can be organized and manipulated efficiently using stacks, queues, and linked lists.
Understanding how data elements are stored in non contiguous memory locations and managed through pointers or references.
Exploring LIFO and FIFO structures and their practical applications in operating systems and print spooling.
Implementing hierarchical data structures to optimize searching and sorting operations.

Algorithm Analysis and Optimization
A deep dive into computational complexity, Big O notation, and the mathematical foundations of efficient code.
Evaluating the performance of algorithms as input size grows toward infinity.
Mastering the divide and conquer approach to solve complex problems by breaking them into smaller sub problems.
Comparing advanced algorithms like QuickSort and MergeSort against simpler heuristic approaches.

Networks and Distributed Systems
Examining how computers communicate across local and global networks using standardized protocols and layers.
Analyzing the layered architecture that allows diverse hardware to communicate over the internet.
Investigating how data is protected in transit through encryption and authentication methods.
Understanding the shift from local hardware to distributed, virtualized resources in the cloud.

Software Engineering Principles
Applying industry standard methodologies to manage the lifecycle of a software project from requirements to maintenance.
Comparing traditional linear development models with modern iterative approaches.
Implementing unit tests, integration tests, and debugging strategies to ensure robust code.
Using industry standard tools to track changes and collaborate on shared codebases.

Data Modeling and Management
Designing and implementing relational databases to store, retrieve, and analyze large datasets.
Creating Entity Relationship Diagrams and normalizing data to reduce redundancy.
Using Structured Query Language to perform complex filter, join, and aggregation operations.
Exploring the challenges of processing massive datasets and the privacy concerns they raise.

Artificial Intelligence and Future Trends
Investigating the mechanics of machine learning and the societal impact of emerging technologies.
Understanding how algorithms learn patterns from data through supervised and unsupervised learning.
Analyzing the displacement of labor and the accountability of autonomous systems.
Synthesizing course concepts to build a significant software solution for a real world problem.