Computer Science, Grade 12
NOTE
If desired, visit the canonical source for this curriculum.
Overall and Specific Expectations
Strand A. Programming Concepts and Skills
By the end of this course, students will:
A1. Data Types and Expressions
demonstrate the ability to use different data types and expressions when creating computer programs;
Link to original
A1.1
demonstrate the ability to use integer division and resultant remainders in computer programs;
Link to original
A1.2
demonstrate an understanding of type conversion (e.g., string-to-integer, character-to-integer, integer-to-character, floating point-to-integer, casting in an inheritance hierarchy);
Link to original
A1.3
demonstrate the ability to use non-numeric comparisons (e.g., strings, comparable interface) in computer programs;
Link to original
A1.4
demonstrate an understanding of the limitations of finite data representations (e.g., integer bounds, precision of floating-point real numbers, rounding errors) when designing algorithms;
Link to original
A1.5
describe and use one-dimensional arrays of compound data types (e.g., objects, structures, records) in a computer program.
Link to original
A2. Modular Programming
describe and use modular programming concepts and principles in the creation of computer programs;
Link to original
A2.1
create a modular program that is divided among multiple files (e.g., user-defined classes, libraries, modules);
Link to original
A2.2
use modular design concepts that support reusable code (e.g., encapsulation, inheritance, method overloading, method overriding, polymorphism);
Link to original
A2.3
demonstrate the ability to modify existing modular program code to enhance the functionality of a program.
Link to original
A3. Designing Algorithms
design and write algorithms and subprograms to solve a variety of problems;
Link to original
A3.1
demonstrate the ability to read from, and write to, an external file (e.g., text file, binary file, database, XML file) from within a computer program;
Link to original
A3.2
create linear and binary search algorithms to find data in an array;
Link to original
A3.3
create subprograms to insert and delete array elements;
Link to original
A3.4
create a sort algorithm (e.g., bubble, insertion, selection) to sort data in an array;
Link to original
A3.5
create algorithms to process elements in two-dimensional arrays (e.g., multiply each element by a constant, interchange elements, multiply matrices, process pixels in an image);
Link to original
A3.6
design a simple and efficient recursive algorithm (e.g., calculate a factorial, translate numbers into words, perform a merge sort, generate fractals, perform XML parsing).
Link to original
A4. Code Maintenance
use proper code maintenance techniques when creating computer programs.
Link to original
A4.1
work independently, using support documentation (e.g., IDE Help, tutorials, websites, user manuals), to resolve syntax issues during software development;
Link to original
A4.2
develop and implement a formal testing plan (e.g., unit testing, integration testing, regression testing) for a software project to ensure program correctness;
Link to original
A4.3
create fully documented program code according to industry standards (e.g., doc comments, docstrings, block comments, line comments);
Link to original
A4.4
create clear and maintainable external user documentation (e.g., Help files, training materials, user manuals).
Link to original
Strand B. Software Development
By the end of this course, students will:
B1. Project Management
demonstrate the ability to manage the software development process effectively, through all of its stages – planning, development, production, and closing;
Link to original
B1.1
create a software project plan by producing a software scope document and determining the tasks, deliverables, and schedule;
Link to original
B1.2
develop the software product according to the project plan (i.e., ensure that the software meets end user needs, functions as intended, and can be produced within quality standards, budget, and timelines);
Link to original
B1.3
produce the software according to specifications (i.e., code, test, deploy), and create user documentation and training materials;
Link to original
B1.4
use an appropriate project management tool (e.g., Gantt chart, PERT chart, calendar) to manage project components;
Link to original
B1.5
close the project (i.e., confirm that software meets all user requirements, deliver software in appropriate format, plan software support and maintenance);
Link to original
B1.6
review the management of the project (e.g., compare plan to actual performance, outline successes, make recommendations for improvement) and prepare a report in an appropriate format;
Link to original
B1.7
demonstrate the ability to use shared resources to manage source code effectively and securely (e.g., organize software components using shared files and folders with timestamps, and proper version control).
Link to original
B2. Software Project Contribution
apply standard project management techniques in the context of a student-managed team project.
Link to original
B2.1
demonstrate the ability to contribute, as a team member, to the planning, development, and production of a large software project;
Link to original
B2.2
demonstrate the ability to meet project goals and deadlines by managing individual time during a group project;
Link to original
B2.3
reflect on, and assess, team and individual progress during the project review.
Link to original
Strand C. Designing Modular Programs
By the end of this course, students will:
C1. Modular Design
demonstrate the ability to apply modular design concepts in computer programs;
Link to original
C1.1
decompose a problem into modules, classes, or abstract data types (e.g., stack, queue, dictionary) using an object-oriented design methodology (e.g., CRC [Class Responsibility Collaborator] or UML [Unified Modeling Language]);
Link to original
C1.2
demonstrate the ability to apply data encapsulation in program design (e.g., classes, records, structures);
Link to original
C1.3
demonstrate the ability to apply the process of functional decomposition in subprogram design;
Link to original
C1.4
apply the principle of reusability in program design (e.g., in modules, subprograms, classes, methods, and inheritance).
Link to original
C2. Algorithm Analysis
analyse algorithms for their effectiveness in solving a problem.
Link to original
C2.1
demonstrate the ability to analyse a precondition (i.e., starting state) and a postcondition (i.e., ending state) in an algorithm;
Link to original
C2.2
compare the efficiency of linear and binary searches, using run times and computational complexity analysis (e.g., to analyse the number of statements executed, the number of iterations of a loop, or the number of comparisons performed);
Link to original
C2.3
compare the efficiency of sorting algorithms, using run times and computational complexity analysis (e.g., to analyse the number of statements executed, the number of iterations of a loop, or the number of comparisons performed);
Link to original
C2.4
identify common pitfalls in recursive functions (e.g., infinite recursion, exponential growth in recursive algorithms such as Fibonacci numbers).
Link to original
Strand D. Topics in Computer Science
By the end of this course, students will:
D1. Environmental Stewardship and Sustainability
assess strategies and initiatives that promote environmental stewardship with respect to the use of computers and related technologies;
Link to original
D1.1
outline strategies to reduce the impact of computers and related technologies on the environment (e.g., reduce, reuse, and recycle; turn computers and monitors off at end of day; participate in printer cartridge recycling) and on human health (e.g. ergonomic standards);
Link to original
D1.2
investigate and report on governmental and community initiatives that encourage environmental stewardship and promote programs and practices that support sustainability (e.g., local community recycling centres, private companies that refurbish computers, printer cartridge recycling programs).
Link to original
D2. Ethical Practices
analyse ethical issues and propose strategies to encourage ethical practices related to the use of computers;
Link to original
D2.1
investigate and analyse an ethical issue related to the use of computers (e.g., sharing passwords, music and video file downloading, software piracy, keystroke logging, phishing, cyberbullying);
Link to original
D2.2
describe the essential elements of a code of ethics for computer programmers (e.g., ACM [Association for Computing Machinery] and IEEE [Institute of Electrical and Electronics Engineers] standards) and explain why there is a need for such a code (e.g., plagiarism, backdoors, viruses, spyware, logic bombs);
Link to original
D2.3
outline and apply strategies to encourage ethical computing practices at home, at school, and at work.
Link to original
D3. Emerging Technologies and Society
analyse the impact of emerging computer technologies on society and the economy;
Link to original
D3.1
explain the impact of a variety of emerging technologies on various members of society and on societies and cultures around the world and on the economy;
Link to original
D3.2
investigate an emerging technology and produce a report using an appropriate format (e.g., technical report, website, presentation software, video).
Link to original
D4. Exploring Computer Science
research and report on different areas of research in computer science, and careers related to computer science.
Link to original
D4.1
report on some areas of collaborative research between computer science and other fields (e.g., bioinformatics, geology, economics, linguistics, health informatics, climatology, sociology, art), on the basis of information found in industry publications (e.g., from the ACM and IEEE);
Link to original
D4.2
investigate a topic in theoretical computer science (e.g., cryptography, graph theory, logic, computability theory, attribute grammar, automata theory, data mining, artificial intelligence, robotics, computer vision, image processing), and produce a report, using an appropriate format (e.g., website, presentation software, video);
Link to original
D4.3
research and describe careers associated with computer studies (e.g., computer scientist, software engineer, systems analyst), and the postsecondary education required to prepare for them;
Link to original
D4.4
evaluate their own development of Essential Skills and work habits that are important for success in computer studies, as identified in the Ontario Skills Passport.
Link to original