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. + +
+
+ +### Understanding the game + +#### Equipment +The equipment includes sixteen letter cubes, a shaker-tray and a timer. + +#### Object +The object is to list, within the time limit, as many correct words as possible. Words are formed from the assortment of letters arranged in the cube tray. + +
+
+boggle box +
+
+ + +### Rules +Words are formed by the use of adjoining letters. Letters must join in the proper sequence to spell a word. They may join horizontally, vertically or diagonally, to the left, right or up and down. But no one letter cube may be used more than once within a single word. + +boggle right +boggle wrong + + +You might prefer to design your software in a visual style, perhaps as flow charts, or you could write pseudo-code, or an outline in a coding language such as R or Python. + +The aim is not to create a working program, but rather to express the key design decisions in a way that can be discussed and shared. + diff --git a/reveal.js/md/08_sudoku_task.md b/reveal.js/md/08_sudoku_task.md deleted file mode 100644 index 06b652c..0000000 --- a/reveal.js/md/08_sudoku_task.md +++ /dev/null @@ -1,14 +0,0 @@ - -We are now going to put together everything we know to write a computer program to solve a sudoku. A sudoku is a 9x9 grid, where the goal is to assign -digits (from 1 to 9) to the empty cells so that every row, column, and sub-grid of size 3×3 contains exactly one instance of the digits from 1 to 9. - - -![sudoku](../images/sudoku.jpg) - - -You can write your solution in any programming language. You can work individually or in small groups. We recommend you spend some time planning out your solution before you start implementing. If you want you could design a flow chart to represent your algorithm. - -A selection of different difficulty sudokus for you to use to help develop your algorithm can be found [here](https://www.sudokuoftheday.com/dailypuzzles). - -Can you use your computational thinking skills to improve the speed of the algorithm? - diff --git a/reveal.js/md/09_wrapup.md b/reveal.js/md/09_wrapup.md index ea4fd14..8019fdc 100644 --- a/reveal.js/md/09_wrapup.md +++ b/reveal.js/md/09_wrapup.md @@ -7,6 +7,7 @@ We are grateful to the workshop leaders and helpers for supporting the delivery. If you have benefited in any way from this course and want to support its long term sustainability then please take the time to complete our feedback survey, recommend it to your colleagues, and enthuse about it to your senior leadership team. The programme and workshops are under constant evolution, and we are grateful for your feedback which is a core component of this process. + ## Follow up Course notes and resources are available all year round for you to revisit and share as you need.