problem decomposition - subdivide a problem into manageable, self-contained tasks
structures within existing code - for example, key elements such as variables, functions, use of Whitespace
ways to modify existing code to meet a particular purpose - for example, altering values of variables, parameters of a function or loop
strategies to predict effects of code modification - hand tracing code, guess and test (experimentation)
pair programming
Two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.
More advanced: While reviewing, the observer considers the "strategic" direction of the work, coming up with ideas for improvements and likely future problems to address. The driver focuses their attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.
programming language constructs to support input/output, logic, decision structure, and loops
requirements of a problem statement - a complete set of requirements that will support the rest of the software development cycle without the need to revisit the problem statement in the future
ways to transform requirements into algorithms - pseudocode, iterative refinement, flowcharts, UML, other design entities
translation of algorithm design specifications into source code
tools to aid in the development process - for example, integrated development environment (IDE), computer language appropriate for problem/project
pre-built libraries and their documentation (for example, external libraries for graphical user interfaces or gaming, sensor libraries for hardware such as coding devices)
inline commenting to document source code
use of test cases to detect logical or semantic errors (for example, running test cases to compare expected versus actual output and printing the value of variables to aid in the debugging process)
computational thinking processes - formulating problems and their solutions so they are represented in a form that can be solved through an algorithmic process. Key components are decomposition, patterns and generalizations, abstraction, and algorithmic thinking.
appropriate use of technology, including digital citizenship, etiquette, and literacy
Additional content introduced @ Grade 12 Level
Students are expected to know the following:
advanced or higher-level programming structuressuch as functions, methods, or classes, that help improve the organization of source code
standardized source code documentation - industry standard tools
self-documenting code - writing source code in such a way that makes inline comments seem unnecessary
collaboration tools for programming - for example, online tools to facilitate pair and collaborative programming
User interface design -focus on maximizing usability and the user experience. The goal of user interface design is to make the user's interaction as simple and efficient as possible, in terms of accomplishing user goals
error handling - the response and recovery procedures from error conditions present in a software application; the process comprised of anticipation, detection and resolution of application errors, programming errors or communication errors
debugging tools - use of a debugger that is capable of stepping through code and monitoring variables
management of complexity - for example, a project whose scale requires multiple source files or functions
uses of pre-built data structures
bug reports and feature requests from users
interpersonal skills necessary to work effectively within the IT sector - for example, people skills, social skills, communication, attitudes, collaboration, follow-ups, courtesies, record keeping