Computer Science: Provincial Level
Goal Statement
The goals for the provincial level Computer Science course are:
- to develop problem solving skills whereby the student is able to analyze a problem, devise an algorithm or process to solve the problem, use this process to write a computer implementation of the solution and to test the solution
- to adequately prepare students for a career or program of studies where logical thought and structured design processes are required.
Core Topics
Software Engineering (Problem Analysis and Design of Solution)
Given a problem suitable for a computer programming solution, the student shall:
- analyze the problem so that it is clearly understood
- identify the inputs, outputs and appropriate data structures
- break down the solution of the problem into component modules
- User defined functions
- Classes
- Scope
- Inheritance
- Polymorphism
- design the structure of each module, documenting it in structured English (using a method such as pseudo-code or top-down charts) and describing in detail all inputs, processes or algorithms used and format of outputs
- design an appropriate user interface
- produce computer source code as a software design implementation
- test, debug and modify program code until error free
- document the solution, both internally and externally; and
- identify the differences between source code and machine code
Given the solution to a computer programming problem, the student shall:
- identify the time complexity of an algorithm using big O notation;
- add features and fix bugs as requested by mock users
- use version control software; and
- discuss code with partners using pair-programming techniques
Elements of a programming language
Using a high-level programming language to create programs (such as command-line games and apps, simple graphics, and GUI elements), the student shall demonstrate knowledge of the following program elements:
- data types (including Integer, Real, Boolean, Character and String) and their representation as bits and bytes, conversion between data types, addressing of arrays
- meaningful identifier names for constants, variables, procedures (or subroutines) and programs input and output statements
- arithmetic expressions and operators, including parentheses
- string and character manipulation and processing, including use of substrings, concatenation, and other language-specific program features, and built-in functions and constants
- conditional expressions including use of relational operators, logical operators, Boolean variables, and nested conditional statements
- iteration structures, definite (e.g. For…Do) vs. indefinite loops, and nested loops.
- one-dimensional and two-dimensional arrays