Canada · Ontario Curriculum Expectations
Grade 10 Computer Science
Students transition from block based environments to text based programming while exploring the infrastructure of the digital world. The course emphasizes logical decomposition, ethical technology use, and the iterative design process to solve real world problems.

01Algorithms and Logical Decomposition
Explore the foundational logic that governs computer processing and learn to break complex problems into manageable steps.
Define what an algorithm is and identify its key characteristics through real-world examples.
Learn various techniques to break down complex problems into smaller, more manageable sub-problems.
Analyze how different sets of instructions can reach the same goal with varying levels of speed and resource usage, focusing on time complexity.
Investigate how algorithms utilize memory and other resources, understanding the trade-offs between time and space.
Learn to represent algorithms visually using flowcharts and textually using pseudocode before writing actual code.
Master the use of conditional statements to control the flow of a program based on specific data inputs.
Implement iterative control structures to repeat blocks of code efficiently.
Combine conditional statements and loops to create more complex and powerful program logic.
Explore the concept of recursion as an alternative to iteration for solving certain problems.
Compare and contrast linear and binary search algorithms, understanding their efficiency and use cases.
Introduce basic sorting algorithms like selection sort and bubble sort, focusing on their mechanics and efficiency.

02Programming Paradigms and Syntax
Transition into text based programming languages and learn the syntax and structure required for software development.
Get acquainted with the basic syntax and structure of a chosen text-based programming language (e.g., Python, Java).
Learn how computers store different types of information and the importance of choosing the correct data structure for basic values.
Understand arithmetic, relational, and logical operators and how to combine them to form expressions.
Learn how to get input from users and display output, enabling interactive programs.
Explore how to store collections of data using lists and arrays, and perform operations on them.
Understand how to store data in key-value pairs and introduce the concept of objects for structured data.
Encapsulate logic into reusable functions to create cleaner and more maintainable code bases.
Learn how to pass information into functions and receive results back, enabling flexible and powerful code.
Explore how to leverage existing code libraries and Application Programming Interfaces (APIs) to extend program functionality.
Develop strategies for identifying and fixing syntax errors using common debugging tools and techniques.
Learn to identify and correct logic errors by designing effective test cases and understanding program behavior.

03Data and Information Systems
Investigate how digital information is represented, stored, and analyzed to drive decision making.
Understand how all digital content is ultimately represented as sequences of bits and bytes, starting with binary numbers.
Explore hexadecimal and other number systems used in computing and their conversion to binary and decimal.
Explore how characters, text, and images are encoded and stored digitally.
Understand the digital representation of sound and video, including sampling, quantization, and codecs.
Investigate methods used to reduce the size of digital files, including lossless and lossy compression.
Understand the fundamental concepts of databases, including tables, fields, and records, and their role in information systems.
Learn basic SQL commands to retrieve, filter, and sort data from a relational database.
Explore the principles of effective data visualization to communicate insights clearly and accurately.
Use software tools to transform raw data into visual formats that reveal patterns and trends.
Examine the characteristics of big data (volume, velocity, variety) and its implications for analysis.
Explore fundamental concepts of machine learning, including supervised and unsupervised learning.

04Networks and the Internet
Examine the physical and logical infrastructure that allows computers to communicate across the globe.
Understand the basic components of a computer network and different network topologies.
Identify and explain the function of common network hardware components like routers, switches, and modems.
Explore the structure and function of the internet as a global network, including its history and key organizations.
Understand how devices are identified on a network using IP addresses and how the Domain Name System (DNS) translates human-readable names.
Analyze the rules that govern how data packets travel across complex networks without getting lost, focusing on TCP/IP.
Explore the protocols that power the World Wide Web and the importance of secure communication.
Investigate the basic principles of cryptography, including symmetric and asymmetric encryption.
Identify common cyber threats (e.g., malware, phishing) and understand system vulnerabilities.
Learn and apply best practices for protecting personal and organizational data and systems.
Introduce the fundamental concepts of digital forensics, including evidence collection and analysis.

05Impacts of Computing on Society
Critically evaluate how technological advancements reshape culture, equity, and the environment.
Analyze the barriers to technology access and how they impact socio-economic opportunities.
Explore principles of inclusive design to ensure technology is accessible to individuals with diverse needs.
Examine how biases in data collection and algorithmic design can lead to unfair or discriminatory outcomes.
Discuss the broader economic and social implications of artificial intelligence and increasing automation.
Explore the tension between individual privacy rights and the collection of personal data by governments and corporations.
Understand concepts of copyright, patents, and open-source licensing in the context of software and digital content.
Examine the impact of cyberbullying and develop strategies for responsible and ethical online behavior.
Investigate the environmental footprint of computing, including energy consumption, e-waste, and sustainable practices.

06Collaborative Software Development
Apply the full software development life cycle to create a digital solution for a community problem.
Focus on identifying real-world problems and gathering authentic feedback from potential users to inform design.
Learn to translate user needs and problem statements into clear, actionable software requirements.
Learn to create low-fidelity and high-fidelity prototypes and apply iterative design principles.
Learn to manage a group project using iterative cycles and collaborative tools, specifically focusing on Git.
Understand agile principles and common team roles in a software development project.
Develop skills in breaking down projects into manageable tasks, assigning responsibilities, and tracking progress.
Implement testing strategies to ensure the quality, reliability, and functionality of software.
Learn to create clear and concise documentation for code and projects, enhancing maintainability and collaboration.
Practice gathering and incorporating user feedback to refine and improve software solutions.