ICS4C Expectations
ICS4C -- Computer Programming, Grade 12, College Preparation
Note: a printable copy of this document is available here.
A. Programming Concepts and Skills
Overall Expectations
A1. use data structures in the design and creation of computer programs;A2. demonstrate the ability to use standard algorithms in the design and creation of computer programs;
A3. demonstrate an understanding of object-oriented programming concepts and practices in the design and creation of computer programs;
A4. create clear and accurate internal and external documentation to ensure the maintainability of computer software.
Specific Expectations
A1. Data Structures
A1.1 perform operations on data types typically used in business applications (e.g., express money amounts as dollars and cents, express dates and times in various formats);
A1.2 use Boolean operators (e.g., AND, OR, NOT), comparison operators (i.e., equal to, not equal to, greater than, less than, greater than or equal to, less than or equal to), arithmetic operators (e.g., addition, subtraction, multiplication, division, exponentiation, parentheses), and order of operations correctly in programming;
A1.3 describe the structure of one-dimensional and two-dimensional arrays and related concepts including elements, indexes, and bounds
A2. Using Standard Algorithms
A2.1 demonstrate the ability to manipulate and convert data in a computer program (e.g., parse strings; convert data types such as numeric to string, and string to numeric; convert ‘yes’ or ‘no’ to Boolean);
A2.2 demonstrate the ability to read from, and write to, an external file (e.g., sequential file, database, XML file, relational database via SQL);
A2.3 demonstrate the ability to declare, initialize, modify, and access one-dimensional and two-dimensional arrays and elements within a program;
A2.4 demonstrate the ability to add, change, or delete elements of an array of objects in a program;
A2.5 demonstrate the ability to use search and sort routines (e.g., string.indexOf (“cool”), Arrays.sort(intArray)) in a program.
A3. Object-oriented Programming
A3.1 explain the importance of designing reusable code in computer programs;
A3.2 explain fundamental object-oriented programming concepts (e.g., classes, objects, methods);
A3.3 apply the concepts of scope and visibility for variables, constants, and methods when creating classes in computer programs;
A3.4 compare and contrast object-oriented and procedural programming paradigms.
A4. Code Maintenance
A4.1 write maintainable computer programs by creating clear and accurate internal documentation that provides in-depth explanations of complex blocks of code;
A4.2 create clear and maintainable external user documentation (e.g., Help file, how-to manual, FAQ, installation procedures, backup and recovery procedures, training materials) as part of a complete software development project;
A4.3 develop and implement a formal testing plan for a software development project to ensure program correctness.
B. Software Development
Overall Expectations
B1. design standard algorithms according to specifications;
B2. design software solutions using object-oriented programming concepts;
B3. design user-friendly graphical user interfaces (GUIs) that meet user requirements;
B4. participate in a large student-managed project, using proper project management tools and techniques to manage the process effectively.
Specific Expectations
B1. Designing Standard Algorithms
B1.1 design algorithms to solve practical mathematical problems (e.g., amount of paint or carpet needed, number of shingles needed, energy costs, amount of water needed for an aquarium, projection of Aboriginal youth population growth);
B1.2 design algorithms that require precision and accuracy when rounding numbers (e.g., currency calculations, amortization, recipe volume changes);
B1.3 design data validation routines (e.g., capitalization; formatting of postal codes, telephone numbers, SINs, and alphanumeric data; length and range checking).
B2. Object-oriented Software Solutions
B2.1 demonstrate the ability to create and use instance methods (e.g., constructors, mutators, accessors) in a computer program;
B2.2 design a simple base class to represent objects or concepts in a problem statement, using program templates or skeletons;
B2.3 write methods that require parameter passing in a computer program.
B3. Graphical User Interfaces
B3.1 design graphical user interfaces that contain common controls (e.g., buttons, labels, text boxes);
B3.2 design a user-friendly graphical user interface that helps to improve user accessibility (e.g., for multilingualism; for those with limited eyesight or colour vision deficiency);
B3.3 evaluate a user interface for conformity with a given accessibility standard (e.g., Section 508 of the Rehabilitation Act (US), W3C User Interface Domain, or a student- or teacher-created standard);
B3.4 design responses to user events in a graphical user interface.
B4. Student-managed Project
B4.1 describe the phases of a model (e.g., waterfall, iterative, XP [Extreme Programming], RAD [Rapid Application Development]) of the software development life cycle;
B4.2 create a project plan for a software development project, outlining the tasks at each phase of the software development life cycle;
B4.3 use project management tools (e.g., Gantt chart, PERT chart) and time management tools (e.g., organizer, calendar) to help develop a software project;
B4.4 use industry-standard programming tools (e.g., UML [Unified Modeling Language], diagrams, structure charts, flow charts, pseudocode) to develop a software project.
C. Programming Environment
Overall Expectations
C1. demonstrate the ability to use project management tools to plan and track activities for a software development project;
C2. demonstrate the ability to use software development tools to design and write a computer program.
Specific Expectations
C1. Project Management Tools
C1.1 use software tools (e.g., email, wikis, blogs, task lists, bulletin boards, spreadsheets, shared calendars) to plan and track activities during a software development project;
C1.2 communicate information about project status (e.g., completed, in progress, not started, problems encountered, recommended modification to deadlines) effectively in writing throughout the project.
C2. Software Development Tools
C2.1 use the features of a software development environment to debug programs and create functioning computer programs;
C2.2 work independently, using the Help function, to resolve syntax issues while programming;
C2.3 work independently, using reference materials (e.g., code snippets, sample programs, APIs, tutorials), to design and write functioning computer programs.
D. Computers and Society
Overall Expectations
D1. analyse and apply strategies that promote environmental stewardship with respect to the use of computers and related technologies;
D2. demonstrate an understanding of ethical issues and practices related to the use of computers;
D3. investigate and report on emerging computer technologies and their potential impact on society and the economy;
D4. research and report on the range of career paths and lifelong learning opportunities in software development or a computer-related field.
Specific Expectations
D1. Environmental Stewardship and Sustainability
D1.1 outline and apply 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);
D1.2 investigate and describe governmental and community initiatives promoting environmental stewardship and sustainability (e.g., local community recycling centres, private companies that refurbish computers, printer cartridge recycling programs).
D2. Ethical Practices
D2.1 investigate and describe an ethical issue related to the use of computers (e.g., piracy, privacy, security, phishing, spyware, cyberbullying);
D2.2 describe the essential elements of a code of ethics for computer programmers, and explain why there is a need for such a code (e.g., plagiarism, backdoors, spyware, unethical programming practices);
D2.3 outline and apply strategies to encourage ethical computing practices at home, at school, and at work
D3. Emerging Technologies
D3.1 describe the evolution of some emerging programming languages;
D3.2 investigate and report on innovations in information technology (e.g., webcasting, VoIP, multiplayer online gaming) and their potential impact on society and the economy;
D3.3 describe programming requirements for a variety of emerging technologies (e.g., web programming, smartphones, embedded systems).
D4. Computer-related Careers
D4.1 research and report on the range of career opportunities in software development, including duties, responsibilities, qualifications, and compensation;
D4.2 research and report on opportunities for lifelong learning in software development or a computer-related field;
D4.3 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.