 
Designing Modular Programs
Overall Expectations
By the end of this course, students will:
C1. 
demonstrate the ability to apply modular design concepts in computer
programs; 
C2. 
analyse algorithms for their effectiveness in solving a problem. 


Specific Expectations
C1.

Computer Components


By the end of this course, students will: 

C1.1 
decompose a problem into modules, classes, or abstract data
types (e.g., stack, queue, dictionary) using an objectoriented
design methodology (e.g., CRC [Class Responsibility
Collaborator] or UML [Unified Modeling Language]); 
C1.2 
demonstrate the ability to apply data encapsulation in
program design (e.g., classes, records, structures); 
C1.3 
demonstrate the ability to apply the process of functional
decomposition in subprogram design; 
C1.4 
apply the principle of reusability in program design (e.g.,
in modules, subprograms, classes, methods, and inheritance). 



C2.

Algorithm Analysis


By the end of this course, students will: 

C2.1 
demonstrate the ability to analyse a precondition (i.e.,
starting state) and a postcondition (i.e., ending state) in an
algorithm; 
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); 
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); 
C2.4 
identify common pitfalls in recursive functions (e.g.,
infinite recursion, exponential growth in recursive algorithms
such as Fibonacci numbers). 





Source: The Ontario Curriculum, Grades 10 to 12: Computer
Studies, 2008 (revised), page 44
PDF Format 