What is OntoCnE?

The domains of Computational Thinking (CT) and Computer Programming (CP) are composed of several concepts that are related to each other.
Therefore, we decided to create an ontology to clarify and formalize such a relationship.

An Ontology describes a domain of knowledge, identifying: domain concepts and relationships among concepts.
Concepts are characterized by zero, one or more attributes. A concrete ontology also includes Individuals who are instances of concepts. In addition to concepts and relationships, the ontology is composed of several triples.
A triple has three elements -- Subject, Predicate, Object -- where subject and object are concepts or individuals, and predicate is a relation.

OntoCnE (Ontology for Computing at School) aims to provide a detailed and rigorous description of two domains of knowledge and their interception: Computational Thinking and Computer Programming. So, OntoCnE is intended to support the design of education programs syllabus on Computational Thinking as the basis for Computer Programming.

OntoCnE states with rigor: how to train Computational Thinking; what to train at each level of education and its depth; and the material used to train it at the various levels of education.

OntoCnE defines the domain of Computational Thinking and is composed of 3 layers, in order to be able to accurately state:

  • what concepts are needed to train Computational Thinking – Layer 1;
  • what to train at each level of education and how deep it is – Layer 2;
  • what material to use to train Computational Thinking at the various levels of education – Layer 3.

What concepts are needed to train Computational Thinking – Layer 1


In this First Layer of the ontology, concepts were identified that describe the domain of Computational Thinking and the domain of Computer Programming. Examples of collected concepts are:

Concepts{ Abstraction, Algorithm, Algorithmic_Thinking, Attribution, Automaton, Bit, Block, Byte, Collaboration, Computational_Thinking, Computer, Control_Structure, Creation, Data_Structure, Data, Decomposition, Debug, Evaluation, Error, Flowchart, Input, Instruction, Language, Logical_Reasoning, Operation, Operator, Operating, Output, Reading, Perseverance, Pattern_Recognition, Problem, Program, Programming, Regular_Expression, Result, Sequence, Test, Text_Lang, Tinkering, Variable, Visual_Lang, Writing, ...}


After defining the concepts, it was necessary to add the relationships that connect concepts to give meaning to the universe of discourse. Examples of relationships add are:

Relations{ acts_on, analyze, break, can_be, can_have, detect, follows, guide, involves, is_composed_of, is_equivalent_to, is_used_in, is_executed_by, is_materialized_by, is_written_in, manipulate, oblige, produces, requires, structure, ...}


After concepts and relations, the necessary tuples (Subject=Predicate=>Object) were defined. Below is a display fragment of this OntoCnE component that describes three main concepts: Algorithm, Computational Thinking and Program.

Triples{
Algorithm =[
requires => Computational_Thinking;
is_materialized_by => Program;
is_composed_of => Block;
manipulate => Data_Structure;
oblige => Sequence;
can_have => Control_Structure;
produces => Result;
follows => Skeleton ];
Computational_Thinking =[
involves => Creation, Debug, Collaboration, Tinkering;
requires => Perseverance, Decomposition, Abstraction, Pattern_Recognition, Logical_Reasoning, Algorithmic_Thinking, Evaluation ];
Program =[
is_composed_of => Block;
is_guided_by => Automaton;
is_written_in => Language;
is_executed_by => Computer ]; ... }


Reading the triples makes it simpler to see how the concepts relate to each other to form an understandable and meaningful description. From the triples above it is possible to infer facts as: an Algorithm requires Computational Thinking and is materialized by a Program. To go into details, the triples below provides more information about some of the object concepts in the listing above that are concerned with CT.

Triples{
Decomposition =[
acts_on => Problem;
break => Problem ];
Debug =[
analyze => Program;
detect => Error;
requires => Perseverance ];
Tinkering =[ involves => Test, Evaluation ]; ...}.


Computational Thinking involves Debug, and from triples above it is possible to understand that Debug that analyzes a Program to detect Errors, and requires Perseverance. To learn more about CP, triples below provides more information about some of the object concepts in the triples above that are concerned with CP.

