Producers of Software, Textbooks and Resources for Computer Science
Education
Quick Links
Course Descriptions with Correlations to
Ontario Computer Science Curriculum
Hands-on Computer Engineering - Beginner
The Integrated Circuit or computer chip is the essence of modern computer
hardware. Through hands-on activities with actual chips and gates,
participants will construct simple circuits. They will then learn how to
devise truth tables and Boolean equations using the results of these
activities. The five fundamental gates (AND, OR, NOR, EOR, NOT and NAND)
will be covered. Participants will create a simple interface and connect it
to a computer and to the peripheral. They will then develop a simple computer
program to interact with the peripheral.
explain the function of logic gates and combinations of gates
correctly assemble electronic circuits using a series of logic gates
describe the function and interaction of computer peripherals (e.g. mouse, keyboard, screen, printer etc.)
identify common computer peripheral devices (e.g. mouse, keyboard, screen, printer, multimedia devices etc.) and their primary functions
describe the function of decoder and timer chips and the fundamental logic gates: AND, NAND, OR, NOR, XOR, NOT
describe how combinations of logic gates interact
assemble electronic circuits using a series of logic gates
use correctly internal numbering, character representation systems, and logic gates
demonstrate an understanding of how Boolean algebra relates to the fundamental logic gates
Hands-on Computer Engineering - Advanced
Through hands-on activities with actual chips and gates, participants will
construct computer circuits. They will learn how to devise truth tables and
Boolean equations using the results of these activities. The five fundamental
gates (AND, OR, NOR, EOR, NOT and NAND) will be reviewed, as well as counters,
decoders, and combinations of chips. Partipants will build several interfaces
and connect them to a computer and to the peripheral. They will then develop
computer programs to interact with the peripheral.
describe mechanisms for information movement and storage;
explain the operation of sophisticated systems that interact with real-world devices;
describe how signed and unsigned numbers are represented;
explain several computer-controlled systems that interact with real-world devices (e.g., traffic management systems, automotive systems, robotic systems).
compare high-level and low-level commands that perform similar operations.
use Boolean equations to represent computer logic circuits;
construct systems and interfaces that use computer programs to interact with real-world devices;
develop programs using the software life cycle (problem definition, analysis, design, implementation, testing, and maintenance).
convert between decimal and binary numbers;
build flip-flops using simple logic gates from schematics;
incorporate flip-flops in a clocked circuit to demonstrate information storage;
use electronic instruments (e.g., multimeter, logic probe) to troubleshoot circuits;
simplify Boolean equations accurately;
draw circuits that represent Boolean equations;
develop truth tables to represent Boolean equations.
analyse existing systems designs that use computers and interfaces to send and receive information;
design an effective system consisting of a computer and interface that integrates input and output devices (e.g., motion sensitive alarm, light-activated
switch, LED sign, environmental control);
construct a system consisting of a computer and interface to communicate with external sources;
write programs to process input and control output devices through interfaces;
trace the execution of simple machine-level programs;
write low-level programs;
document all programs to a specified standard.
Computer and Information Science Using Turing - Beginner
This course is a full day introduction to teaching core concepts of computer
science using the Turing programming language. The course will cover such
topics as the Turing Editor, variables and constants, repetition, selection,
graphics and strings. Turing graphics will also be introduced. (Lab required,
Turing software will be provided)
explain standard control and data structures used in computer programs;
define problems by identifying the expected output and necessary user input;
describe the characteristics of integer, real, character, and Boolean data types;
define constants, variables, expressions, and assignment statements;
describe the order in which arithmetic and logical operations are performed;
explain the use of Boolean operators in compound expressions;
identify differences among logic, runtime, and syntax errors;
explain the importance of external and internal documentation and programming style;
identify common acronyms used in the computing industry.
select suitable data structures to represent information;
verify solutions to problems;
use constants, variables, expressions, and assignment statements to store and manipulate numeric, character, and logical data in programs;
use selection structures, counted and conditional loops, and nested selection and loop structures;
manipulate numbers and text using built-in subroutines;
implement a program design using sequence, selection, and repetition structures;
adhere to defined programming style, including naming conventions for variables and subroutines, indentation, and spacing;
adhere to defined programming style, including naming conventions for variables and subroutines, indentation, and spacing;
interpret errors during testing and program execution;
trace program execution using manual methods and software debugging tools;
identify and correct logic, runtime, and syntax errors in programs;
Computer and Information Science Using Turing - Advanced
This course is a full day introduction to teaching advanced concepts of
computer science such as arrays, subprograms, records, and binary files.
It also examines advanced graphics concepts such as animation and the
Turing GUI library. (Lab required, Turing software will be provided)
explain data structures and their processing algorithms;
explain the importance of program correctness and efficiency;
explain the importance of designing reusable code for large software projects;
identify similarities and differences among data structures, including arrays, records, and arrays of records, and their applicability to solving programming problems;
evaluate the efficiency of different algorithms and their applicability to solving the same programming problem;
explain the levels of program correctness: syntax errors, runtime errors, valid data, invalid data, robustness.
describe how user-defined types and records provide more flexible and powerful ways of handling data;
explain how recursion can be used to solve specific kinds of computing problems.
implement advanced data structures and algorithms;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
design algorithms to incorporate data structures in projects;
ensure program correctness by developing a complete suite of test data (valid and invalid data) to eliminate syntax, runtime, and logic errors;
employ user-defined data types and record data types to improve program efficiency;
use arrays, records, and arrays of records in different project settings;
use recursion in a simple program;
Object Oriented Programming in Turing - Beginner
This course provides an introduction to the basic concepts of object-oriented
programming: objects, classes and inheritance. These concepts provide the
fundamental building blocks of the object-oriented paradigm and each will be
examined in depth, including: a real-life example, a computer-related example,
a comparison with the procedural paradigm, programming examples in Turing, and
a discussion of issues in teaching. (Lab required, Turing software will
be provided)
describe the steps in the software life cycle (problem definition, analysis, design, implementation, testing, and maintenance);
analyse a number of programming paradigms;
explain the importance of program correctness and efficiency;
describe the components of the software life cycle and their importance in project settings;
explain the importance of designing reusable code for large software projects;
describe the difference between procedural and object-oriented programming;
describe how procedural and object- oriented programming paradigms can be used to solve different problems;
describe the issues involved in maintaining a software library (e.g., access, backup, version control);
incorporate the software life cycle in project settings;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
use an integrated development environment to create and manage a project;
build and maintain a small software library to facilitate the reuse of code;
Object Oriented Programming in Turing - Advanced
The course uses the Object Oriented Turing programming language to provide a
brief overview of object-oriented concepts before proceeding to advanced
concepts. These include: abstract classes, polymorphism, factoring
(object-oriented design), genericity, method overloading, operator
overloading, and multiple inheritance. There will also be a walkthrough of
a large project which incorporates many of these principles. (Lab required,
Turing software will be provided)
describe the steps in the software life cycle (problem definition, analysis, design, implementation, testing, and maintenance);
analyse a number of programming paradigms;
explain the importance of program correctness and efficiency;
describe the components of the software life cycle and their importance in project settings;
explain the importance of designing reusable code for large software projects;
describe the difference between procedural and object-oriented programming;
describe how procedural and object- oriented programming paradigms can be used to solve different problems;
describe the issues involved in maintaining a software library (e.g., access, backup, version control);
incorporate the software life cycle in project settings;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
use an integrated development environment to create and manage a project;
build and maintain a small software library to facilitate the reuse of code;
Object Oriented Programming in Java - Beginner
This course provides an introduction to the basic concepts of object-oriented
programming: objects, classes and inheritance. These concepts provide the
fundamental building blocks of the object-oriented paradigm and each will be
examined in depth, including: a real-life example, a computer-related example,
a comparison with the procedural paradigm, programming examples in Java, and
a discussion of issues in teaching. (Lab required, Ready Java IDE will
be provided)
describe the steps in the software life cycle (problem definition, analysis, design, implementation, testing, and maintenance);
analyse a number of programming paradigms;
explain the importance of program correctness and efficiency;
describe the components of the software life cycle and their importance in project settings;
explain the importance of designing reusable code for large software projects;
describe the difference between procedural and object-oriented programming;
describe how procedural and object- oriented programming paradigms can be used to solve different problems;
describe the issues involved in maintaining a software library (e.g., access, backup, version control);
incorporate the software life cycle in project settings;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
use an integrated development environment to create and manage a project;
build and maintain a small software library to facilitate the reuse of code;
Object Oriented Programming in Java - Advanced
The course uses the Java programming language to provide a brief overview of
object-oriented concepts before proceeding to advanced concepts. These
include: abstract classes, polymorphism, factoring (object-oriented design),
genericity, method overloading, operator overloading, and multiple
inheritance. There will also be a walkthrough of a large project which
incorporates many of these principles. (Lab required, Ready Java IDE will
be provided)
describe the steps in the software life cycle (problem definition, analysis, design, implementation, testing, and maintenance);
analyse a number of programming paradigms;
explain the importance of program correctness and efficiency;
describe the components of the software life cycle and their importance in project settings;
explain the importance of designing reusable code for large software projects;
describe the difference between procedural and object-oriented programming;
describe how procedural and object- oriented programming paradigms can be used to solve different problems;
describe the issues involved in maintaining a software library (e.g., access, backup, version control);
incorporate the software life cycle in project settings;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
use an integrated development environment to create and manage a project;
build and maintain a small software library to facilitate the reuse of code;
Introduction to Java
This course is a full day introduction to the Java programming language with
an emphasis on using it to teach core concepts of computer science.
The course will identify Java's strengths and limitations and its appeal
for instructors and students. There will be a major focus on Java concepts,
including: Java data types, objects and arrays, classes, Java graphics, and
Java and HTML. The course will also introduce the syntax of the language,
basic and reference data types, arrays, objects, classes and inheritance in
Java. (Lab required, Ready Java IDE will be provided)
explain data structures and their processing algorithms;
explain the importance of program correctness and efficiency;
explain the importance of designing reusable code for large software projects;
identify similarities and differences among data structures, including arrays, records, and arrays of records, and their applicability to solving programming problems;
evaluate the efficiency of different algorithms and their applicability to solving the same programming problem;
explain the levels of program correctness: syntax errors, runtime errors, valid data, invalid data, robustness.
describe how user-defined types and records provide more flexible and powerful ways of handling data;
explain how recursion can be used to solve specific kinds of computing problems.
implement advanced data structures and algorithms;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
design algorithms to incorporate data structures in projects;
ensure program correctness by developing a complete suite of test data (valid and invalid data) to eliminate syntax, runtime, and logic errors;
employ user-defined data types and record data types to improve program efficiency;
use arrays, records, and arrays of records in different project settings;
use recursion in a simple program;
analyse a number of programming paradigms;
explain the importance of designing reusable code for large software projects;
describe the difference between procedural and object-oriented programming;
describe how procedural and object- oriented programming paradigms can be used to solve different problems;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
use an integrated development environment to create and manage a project;
The Java Class Libraries
This course provides an overview of the Java language with an emphasis on the
classes and methods found in the Java Class Libraries. It will examine
fundamental classes such as Boolean, Integer, String, and String Buffer.
Classes for handling file I/O, data structures (Stack and Vector), and GUI
classes. (Lab required, Ready Java IDE will be provided)
explain the importance of program correctness and efficiency;
describe the relationship among hardware, software, and network requirements.
explain the importance of designing reusable code for large software projects;
identify similarities and differences among data structures, including arrays, records, and arrays of records, and their applicability to solving programming problems;
evaluate the efficiency of different algorithms and their applicability to solving the same programming problem;
describe the difference between procedural and object-oriented programming;
describe how user-defined types and records provide more flexible and powerful ways of handling data;
implement advanced data structures and algorithms;
identify on-line and off-line resource materials;
incorporate modularity, software reuse, and maintenance considerations at the design and implementation stages of the project;
incorporate appropriate code from shared software libraries into software projects;
select appropriate data structures (e.g., arrays, records, arrays of records) for use in projects;
design algorithms to incorporate data structures in projects;
use an integrated development environment to create and manage a project;
Overview of the New Computer Studies Curriculum
This course provides a thorough introduction to the new computer studies
curriculum. It examines the expectations for the Computer and Information
Science and Computer Engineering courses in each grade and provide a variety
of teaching and implementation strategies. Curriculum resources will be
reviewed and issues such as designation, destination, and skills upgrading
for teachers will be addressed. (No hardware or software required)
No Correclations Available
Addressing the Computer Expectations in the Grade 9 Integrated Technologies Course.
This hands-on course focuses on the essential concepts underlying the creation
of computer programs applying to a variety of applications. The fundamental
building blocks of a computer program including constants and variables,
selection and repetition, input and output. Using a computer problem solving
model and proper programming style, participants will write simple computer
programs to manipulate text and graphics. No computer programming background
is assumed. (Uses Turing software)
identify ways to communicate design and research ideas and solutions through a variety of media;
demonstrate understanding of how to evaluate project work in relation to identified specifications, using quality control procedures;
describe the scope of activities supported by computer and information technology;
explain the fundamental concepts underlying the creation of a computer program.
identify solutions to given design problems that involve existing situations or new ideas;
describe a problem-solving model that can be applied to different kinds of technological problems;
describe project ideas and solutions;
demonstrate understanding of how to evaluate projects and an ability to suggest improvements;
describe the fundamental building blocks of a computer program (i.e., constants and variables, selection and repetition, input and output);
explain the different roles that computers, networks, and operating systems have and describe the tasks for which each is used;
explain how a local business such as a restaurant or courier service or industry would operate or deliver services with and without computer technology.
share information locally and globally using communication tools such as e-mail;
use a variety of computer software applications for research, to solve problems, and to document the design process;
share information using media tools and a variety of technologies;
use a variety of software applications, such as word processing, to document projects from conception to completion;
use a variety of software applications, such as databases and spreadsheets, to do research and solve specific problems;
determine and compare the costs of computer system components;
write simple computer programs to manipulate text and graphics.
handle computer hardware and electrical components safely;
use appropriate strategies to prevent potential health and safety problems;
identify computer and technology-related careers and demonstrate understanding of how technology affects selected careers;
identify acceptable-use policies for computing.
Addressing the Design and Documentation Expectations in the New Computer Studies Curriculum.
This course examine the new design and documentation expectations that reflect
the new software engineering focus of the computer studies courses.
Participants will review current expectations and discuss changes from
previous curricula. Software development models and design standards will
be discussed as well as the role of new programming paradigms. Participants
will explore documentation issues and create their own style sheets.
define problems by identifying the expected output and necessary user input
describe at least two problem solving models
evaluate the usefulness of available software tools in a problem solving situation, using criteria such as ease of use and time required for processing
describe the steps in the software development process: problem definition, analysis, design, implementation, testing and maintenance and their importance in the development of large programs or applications
compare problem-solving models (e.g. top down, bottom up etc.) and show how they can be applied to create a computer program
apply the input, process and output model to solve problems
identify the possibilities and limitations of proposed designs
produce internal and external documentation
document for the user, the potential and limitations of programs
develop programs by following the steps in the software design process
implement defined programming practices
resolve ambiguities and missing information in problem statements