diff --git a/reveal.js/fig/boggle-box.png b/reveal.js/fig/boggle-box.png new file mode 100644 index 0000000..69c5bbb Binary files /dev/null and b/reveal.js/fig/boggle-box.png differ diff --git a/reveal.js/fig/boggle-right.png b/reveal.js/fig/boggle-right.png new file mode 100644 index 0000000..5069e33 Binary files /dev/null and b/reveal.js/fig/boggle-right.png differ diff --git a/reveal.js/fig/boggle-wrong.png b/reveal.js/fig/boggle-wrong.png new file mode 100644 index 0000000..c9e7b4c Binary files /dev/null and b/reveal.js/fig/boggle-wrong.png differ diff --git a/reveal.js/fig/hammersmith-line-2024.png b/reveal.js/fig/hammersmith-line-2024.png new file mode 100644 index 0000000..2f79bd2 Binary files /dev/null and b/reveal.js/fig/hammersmith-line-2024.png differ diff --git a/reveal.js/fig/tube-geography.jpg b/reveal.js/fig/tube-geography.jpg new file mode 100644 index 0000000..23046e0 Binary files /dev/null and b/reveal.js/fig/tube-geography.jpg differ diff --git a/reveal.js/fig/tube-map.jpg b/reveal.js/fig/tube-map.jpg new file mode 100644 index 0000000..7f2c926 Binary files /dev/null and b/reveal.js/fig/tube-map.jpg differ diff --git a/reveal.js/index.html b/reveal.js/index.html index 794dc43..e480b51 100644 --- a/reveal.js/index.html +++ b/reveal.js/index.html @@ -92,9 +92,10 @@ + - + diff --git a/reveal.js/md/05c_recap.md b/reveal.js/md/05c_recap.md new file mode 100644 index 0000000..2bc874d --- /dev/null +++ b/reveal.js/md/05c_recap.md @@ -0,0 +1,23 @@ +## What is computational thinking? + +![four pillars](../images/fourpillars.jpg) + + +## Algorithms + +1. Reproducibility - a standardized process ensures the same steps on every execution +2. Efficiency - identify repetitive processes and optimize, remove unnecessary steps +3. Scalability - a clearly defined process can be extended to run on larger datasets +4. Sharable - efficient way to share a process with others +5. Automation - once a repeatable solution has be defined it can be automated + + +## Decomposition + +Break the problem into smaller parts - sub-problems + + +## Pattern recognition + +Look for opportunities to repeat, or re-use, existing fragments + diff --git a/reveal.js/md/06_abstraction.md b/reveal.js/md/06_abstraction.md index ba44932..6be7c26 100644 --- a/reveal.js/md/06_abstraction.md +++ b/reveal.js/md/06_abstraction.md @@ -2,6 +2,14 @@ Abstraction is about simplifying problems, making them easier to solve. The idea is to identify and then ignore information that is not essential. +## Relation to programming + +Abstraction is an approach that helps solve problems. A core component of programming is about creating and composing abstractions, using objects and functions to represent and define the solution. + +Abstraction works by establishing a level of complexity at which a person interacts with a system, suppressing the more complex details below the current level. Abstraction allows programmers to define objects and functions that can interact with each other in a predictable way without having to understand the underlying details of their implementation. + +When you see a simple interface covering a more complex implementation, this is abstraction. + ## Example - the London tube map @@ -14,16 +22,18 @@ The problem the tube map is designed to solve is to help people navigate the und 5. which stations have onward connections to other transport modes (e.g. National Rail) 6. which stations have step free access -Information that is not essential to this problem is the geographical relativity of each station to each other. This information has been deliberately excluded, as it does not help solve the specific problem of how to navigate London by tube. The tube map would not be appropriate to navigate between the stations above ground by foot, bike or road. + -## Relation to programming +Information that is not essential to this problem is the precise location of each station. So it is removed... -Abstraction is an approach that helps solve problems. A core component of programming is about creating and composing abstractions, using objects and functions to represent and define the solution. -Abstraction works by establishing a level of complexity at which a person interacts with a system, suppressing the more complex details below the current level. Abstraction allows programmers to define objects and functions that can interact with each other in a predictable way without having to understand the underlying details of their implementation. + -When you see a simple interface covering a more complex implementation, this is abstraction. + +When on a particular line, even less information is required... + + ## Example - motor car diff --git a/reveal.js/md/08_boggle_task.md b/reveal.js/md/08_boggle_task.md new file mode 100644 index 0000000..bd93bcb --- /dev/null +++ b/reveal.js/md/08_boggle_task.md @@ -0,0 +1,34 @@ + +# Boggle + +We are now going to put together everything we know to design a software model of a popular English language word game. + +