Curriculum Computer Science Grade 12

Subject: 
Computer Science
Grade: 
Grade 12
Big Ideas: 
Decomposition and abstraction help us to solve difficult problems by managing complexity.
Algorithms are essential in solving problems computationally.
Programming is a tool that allows us to implement computational thinking.
Solving problems is a creative process.
Data representation allows us to understand and solve problems efficiently.
 
Big Ideas Elaborations: 
  • abstraction:
    • reducing complexity by representing essential features without including the background details or explanations
    • Sample questions to support inquiry with students:
      • How do we decide when an object should be abstracted?
      • How do we choose public features?
      • How do we choose which features are advertised?
      • How does hiding background detail simplify the problem-solving process?
  • Algorithms:
    • Sample questions to support inquiry with students:
      • When comparing algorithms, how do we determine which one is most efficient?
      • Can an elegant algorithm be efficient?
      • How is an algorithm formulated?
      • What makes one algorithm better than another algorithm?
      • What is the relationship between elegant algorithms and efficient algorithms?
      • Can all problems be solved through a series of predefined steps?
  • computational thinking:
    • a thought process that uses pattern recognition and decomposition to describe an algorithm in a way that a computer can execute
    • Sample questions to support inquiry with students:
      • How do we decide which programming language to use in solving a specific problem?
      • Why is code readability important?
      • What factors affect code readability?
      • How much source code documentation is enough?
      • Are there patterns in the solution that can be generalized?
      • How do we recognize patterns?
  • Solving problems:
    • Sample questions to support inquiry with students:
      • How many different ways can this problem be solved?
      • How do we determine which solution is better?
      • How do we approach solving a problem in different ways?
      • Without knowing a solution, how do we start to solve a problem?
  • Data representation:
    • a method of storing and organizing information in a container
    • Sample questions to support inquiry with students:
      • When should we create our own data type?
      • How do computers use electricity to represent data?
      • How can we organize our data types more efficiently?
      • How do we decide which data types to use?
Curricular Competencies: 
Reasoning and modelling
  • Develop fluent, flexible, and strategic thinking to analyze and create algorithms
  • Explore, analyze, and apply mathematical ideas and computer science concepts using reason, technology, and other tools
  • Model with mathematics in situational contexts
  • Think creatively and with curiosity and wonder when exploring problems
Understanding and solving
  • Develop, demonstrate, and apply conceptual understanding through experimentation, inquiry, and problem solving
  • Visualize to explore and illustrate computer science concepts and relationships
  • Apply flexible and strategic approaches to solve problems
  • Solve problems with persistence and a positive disposition
  • Engage in problem-solving experiences connected with place, story, cultural practices, and perspectives relevant to local First Peoples communities, the local community, and other cultures
Communicating and representing
  • Explain and justify computer science ideas and decisions in many ways
  • Represent computer science ideas in concrete, pictorial, and symbolic forms
  • Use computer science and mathematical vocabulary and language to contribute to discussions in the classroom
  • Take risks when offering ideas in classroom discourse
Connecting and reflecting
  • Reflect on mathematical and computational thinking
  • Connect mathematical and computer science concepts with each other, other areas, and personal interests
  • Use mistakes as opportunities to advance learning
  • Incorporate First Peoples worldviews, perspectives, knowledge, and practices to make connections with computer science concepts
