2.1 elements of computational thinking Flashcards
2.1.1 thinking abstractly
ughhhhh
what is abstraction?
a technique that involves the removal of unnecessary elements to arrive at a problem that only includes the key features
representational abstraction
(ignore for now)
the process of analysing what is relevant to a given scenario and simplifying a problem based on this information
what is abstraction by generalisation
(ignore for now)
grouping together similarities within a problem to identify what kind of problem it is
data abstraction
(ignore for now)
details about how data is being stored are hidden
procedural abstraction
(ignore fornow)
allows programmers to ignore the complexity of how a procedure is implemented and concentrate on its usage within the system
what kind of problems make use of multiple levels of abstraction
large, complex problems
how does abstraction allow non-experts to make use of a system
hides complex and irrelevant information in abstract models
advantages of using abstraction in software development
-easier for programmer to focus on core elements
-reduces the time needed to be spent on the project
-prevents program from getting unnecessarily large
two applications of layers of abstracions
(ignore for now)
-networking (TCP/IP layer)
-programming languages
TCP/IP model
(ignore for now)
an abstraction for how networks function. Consists of 4 layers:
-application
-transport
-network
-link
advantages of using abstraction in programming languages
-easier to remember syntax in high level language as it is closer to natural language
-coding becomes accessible for beginners
what is the difference between abstraction and reality
abstraction is a simplified representation of reality
how are real world entities represented
using computational structures such as tables and databases
how does object-oriented programming use abstraction
(ignore for now)
-objects are an abstraction for real world entities
-attributes are an abstraction for the characteristics of an object
-methods are an abstraction for the actions a real-world object is able to perform
when devising an abstract model u must consider:
-what is the problem that needs to be solved by the model?
- How will the model be used?
-Who will the model be used by?
- Which parts of the problem are relevant based on the target audience and the
purpose of the model?
2.1.3 thinking procedurally
hmmmmm
what is the first stage of thinking procedurally
taking the problem defined by the user and breaking it down into its component parts
problem decomposition
a large, complex problem is continually broken down into smaller subproblems which can be solved more easily
what is the purpose of problem decomposition
to make complex problems easier to solve and more manageable by allowing tasks to be divided between a group of people according to individual skill sets
another name given to top-down design
stepwise refinement
what is the purpose of top-down design
continually breaks problems down into
subproblems until each subproblem can be
represented as a single task and ideally a self-contained subroutine or module
benefits of using top-down design
-problems can be solved and modules developed by different people
-tasks can be tested separately. Modules are self-contained
what type of problem is top-down design suited for
large, complex problems