Computational thinking, problem-solving and programming: Difference between revisions

From Computer Science Wiki
 
(31 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<center>
<center>
<blockquote style="padding: 5px; background-color: #FFF8DC; border: solid thin gray;">
<blockquote style="padding: 5px; background-color: #FFF8DC; border: solid thin gray;">
   [[File:Exclamation.png]] This is one of '''the most important ideas''' you can take with you:  
   [[File:Exclamation.png]] This is one of '''the most important ideas''' you can remember:  


   '''Decompose''' a problem into smaller parts, '''model''' a problem with flowcharts. Learn to think '''sequentially'''
   '''Decompose''' a problem into smaller parts, '''model''' a problem with flowcharts. Learn to think '''sequentially'''
Line 9: Line 9:
[[file:computation.png|right|frame|Computational thinking, problem-solving and programming<ref>http://www.flaticon.com/</ref>]]
[[file:computation.png|right|frame|Computational thinking, problem-solving and programming<ref>http://www.flaticon.com/</ref>]]


Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition, data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the decomposition of the entire decision making process, the variables involved, and all possible solutions, ensuring that the right decision is made based on the corresponding parameters and limitations of the problem. The term computational thinking was first used by Seymour Papert in 1980[1] and again in 1996.[2] Computational thinking can be used to algorithmically solve complicated problems of scale, and is often used to realize large improvements in efficiency<ref>https://en.wikipedia.org/wiki/Computational_thinking</ref>
 
Wing (2006, 2011) defined computational thinking as the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by a computer. <ref>http://pact.sri.com/downloads/Assessment-Design-Patterns-for-Computational%20Thinking-Practices-Secondary-Computer-Science.pdf</ref>
 
 
Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition, data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the decomposition of the entire decision making process, the variables involved, and all possible solutions, ensuring that the right decision is made based on the corresponding parameters and limitations of the problem. The term computational thinking was first used by Seymour Papert in 1980 and again in 1996. Computational thinking can be used to algorithmically solve complicated problems of scale, and is often used to realize large improvements in efficiency<ref>https://en.wikipedia.org/wiki/Computational_thinking</ref>




Line 16: Line 20:
=== Thinking procedurally ===
=== Thinking procedurally ===


4.1.1 Identify the procedure appropriate to solving a problem. Level: 2
* [[Procedural thinking]]
4.1.2 Evaluate whether the order in which activities are undertaken will result in the required outcome. Level: 3
* [[Evaluating process]]
4.1.3 Explain the role of sub-procedures in solving a problem. Level: 3
* [[Sub-process]]


=== Thinking logically ===
=== Thinking logically ===


4.1.4 Identify when decision-making is required in a specified situation. Level: 2
* [[Conditionals]]
4.1.5 Identify the decisions required for the solution to a specified problem. Level: 2
* [[Logical rules]]
4.1.6 Identify the condition associated with a given decision in a specified problem. Level: 2
4.1.7 Explain the relationship between the decisions and conditions of a system. Level: 3
4.1.8 Deduce logical rules for real-world situations. Level: 3


=== Thinking ahead ===
=== Thinking ahead ===


4.1.9 Identify the inputs and outputs required in a solution. Level: 2
* [[Inputs and outputs]]
4.1.10 Identify pre-planning in a suggested problem and solution. Level: 2
* [[Pre-conditions]]
4.1.11 Explain the need for pre-conditions when executing an algorithm. Level: 3
* [[Exceptions and pre-conditions]]
4.1.12 Outline the pre- and post-conditions to a specified problem. Level: 2
4.1.13 Identify exceptions that need to be considered in a specified problem solution. Level: 2


=== Thinking concurrently ===
=== Thinking concurrently ===


4.1.14 Identify the parts of a solution that could be implemented concurrently. Level: 2
* [[Concurrency]]
4.1.15 Describe how concurrent processing can be used to solve a problem. Level: 2
4.1.16 Evaluate the decision to use concurrent processing in solving a problem. Level: 3


=== Thinking abstractly ===
=== Thinking abstractly ===


4.1.17 Identify examples of abstraction. Level: 2
* [[Abstraction]]
4.1.18 Explain why abstraction is required in the derivation of computational solutions for a specified situation. Level: 3
4.1.19 Construct an abstraction from a specified situation. Level: 3
4.1.20 Distinguish between a real-world entity and its abstraction. Level: 2


=== Programming Design ===
=== Connecting computational thinking and program design  ===


4.2.1 Describe the characteristics of standard algorithms on linear arrays. Level: 2
* [[Linear arrays]]
4.2.2 Outline the standard operations of collections. Level: 2
* [[Pseudocode]]
4.2.3 Discuss an algorithm to solve a specific problem. Level: 3
* [[Algorithms]]
4.2.4 Analyse an algorithm presented as a flow chart. Level: 3
* [[Applied algorithmic thinking]]
4.2.5 Analyse an algorithm presented as pseudocode. Level: 3
4.2.6 Construct pseudocode to represent an algorithm. Level: 3
4.2.7 Suggest suitable algorithms to solve a specific problem. Level: 3
4.2.8 Deduce the efficiency of an algorithm in the context of its use. Level: 3
4.2.9 Determine the number of times a step in an algorithm will be performed for given input data. Level: 3


=== Introduction to Programming ===
=== Introduction to programming ===


* [[Fundamental operations]]
* [[Compound operations]]
* [[What is a programming language?]]
* [[What is a programming language?]]
* [[High level languages]]
* [[High level languages]]
* [[Compiler]]
* [[Low level languages]]
* [[Low level languages]]
* [[Translating high-level code to low-level code]]
* [[Translating high-level code to low-level code]]
* [[Control flow]]


=== Use of programming languages ===  
=== Use of programming languages ===  


* [[Variables]] (See also: [[data types]] and [[primitive data types]])
* [[Variables]]  
* [[Constants]] (See also: [[data types]] and [[primitive data types]])
* [[Constants]]
* [[Objects]] (See also: [[data types]] and [[primitive data types]])
* [[Objects]]  
* [[Operators]]
* [[Operators]]
* [[Conditionals]]
* [[Algorithms]]
* [[Algorithms]]
* [[Arrays]]
* [[Collections]]
* [[Collections]]
4.3.12 Discuss the need for sub-programmes and collections within programmed solutions. Level: 3
* [[Functions]]
4.3.13 Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections. Level: 3
* [[Loops]]
 
== Other important ideas in programming ==
 
* [[Regular expressions]]
* [[Design Patterns]]
* [[Object-Oriented Programming]]
 
== Standards ==
{| style="width: 95%; font-size: 12px;" class="wikitable sortable"
|-style="background-color:#E6F9E6;"
| colspan="2" | '''Computational thinking, problem-solving and programming'''
|-
| Identify the procedure appropriate to solving a problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Evaluate whether the order in which activities are undertaken will result in the required outcome.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain the role of sub-procedures in solving a problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify when decision-making is required in a specified situation.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify the decisions required for the solution to a specified problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify the condition associated with a given decision in a specified problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain the relationship between the decisions and conditions of a system.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Deduce logical rules for real-world situations.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify the inputs and outputs required in a solution.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify pre-planning in a suggested problem and solution.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain the need for pre-conditions when executing an algorithm.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Outline the pre- and post-conditions to a specified problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify exceptions that need to be considered in a specified problem solution.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify the parts of a solution that could be implemented concurrently.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Describe how concurrent processing can be used to solve a problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Evaluate the decision to use concurrent processing in solving a problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Identify examples of abstraction.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain why abstraction is required in the derivation of computational solutions for a specified situation.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Construct an abstraction from a specified situation.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Distinguish between a real-world entity and its abstraction.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Describe the characteristics of standard algorithms on linear arrays.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Outline the standard operations of collections.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Discuss an algorithm to solve a specific problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Analyse an algorithm presented as a flow chart.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Analyse an algorithm presented as pseudocode.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Construct pseudocode to represent an algorithm.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Suggest suitable algorithms to solve a specific problem.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Deduce the efficiency of an algorithm in the context of its use.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Determine the number of times a step in an algorithm will be performed for given input data.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| State the fundamental operations of a computer.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Distinguish between fundamental and compound operations of a computer.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain the essential features of a computer language.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Explain the need for higher level languages.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Outline the need for a translation process from a higher level language to machine executable code.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Define the terms: variable, constant, operator, object.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Define common operators.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Analyse the use of variables, constants and operators in algorithms.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Construct algorithms using loops, branching.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Describe the characteristics and applications of a collection.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Construct algorithms using the access methods of a collection.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Discuss the need for sub-programmes and collections within programmed solutions.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-
| Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections.|| [[Computational thinking, problem-solving and programming | Computational Thinking]]
|-style="background-color:#E6F9E6;"
|}


== References ==
== References ==

Latest revision as of 13:48, 11 October 2017

Exclamation.png This is one of the most important ideas you can remember:

Decompose a problem into smaller parts, model a problem with flowcharts. Learn to think sequentially

Computational thinking, problem-solving and programming[1]


Wing (2006, 2011) defined computational thinking as the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by a computer. [2]


Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition, data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the decomposition of the entire decision making process, the variables involved, and all possible solutions, ensuring that the right decision is made based on the corresponding parameters and limitations of the problem. The term computational thinking was first used by Seymour Papert in 1980 and again in 1996. Computational thinking can be used to algorithmically solve complicated problems of scale, and is often used to realize large improvements in efficiency[3]


The big ideas in computational thinking[edit]

Thinking procedurally[edit]

Thinking logically[edit]

Thinking ahead[edit]

Thinking concurrently[edit]

Thinking abstractly[edit]

Connecting computational thinking and program design[edit]

Introduction to programming[edit]

Use of programming languages[edit]

Other important ideas in programming[edit]

Standards[edit]

Computational thinking, problem-solving and programming
Identify the procedure appropriate to solving a problem. Computational Thinking
Evaluate whether the order in which activities are undertaken will result in the required outcome. Computational Thinking
Explain the role of sub-procedures in solving a problem. Computational Thinking
Identify when decision-making is required in a specified situation. Computational Thinking
Identify the decisions required for the solution to a specified problem. Computational Thinking
Identify the condition associated with a given decision in a specified problem. Computational Thinking
Explain the relationship between the decisions and conditions of a system. Computational Thinking
Deduce logical rules for real-world situations. Computational Thinking
Identify the inputs and outputs required in a solution. Computational Thinking
Identify pre-planning in a suggested problem and solution. Computational Thinking
Explain the need for pre-conditions when executing an algorithm. Computational Thinking
Outline the pre- and post-conditions to a specified problem. Computational Thinking
Identify exceptions that need to be considered in a specified problem solution. Computational Thinking
Identify the parts of a solution that could be implemented concurrently. Computational Thinking
Describe how concurrent processing can be used to solve a problem. Computational Thinking
Evaluate the decision to use concurrent processing in solving a problem. Computational Thinking
Identify examples of abstraction. Computational Thinking
Explain why abstraction is required in the derivation of computational solutions for a specified situation. Computational Thinking
Construct an abstraction from a specified situation. Computational Thinking
Distinguish between a real-world entity and its abstraction. Computational Thinking
Describe the characteristics of standard algorithms on linear arrays. Computational Thinking
Outline the standard operations of collections. Computational Thinking
Discuss an algorithm to solve a specific problem. Computational Thinking
Analyse an algorithm presented as a flow chart. Computational Thinking
Analyse an algorithm presented as pseudocode. Computational Thinking
Construct pseudocode to represent an algorithm. Computational Thinking
Suggest suitable algorithms to solve a specific problem. Computational Thinking
Deduce the efficiency of an algorithm in the context of its use. Computational Thinking
Determine the number of times a step in an algorithm will be performed for given input data. Computational Thinking
State the fundamental operations of a computer. Computational Thinking
Distinguish between fundamental and compound operations of a computer. Computational Thinking
Explain the essential features of a computer language. Computational Thinking
Explain the need for higher level languages. Computational Thinking
Outline the need for a translation process from a higher level language to machine executable code. Computational Thinking
Define the terms: variable, constant, operator, object. Computational Thinking
Define common operators. Computational Thinking
Analyse the use of variables, constants and operators in algorithms. Computational Thinking
Construct algorithms using loops, branching. Computational Thinking
Describe the characteristics and applications of a collection. Computational Thinking
Construct algorithms using the access methods of a collection. Computational Thinking
Discuss the need for sub-programmes and collections within programmed solutions. Computational Thinking
Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections. Computational Thinking

References[edit]