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

From Computer Science Wiki
No edit summary
No edit summary
Line 10: Line 10:
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>
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>


== The big ideas in system fundamentals ==  
== The big ideas in computational thinking ==  
=== Systems in Organizations ===
A computer program or computer system is used by people who work in organizations. It is very helpful to understand how people, computers, and organizations work together.


==== Planning and system installation ====
=== Thinking procedurally ===
* [[System planning]]
* [[Change management]]
* [[Legacy system]]
* [[Testing implementation]]
* [[Installation process]]
* [[Data migration]]
* [[Testing]]


==== User Focus ====
4.1.1 Identify the procedure appropriate to solving a problem. Level: 2
4.1.2 Evaluate whether the order in which activities are undertaken will result in the required outcome. Level: 3
4.1.3 Explain the role of sub-procedures in solving a problem. Level: 3


* [[User documentation]]
=== Thinking logically ===
* [[User training]]


==== System Backup ====
4.1.4 Identify when decision-making is required in a specified situation. Level: 2
4.1.5 Identify the decisions required for the solution to a specified problem. Level: 2
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


* [[Data loss]]
=== Thinking ahead ===
* [[Preventing data loss]]


==== Software Deployment ====
4.1.9 Identify the inputs and outputs required in a solution. Level: 2
4.1.10 Identify pre-planning in a suggested problem and solution. Level: 2
4.1.11 Explain the need for pre-conditions when executing an algorithm. Level: 3
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


* [[Managing releases and updates]]
=== Thinking concurrently ===


=== System Design ===
4.1.14 Identify the parts of a solution that could be implemented concurrently. Level: 2
==== Components of a computer system ====
4.1.15 Describe how concurrent processing can be used to solve a problem. Level: 2
* [[Hardware, software, peripheral, network, human resources]]
4.1.16 Evaluate the decision to use concurrent processing in solving a problem. Level: 3
* [[Computers in a networked world]]
* [[Social and ethical issues in a networked world]] (also see [[ethics]])


==== System Design and analysis ====
=== Thinking abstractly ===
* [[Planning and stakeholder involvement]]
* [[Getting requirements from stakeholders]] (see also [[design process]])
* [[Gathering information for solutions]] (see also [[design process]])
* [[Illustrate system requirements]] (see also [[design process]])
* [[Prototypes]] (see also [[design process]])
* [[Iteration]] (see also [[design process]])
* [[Why end-users matter so much]] (see also [[design process]])
* [[Social and ethical issues associated with the introduction of new IT systems]] (see also [[design process]])


==== Human interaction with the system ====
4.1.17 Identify examples of abstraction. Level: 2
* [[Usability]]
4.1.18 Explain why abstraction is required in the derivation of computational solutions for a specified situation. Level: 3
* [[Problems with usability]]
4.1.19 Construct an abstraction from a specified situation. Level: 3
* [[Improving usability]]
4.1.20 Distinguish between a real-world entity and its abstraction. Level: 2
* [[Moral, ethical, social, economic and environmental implications of the interaction between humans and machines]] (see also [[ethics]])
 
=== Programming Design ===
 
4.2.1 Describe the characteristics of standard algorithms on linear arrays. Level: 2
4.2.2 Outline the standard operations of collections. Level: 2
4.2.3 Discuss an algorithm to solve a specific problem. Level: 3
4.2.4 Analyse an algorithm presented as a flow chart. Level: 3
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 ===
 
4.3.1 State the fundamental operations of a computer. Level: 1
4.3.2 Distinguish between fundamental and compound operations of a computer. Level: 2
4.3.3 Explain the essential features of a computer language. Level: 3
4.3.4 Explain the need for higher level languages. Level: 3
4.3.5 Outline the need for a translation process from a higher level language to machine executable code. Level: 2
 
=== Use of programming languages ===
 
4.3.6 Define the terms: variable, constant, operator, object. Level: 1
4.3.7 Define common operators. Level: 1
4.3.8 Analyse the use of variables, constants and operators in algorithms. Level: 3
4.3.9 Construct algorithms using loops, branching. Level: 3
4.3.10 Describe the characteristics and applications of a collection. Level: 2
4.3.11 Construct algorithms using the access methods of a collection. Level: 3
4.3.12 Discuss the need for sub-programmes and collections within programmed solutions. Level: 3
4.3.13 Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections. Level: 3


== References ==
== References ==

Revision as of 13:43, 12 April 2016

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

Decompose a problem into smaller parts, model a problem with flowcharts.

Computational thinking, problem-solving and programming[1]

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[2]

The big ideas in computational thinking[edit]

Thinking procedurally[edit]

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

Thinking logically[edit]

4.1.4 Identify when decision-making is required in a specified situation. Level: 2 4.1.5 Identify the decisions required for the solution to a specified problem. Level: 2 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[edit]

4.1.9 Identify the inputs and outputs required in a solution. Level: 2 4.1.10 Identify pre-planning in a suggested problem and solution. Level: 2 4.1.11 Explain the need for pre-conditions when executing an algorithm. Level: 3 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[edit]

4.1.14 Identify the parts of a solution that could be implemented concurrently. Level: 2 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[edit]

4.1.17 Identify examples of abstraction. Level: 2 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[edit]

4.2.1 Describe the characteristics of standard algorithms on linear arrays. Level: 2 4.2.2 Outline the standard operations of collections. Level: 2 4.2.3 Discuss an algorithm to solve a specific problem. Level: 3 4.2.4 Analyse an algorithm presented as a flow chart. Level: 3 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[edit]

4.3.1 State the fundamental operations of a computer. Level: 1 4.3.2 Distinguish between fundamental and compound operations of a computer. Level: 2 4.3.3 Explain the essential features of a computer language. Level: 3 4.3.4 Explain the need for higher level languages. Level: 3 4.3.5 Outline the need for a translation process from a higher level language to machine executable code. Level: 2

Use of programming languages[edit]

4.3.6 Define the terms: variable, constant, operator, object. Level: 1 4.3.7 Define common operators. Level: 1 4.3.8 Analyse the use of variables, constants and operators in algorithms. Level: 3 4.3.9 Construct algorithms using loops, branching. Level: 3 4.3.10 Describe the characteristics and applications of a collection. Level: 2 4.3.11 Construct algorithms using the access methods of a collection. Level: 3 4.3.12 Discuss the need for sub-programmes and collections within programmed solutions. Level: 3 4.3.13 Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections. Level: 3

References[edit]