Triples{
Block =[ is_composed_of => Instruction ];
Instruction =[
involves => Operation;
can_be => Attribution, Reading, Writing ];
Language=[
has => Syntax, Semantics, Lexicon;
can_be => Text_Lang, Visual_Lang];
Automaton =[
is_equivalent_to => Regular_Expression;
guide => Program ];
Regular_Expression =[
is_used_in => Pattern_Recognition ]; ...}.


Program is composed of Block, and from above it is possible to infer that a Block is composed of Instruction that can be Attribution, Reading, Writing; and involves Operation. Similarly Program is guided by an Automaton that is equivalent to a Regular Expression which is used in Pattern Recognition.

Figure below displays a fragment of Layer 1 of OntoCnE.

OntoCnE Layer 1 (fragment)

What to train at each level of education and how deep it is – Layer 2


Layer 2 of OntoCnE aims to define what to train at each level of education and its degree of depth. In this layer, twelve new concepts were added that represent each year of education, that compose the official cycle of primary and secondary studies. These concepts are presented below.

Concepts{ Year1, Year2, Year3, Year4, Year5, Year6, Year7, Year8, Year9, Year10, Year11, Year12 }


In this layer, new relationships were also added. These relations are essential to this layer because they reflect the degree of conceptual elaboration on which a teacher must focus throughout each educational year. The twelve relations added in Layer 2 are displayed below, sorted by relevance.

Relations{ examine, develop, use, introduce, apply, reinforce, optimize, identify, create, fix, execute, modify ...}


A meaning was assigned to each relationship in order to rigorously define the extent of strengthening a topic that the instructor will concentrate on over a given year:

  • examine - the student analyzes in detail and understands a concept;
  • develop - the student acquires/deepens a skill or aptitude;
  • use - the student resorts, without formalization or explanation, to a concept to be taught later;
  • introduce - the student learns a new concept that is formally defined;
  • apply - student resorts to the use of a concept, consciously and autonomously, after having been introduced to it in a previous year;
  • reinforce - the student remembers and reuses a concept and improves her/his knowledge by adding complexity;
  • optimize - the student analyzes something she/he has built and improves or perfects the initial solution;
  • identify - the student analyzes something he has built and finds an anomaly or behavior;
  • create - the student builds a new object/artifact (eg. Program) from scratch;
  • fix - the student analyzes something she/he has built and solves an anomaly or behavior, which he previously identified;
  • execute - the student performs an action (eg. invokes a program to obtain its result);
  • modify - the student changes an object to evaluate the consequence of the modification introduced.

These relations allow the linkage of each concept added in Layer 2, with the concepts of Layer 1. A snippet of the triples created in Layer 2 is shows below.

Triples{
Year1 =[
examine => Problem;
use => Decomposition, Pattern_Recognition, Visual_Lang, Program;
introduce => Algorithm, Instruction;
develop => Logical_Reasoning, Abstraction; ...];
Year2 =[
examine => Problem;
use => Variable;
introduce => Decomposition, Pattern_Recognition, Visual_Lang, Program;
execute => Program;
apply => Algorithm, Instruction;
identify => Error;
fix => Error;
develop => Logical_Reasoning, Collaboration, Abstraction; ... ];
Year3 =[ examine => Problem;
use => Binary_System;
introduce => Variable, Writing, Repetition;
apply => Decomposition, Pattern_Recognition, Visual_Lang;
modify => Program;
create => Program;
execute => Program;
reinforce => Algorithm, Instruction;
identify => Error;
fix => Error;
develop => Logical_Reasoning, Collaboration, Abstraction; ... ]; ...}.


Reading the triples above it is possible to see, the concept Algorithm is formally introduced in Year1, later in Year2 the student already applies the concept (she/he uses it consciously and uses different algorithms), and in Year3 the student reinforces the concept (she/he continues to use the concept and always goes deeper). Some concepts such as Abstraction, Problem, Error, occur with the same relationship over the years, yet there is change. Over the years the student skills will evolve, she/he will be able to abstract and examine more complex Problems and identify and correct Errors with greater complexity.

Figure below displays a fragment of Layer 2 of OntoCnE. The concepts and relationships added in Layer 2 are represented in red.

OntoCnE Layer 2 (fragment)

What material to use to train Computational Thinking at the various levels of education – Layer 3