Curricular Competencies Elaborations: 
  • fluent, flexible, and strategic thinking:
    • understanding the efficiency of different algorithms in solving the same problem, balancing performance and elegance
  • analyze:
    • examine the structure of and connections between mathematical ideas (e.g., big-O analysis)
  • reason:
    • inductive and deductive reasoning
    • predictions, generalizations, conclusions drawn from experiences (e.g., with coding)
  • technology:
    • graphing technology, dynamic geometry, calculators, virtual manipulatives, concept-based apps
    • can be used for a wide variety of purposes, including:
      • exploring and demonstrating mathematical relationships
      • organizing and displaying data
      • generating and testing inductive conjectures
      • mathematical modelling
  • other tools:
    • integrated development environments (IDE)
    • IDE debugger to inspect memory at run-time
    • third-party libraries
    • visual code comparison tools to view code differences (e.g., Meld)
    • memory analyzers to discover memory leaks
    • version control systems to share source code among team members (e.g., git)
  • Model:
    • use mathematical concepts and tools to solve problems and make decisions (e.g., in real-life and/or abstract scenarios)
    • take a complex, essentially non-mathematical scenario and figure out what mathematical concepts and tools are needed to make sense of it
  • situational contexts:
    • including real-life scenarios and open-ended challenges that connect mathematics with everyday life
  • Think creatively:
    • by being open to trying different strategies
    • refers to creative and innovative mathematical thinking rather than to representing math in a creative way, such as through art or music
  • curiosity and wonder:          
    • asking questions to further understanding or to open other avenues of investigation
  • inquiry:
    • includes structured, guided, and open inquiry
    • noticing and wondering
    • determining what is needed to make sense of and solve problems
  • Visualize:
    • visualize data structures pictorially
    • use flow charts
    • use code visualization tools or websites (e.g., http://pythontutor.com/)
  • flexible and strategic approaches:
    • using different algorithms to solve the same problem
    • designing algorithms that solve a class of problems rather than a single problem
    • deciding which programming patterns and well-known algorithms to use to solve a problem
    • choosing an effective strategy to solve a problem (e.g., guess and check, model, solve a simpler problem, use a chart, use diagrams, role-play)
  • solve problems:
    • interpret a situation to identify a problem
    • apply mathematics to solve the problem
    • analyze and evaluate the solution in terms of the initial context
    • repeat this cycle until a solution makes sense
  • persistence and a positive disposition:
    • not giving up when facing a challenge
    • problem solving with vigour and determination
  • connected:
    • through daily activities, local and traditional practices, popular media and news events, cross-curricular integration
    • by posing and solving problems or asking questions about place, stories, and cultural practices
  • Explain and justify:
    • use mathematical arguments to convince
    • includes anticipating consequences
  • decisions:
    • Have students explore which of two scenarios they would choose and then defend their choice.
  • many ways:
    • including oral, written, pseudocode, pictures, use of technology
    • communicating effectively according to what is being communicated and to whom
  • Represent:
    • using pseudocode (e.g., with models, tables, flow charts, words, numbers, symbols)
    • connecting meanings among various representations
    • using concrete materials and dynamic interactive technology
  • discussions:
    • partner talks, small-group discussions, teacher-student conferences
  • discourse:
    • is valuable for deepening understanding of concepts
    • can help clarify students’ thinking, even if they are not sure about an idea or have misconceptions
  • Reflect:
    • share the mathematicaland computational thinking of self and others, including evaluating strategies and solutions, extending, posing new problems and questions
  • Connect mathematical and computer science concepts:
    • to develop a sense of how computer science helps us understand the world around us (e.g., daily activities, local and traditional practices, popular media and news events, social justice, cross-curricular integration)
  • mistakes:
    • include syntax, semantic, run-time, and logic errors
  • opportunities to advance learning:
    • by:
      • analyzing errors to discover misunderstandings
      • making adjustments in further attempts (e.g., debugging)
      • identifying not only mistakes but also parts of a solution that are correct
  • Incorporate:
    • by:
      • collaborating with Elders and knowledge keepers among local First Peoples
      • exploring the First Peoples Principles of Learning (http://www.fnesc.ca/wp/wp-content/uploads/2015/09/PUB-LFP-POSTER-Principles-of-Learning-First-Peoples-poster-11x17.pdf; e.g., Learning is holistic, reflexive, reflective, experiential, and relational [focused on connectedness, on reciprocal relationships, and a sense of place]; Learning involves patience and time)
      • making explicit connections with learning mathematics
      • exploring cultural practices and knowledge of local First Peoples and identifying mathematical connections
  • knowledge:
    • local knowledge and cultural practices that are appropriate to share and that are non-appropriated
  • practices:
Concepts and Content: 
  • access variables in memory
  • ways in which data structures are organized in memory
  • uses of multidimensional arrays
  • classical algorithms, including sorting and searching
  • use of Big-O notation to help predict run-time performance
  • recursive problem solving
  • persistent memory
  • encapsulation of data
  • ways to model mathematical problems
Concepts and Content Elaborations: 
  • access variables:
    • pass by value versus by reference, or mutable/immutable data types
  • data structures:
    • vectors, lists, queues, dictionaries, maps, trees, stacks
  • uses:
    • board games, image manipulation, representing tabular data or matrices
  • sorting and searching:
    • sorting (e.g., bubble, insertion, selection, quick merge)
    • searching (e.g., binary search, data structure traversal)
  • performance:
    • analyzing algorithms to predict and compare run-time complexity
    • working with large data sets
  • recursive problem solving:
    • recognizing recursive problems or patterns
    • Fibonacci sequence, exponents, factorials, palindromes, combinations, greatest common factor, fractals
  • persistent memory:
    • read from/write to a file
  • encapsulation:
    • creating your own data type, class, or structure as well as public, private, static/class variables
  • model mathematical problems:
    • estimate theoretical probability through simulation
    • represent finite sequences and series
    • solve a system of linear equations, exponential growth/decay
    • solve a polynomial equation
    • calculate statistical values (e.g., frequency, central tendencies, standard deviation) of a large data set
Status: 
Update and Regenerate Nodes
Big Ideas FR: 
La décomposition et l’abstraction aident à résoudre des problèmes difficiles en les simplifiant.
Les algorithmes sont essentiels pour résoudre des problèmes au moyen de l’informatique.
La programmation est un outil qui permet de mettre en pratique la pensée informatique.
Résoudre des problèmes est un processus créatif.
La représentation des données aide à comprendre et à résoudre efficacement des problèmes.
 
Big Ideas Elaborations FR: 
  • abstraction :
    • simplifier, en représentant les éléments essentiels et en écartant les détails du contexte ou les explications
    • Questions pour appuyer la réflexion de l’élève :
      • Comment décide-t-on s’il faut représenter un objet sous forme abstraite?
      • Comment choisir les éléments publics?
      • Comment choisir les éléments qui seront affichés?
      • Comment le fait d’écarter les détails du contexte simplifie-t-il le processus de résolution de problème?
  • algorithmes :
    • Questions pour appuyer la réflexion de l’élève :
      • Comment comparer des algorithmes et déterminer lequel est le plus efficace?
      • Un algorithme élégant peut-il être efficace?
      • Comment formule-t-on un algorithme?
      • Qu’est-ce qui fait qu’un algorithme est meilleur qu’un autre?
      • Quelle est la relation entre un algorithme élégant et un algorithme efficace?
      • Est-ce que tous les problèmes peuvent être résolus par une série d’étapes prédéfinies?
  • pensée informatique :
    • processus de réflexion qui se fonde sur la reconnaissance des régularités et sur la décomposition dans le but de produire un algorithme exécutable par un ordinateur
    • Questions pour appuyer la réflexion de l’élève :
      • Comment choisir le langage informatique à employer pour résoudre un problème donné?
      • Pourquoi la lisibilité du code est-elle importante?
      • Quels facteurs influent sur la lisibilité du code?
      • Quelle quantité de documentation du code source est nécessaire?
      • La solution présente-t-elle des régularités qui pourraient être généralisées?
      • Comment reconnaître des régularités?
  • résoudre des problèmes :
    • Questions pour appuyer la réflexion de l’élève :
      • De combien de façons peut-on résoudre tel ou tel problème?
      • Comment juger quelle solution est la meilleure?
      • Comment procéder pour résoudre un problème de plusieurs façons différentes?
      • Si aucune solution n’est suggérée, comment commencer à résoudre un problème?
  • représentation des données :
    • une méthode de stockage et d’organisation des données dans un support
    • Questions pour appuyer la réflexion de l’élève :
      • Dans quelles circonstances est-il utile de créer notre propre type de données?
      • Comment les ordinateurs utilisent-ils l’électricité pour représenter les données?
      • Comment organiser plus efficacement nos types de données?
      • Comment choisir les types de données à utiliser?
competencies_fr: 
Raisonner et modéliser
  • Développer une réflexion aisée, souple et stratégique pour analyser et créer des algorithmes
  • Explorer, analyser et appliquer des idées mathématiques et des concepts informatiques au moyen du raisonnement, de la technologie et d’autres outils
  • Modéliser au moyen des mathématiques dans des situations contextualisées
  • Faire preuve de pensée créatrice et manifester de la curiosité et de l’intérêt dans l’exploration de problèmes
Comprendre et résoudre
  • Développer, démontrer et appliquer sa compréhension des concepts par des expériences, l’investigation et la résolution de problèmes
  • Explorer et représenter des concepts et des relations informatiques par la visualisation
  • Appliquer des approches flexibles et stratégiques pour résoudre des problèmes
  • Résoudre des problèmes avec persévérance et bonne volonté
  • Réaliser des expériences de résolution de problèmes qui font référence aux lieux, aux histoires, aux pratiques culturelles et aux perspectives des peuples autochtones de la région, de la communauté locale et d’autres cultures
Communiquer et représenter
  • Expliquer et justifier des concepts et des décisions informatiques de plusieurs façons
  • Représenter des concepts informatiques sous formes concrète, graphique et symbolique
  • Utiliser le vocabulaire et le langage de l’informatique et des mathématiques pour participer à des discussions en classe
  • Prendre des risques en proposant des idées dans le cadre du discours en classe
Faire des liens et réfléchir
  • Réfléchir sur l’approche mathématique et informatique
  • Faire des liens entre différents concepts mathématiques et informatiques, et entre ces concepts et d’autres domaines et intérêts personnels
  • Voir les erreurs comme des occasions d’apprentissage
  • Incorporer les visions du monde, les perspectives, les connaissances et les pratiques des peuples autochtones pour établir des liens avec des concepts informatiques
Curricular Competencies Elaborations FR: 
  • réflexion aisée, souple et stratégique :
    • savoir comparer l’efficacité de différents algorithmes pour résoudre le même problème, trouver l’équilibre entre performance et élégance
  • analyser :
    • examiner la structure des concepts mathématiques et les liens entre eux (p. ex. analyse grand O)
  • raisonnement :
    • raisonnement inductif et déductif
    • prédictions, généralisations et conclusions tirées d’expériences (p. ex. en programmation)
  • technologie :
    • technologie graphique, géométrie dynamique, calculatrices, matériel de manipulation virtuelle, applications conceptuelles
    • usages très variés, notamment :
      • exploration et démonstration de relations mathématiques
      • organisation et présentation de données
      • formulation et mise à l’épreuve de conjectures inductives
      • modélisation mathématique
  • autres outils :
    • environnements de développement intégrés (EDI)
    • débogueur EDI pour dépanner un programme en exécution
    • bibliothèques externes
    • utilitaires visuels de comparaison pour visualiser les différences de code (p. ex. Meld)
    • utilitaires d’analyse de mémoire pour détecter des pertes de mémoire
    • systèmes de gestion des versions pour partager du code source entre les membres d’une équipe (p. ex. git)
  • Modéliser :
    • à l’aide de concepts et d’outils mathématiques, résoudre des problèmes et prendre des décisions (p. ex. dans des scénarios de la vie quotidienne ou abstraits)
    • choisir les concepts et les outils mathématiques nécessaires pour déchiffrer un scénario complexe et essentiellement non mathématique
  • situations contextualisées :
    • par exemple, des scénarios de la vie quotidienne et des défis ouverts qui établissent des liens entre les mathématiques et la vie quotidienne
  • pensée créatrice :
    • être ouvert à l’essai de stratégies différentes
    • on fait référence ici à une réflexion mathématique créatrice et innovatrice plutôt qu’à une représentation créative des mathématiques, p. ex. par les arts ou la musique
  • curiosité et de l’intérêt :
    • poser des questions pour approfondir sa compréhension ou pour ouvrir de nouvelles voies d’investigation
  • investigation :
    • investigation structurée, orientée et libre
    • observer et s’interroger
    • relever les éléments nécessaires pour comprendre un problème et le résoudre
  • visualisation :
    • visualiser graphiquement des structures de données
    • utiliser des organigrammes
    • se servir d’utilitaires ou de sites Web de visualisation de code (p. ex. http://pythontutor.com/)
  • approches flexibles et stratégiques :
    • utiliser des algorithmes différents pour résoudre un même problème
    • concevoir des algorithmes capables de résoudre une catégorie de problèmes plutôt qu’un seul problème
    • choisir les régularités de programmation appropriées et des algorithmes éprouvés pour résoudre un problème
    • choisir une stratégie efficace pour résoudre un problème (p. ex. essai-erreur, modélisation, résolution d’un problème plus simple, utilisation d’un graphique ou d’un diagramme, jeu de rôle)
  • résoudre des problèmes :
    • interpréter une situation pour cerner un problème
    • appliquer les mathématiques à la résolution de problème
    • analyser et évaluer la solution par rapport au contexte initial
    • répéter ce cycle jusqu’à ce qu’une solution vraisemblable ait été trouvée
  • persévérance et bonne volonté :
    • ne pas abandonner devant les difficultés
    • résoudre les problèmes avec dynamisme et détermination
  • qui font référence :
    • aux activités quotidiennes, aux pratiques locales et traditionnelles, aux médias populaires, aux événements d’actualité et à l’intégration interdisciplinaire
    • en posant et en résolvant des problèmes, ou en posant des questions sur les lieux, les histoires et les pratiques culturelles
  • Expliquer et justifier :
    • utiliser des arguments mathématiques pour convaincre
    • prévoir des conséquences
  • décisions :
    • demander aux élèves de choisir parmi deux scénarios, puis de justifier leur choix
  • plusieurs façons :
    • par exemple : orale, écrite, pseudocode, visuelle, au moyen de technologies
    • communiquer efficacement d’une manière adaptée à la nature du message et de l’auditoire
  • Représenter :
    • à l’aide de pseudocodes (p. ex. modèles, tables, organigrammes, mots, nombres, symboles)
    • en établissant des liens de sens entre plusieurs représentations différentes
    • au moyen de matériels concrets et d’outils technologiques interactifs dynamiques
  • discussions :
    • dialogues entre pairs, discussions en petits groupes, rencontres enseignants-élèves
  • discours :
    • utile pour approfondir la compréhension des concepts
    • peut aider les élèves à clarifier leur réflexion, même s’ils doutent quelque peu de leurs idées ou si leurs prémisses sont erronées
  • Réfléchir :
    • présenter le résultat de son raisonnement mathématique et informatique et partager celui d’autres personnes, y compris évaluer les stratégies et les solutions, développer les idées et formuler de nouveaux problèmes et de nouvelles questions
  • Faire des liens entre différents concepts mathématiques et informatiques :
    • s’ouvrir au fait que l’informatique peut aider à se connaître et à comprendre le monde autour de soi (p. ex. activités quotidiennes, pratiques locales et traditionnelles, médias populaires, événements d’actualité, justice sociale et intégration interdisciplinaire)
  • erreurs :
    • de syntaxe, de sémantique, d’exécution et de logique
  • occasions d’apprentissage :
    • en :
      • analysant ses erreurs pour cerner les éléments mal compris
      • apportant des correctifs à la tentative suivante (p. ex. débogage)
      • relevant non seulement les erreurs, mais aussi les parties d’une solution qui sont correctes
  • Incorporer :
    • en :
      • collaborant avec les Aînés et les détenteurs du savoir parmi les peuples autochtones de la région
      • explorant les principes d’apprentissage des peuples autochtones (http://www.fnesc.ca/wp/wp-content/uploads/2015/09/PUB-LFP-POSTER-Principles-of-Learning-First-Peoples-poster-11x17.pdf : l’apprentissage est holistique, introspectif, réflexif, expérientiel et relationnel [axé sur la connexité, les relations réciproques et l’appartenance]; l’apprentissage demande temps et patience)
      • faisant des liens explicites avec l’apprentissage des mathématiques
      • explorant les pratiques culturelles et les connaissances des peuples autochtones de la région, et en faisant des liens avec les mathématiques
  • connaissances :
    • connaissances locales et pratiques culturelles qu’il est convenable de partager et qui ne relèvent pas d’une appropriation
  • pratiques :
content_fr: 
  • Accès à des variables dans une mémoire
  • Différentes organisations de la structure des données dans une mémoire
  • Différents usages d’ensembles multidimensionnels
  • Algorithmes classiques, dont le tri et la recherche
  • Utilisation de la notation grand O pour prédire la performance d’exécution
  • Résolution de problème par récursivité
  • Mémoire persistante
  • Encapsulation de données
  • Différentes manières de modéliser des problèmes mathématiques
content elaborations fr: 
  • Accès à des variables :
    • passage par valeur et passage par référence, données variables et données immuables
  • structure des données :
    • vecteurs, listes, files d’attente, dictionnaires, cartes, arbres, piles
  • usages :
    • jeux de société, traitement d’image, représentation de données tabulaires ou de matrices
  • tri et recherche :
    • algorithmes de tri (p. ex. par bulles, par insertion, par sélection, rapide, par fusion)
    • algorithmes de recherche (p. ex. recherche binaire, traversée de structure de données)
  • performance :
    • analyser des algorithmes pour prédire et comparer la complexité d’exécution d’un programme
    • travailler avec de grands ensembles de données
  • Résolution de problème par récursivité :
    • reconnaître la récursivité dans un problème ou une régularité
    • suite de Fibonacci, exposants, factorielles, palindromes, combinaisons, plus grand commun diviseur, fractales
  • Mémoire persistante :
    • lecture à partir d’un fichier et écriture dans un fichier
  • Encapsulation :
    • créer son propre type, sa propre classe ou sa propre structure de données, variables publiques et privées, variables statiques et de classe
  • modéliser des problèmes mathématiques :
    • estimer une probabilité théorique par la simulation
    • représenter des suites et des séries arithmétiques finies
    • résoudre un système d’équations linéaires, croissance/décroissance exponentielle
    • résoudre une équation polynomiale
    • calculer les valeurs statistiques de grands ensembles de données (p. ex. fréquence, tendance centrale, écart-type)
PDF Only: 
Yes
Curriculum Status: 
2019/20
Has French Translation: 
Yes