Layer 3 of OntoCnE aims to define the material used to train the CT in the various education levels.

The material used to train Computational Thinking is called Learning Resource (LR).

Learning Resource is a device used for educational purposes in any format, real or virtual, that illustrates or supports one or more elements of a course of study; and may enrich the learning experience of the pupil or teacher. The Learning Resource aims to: develop new knowledge; put into practice or reinforce prior knowledge; encourage the understanding process; contribute to the organization and synthesis of educational content; contribute to the retention of knowledge and attitudes; contribute to logical reasoning, communication and interaction; and contribute to the development of different skills and the acquisition of student values

Learning Resources will serve to train Computational Thinking, so they play a very important role in this process. For this reason the resources must be adequate to the training of Computational Thinking so that the students can develop new knowledge and the different abilities and acquisition of values that define Computational Thinking. To train Computational Thinking, two types of resources can be used: plugged (need electronic devices) and unplugged (do not need any kind of electronic devices).

In this layer we added a new concept - Learning Resource -- with several attributes that characterize the training artifact. The referred attributes were selected to create a model that brings together the main characteristics of an LR, so that teachers can properly select an adequate resource to teach a certain subject to a certain class. Furthermore, in this layer, individuals (instances of the concept Learning Resource) also were added. PathIt will be the LR used to exemplify an individual. This concept, its attributes and an individual are presented below.

Concepts{
Learning_Resource[
title: string;
learningObjective: string;
description: string;
category: enum;
type: enum;
material: string;
usageRules: string;
evaluationMethod: string;
age: (int,int);
duration: string;
subjectsInvolved: enum;
language: string;
requirements: string;
author: string ] ...}

Individuals{ PathIt }


Learning Resource is characterized by the following attributes:

  • Title (LR name);
  • Learning Objective (concepts/skills that LR trains);
  • Description (text that explains what the LR is and the challenges/tasks it contains);
  • Category (eg: game, worksheet, video, slides, etc.);
  • Type (unplugged, plugged or both);
  • Material (needed stuff to use the LR - eg: computer, robot, paper and pencil, etc.);
  • Usage Rules(guidelines for using the LR);
  • Evaluation Method (LR assessment guidelines);
  • Age (age at which it should be used);
  • Duration (average time necessary to complete the activity.);
  • Subjects Involved (topics that LR addresses - eg: Math, History, English);
  • Language (language to be used to perform/complete the activity proposed by the LR);
  • Requirements (background necessary to execute that activity);

The Learning Resource concept will be instantiated with concrete resources that are the real artifacts that will be used to train CT (PathIt). The relations added in Layer 3 are displayed (sorted by relevance) below.

Relations{ train, resort ...}


The train relationship relates each individual Learning Resource to the concepts of Layer 1 that it trains. While resort relates the concept Year(n), from Layer 2, with the concept Learning Resource and respective individuals from Layer 3.

Below is displayed a fragment of the Layer 3 triples that aim to: describe the LR and state the concepts it trains in Layer 1 and the teaching levels at which it can be used (Layer 2).

Triples{
PathIt =[ iof => Learning_Resource[
title = 'PathIt',
learningObjective= 'PathIt aims train algorithmic thinking...',
description = 'PathIt is a LR for visually impaired users...',
category = game,
type = both,
material='board and wood piecies, phone+App',
usageRules = 'see manual annex',
evaluationMethod = 'conclude each activity with success',
age = (9,100),
duration = '45 minutes',
subjectsInvolved = None,
language = 'Portuguese',
requirements = 'None',
author = 'Angelica Cunha' ]; ...}


Ano3 =[ resort=> PathIt ];


PathIt =[
train=> Abstraction, Algorithmic Thinking, Pattern_Recognition, Logical_Reasoning Persevering, Debugging, Tinkering, Instruction, Sequence, Control_Structure, Repetition, Program, Error ]; ...}.


Figure below displays a fragment of Layer 3 of OntoCnE. In this Figure the three layers of OntoCnE are represented. The concepts and relationships added in Layer 3 are represented in orange. Note that PathIt is represented in rectangular shape because it is an individual.

OntoCnE Layer 3 (fragment)