OpenLLM-France/wikimedia huggingface dataset:
# KS3 Computing/Projects Ideas/Creating wearable tech using a crumble

Programming LEDs using a simple programmable device - a simple programming activity to create a piece of wearable tech using Crumble sparkles. This activity teaches sequence and repetition.
* Use one or more programming languages, to solve a variety of computational problems.
* Design computational abstractions that model the state and behavior of real world problems.
How to use a Crumble from Redfern
Simple images of a traffic light hat, a fun hat for younger pupils to learn about road safety.
1. Set the scene.
Discuss: Design approach; Requirements including audience; Examples of wearable tech.
Explain to learners that they are going to be creating wearable tech for a particular set of requirements/themes/design criteria for a particular audience (users), e.g. props for a younger pupils play, clothing for a fund raising digital fashion show, safety clothing for cyclists. Lead a class discussion about how they might create the clothing. Explore ideas such as investigating the user requirements, investigating examples of wearable tech, creating a design, choosing the software, writing and debugging the code, presenting and evaluating the tech. Ask pupils what we call it when we break a problem down into parts. Decomposition.
2. Design. Draw labelled diagram of design. Annotate with a table or flowchart detailing an initial design of the lighting pattern, for example start, light 1 red, light 2 blue, light 3 green, wait 3 seconds, light 1 orange, light 2 blue, light 3 yellow, wait 3 seconds repeat from start. (Note this provides the algorithm.) (Note in breaking the pattern down into steps students are decomposing the algorithm.)
3. Trial crumble components. Assemble the electronic components and use the algorithm to program the crumble, adding one step at a time and debugging before moving on to the next step of the algorithm. Update design reflecting any changes made.
4. Make wearable items. Make fabric components of the design.
5.Integrate crumble components with wearable items. Retest the product.
6. User testing. Test the products made with the user community. Update designs and rework as necessary.
7. Evaluate. Evaluate the product against the design brief.
Visual programming language downloaded from Redfern here. http://redfernelectronics.co.uk/crumble-software/
Crumble - a crumble is a small programmable circuit board from Redfern Electronics. It can be programmed using a simple 'scratch like' graphical programming language. This programming language supports sequence, selection, repetition, variables. The crumble can take inputs from sensors such as light or movement sensors and controls motors, leds and Redfern's sparkles.
Stretch material. Crumble nightlight
# KS3 Computing/Projects Ideas/Cross Curricular maths problems

Kids already solve complex programming problems everyday, It's called MATHS. The maths they do everyday in class is already advanced programming.
If we can get the kids to see and understand how they can use the computer (i.e. programming) to solve maths questions they have in their own (or next year's) textbook
Resources/examples:
* http://uk.ixl.com/math/year-7
* https://www.mathway.com/examples/Basic-Math/Factors-Fractions-and-Exponents/Simple-Exponents?id=197
* See CAS resources
# KS3 Computing/Projects Ideas

Ideas for projects
* Cross Curricular maths problems
* Hack applications
* Creating wearable tech using a crumble
* Build a Solar System
# KS3 Computing/RoleModels

Here is a range of people who have made a positive contribution to the world through their work in Computer Science. They are all at time of writing (April 2015) Alive and working.
* Richard Stallman
* Anne-Marie Imafidon
* Marrise Mayer
* Larry Page
* Richard Stallman - launched the GNU Project in September 1983
* Anne-Marie Imafidon - 19 in June 2010, she became the youngest ever graduate with a masters degree from Oxford University
* Marissa Mayer - Google's first female engineer
* Larry Page - Co-Founder of Google
# KS3 Computing/Presentation
## C.R.A.P Presentations

Making C.R.A.P. presentations is very important in getting your message across.
C.R.A.P stands for:
* Contrast - If 2 things are not the same, make them REALLY different
* Repetition - Repeated elements strengthens organisation
* Alignment - Give every element a visual connection to another element on the slide
* Proximity - Items relating to each other should be grouped close together
For more information check out Presentation:"Your Presentation is CRAP, and That's Why I Like It".

## Powtoon

Ever thought you could make an animated presentation in minutes. Click the link below to find out about Powtoon.
How to create animated presentations

## Animoto

Do you have loads of pictures and want to turn it into a presentation? Try and use Animoto.
Animoto
click and type here
# KS3 Computing/Projects Ideas/Hack applications

A very sexy area of computing is the 'hacking' and 'security/application exploitation'. When done in a non malicious way, hacking an application is the best way to learn about programming
Ideas for hacking challenges:
* Login into without needing password
* Find the Solution for 'find the number'
* Transfer money from one account into another
* Logout user from Website A, by visiting page on Website B
* Crack an encrypted message created by
** Simple cyphers (Letter substitution)
** Algorithm (ie algebra)
** Enigma machine
* Modify web pages content
** adding new logos
** enabling disabled links or buttons
** revealing hidden fields
In the computing industry, Capture the flag are social events that present challenges (like the ones listed above) to teams in a competition where the winner is the team with the most flags. Here is a list of Practice CTF List / Permanant CTF List
We can use vulnerable by design applications like:
* https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project#tab=On-Line_apps
* http://google-gruyere.appspot.com/ for a good example of an sandboxed environment
* https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
# KS3 Computing/Projects Ideas/Build a Solar System
## Exploring our galactic neighbours
### Space Shuttle rough idea

The idea of this project is to step the student through building a moderately complex application. Each step builds on the last one. The entry level is fairly low, but there is lots of scope for exploring more complex ideas.
Program the following, with the existing skeleton application as a base for your model:
* Calculate the fuel required to launch a space shuttle from Earth and break through the atmosphere.
** Consider the volume of the fuel tank, the weight of the shuttle and the pull of gravity. We'll ignore the impact of air resistance for now.
* The angle and timing of the launch to reach Mars.
* Landing the capsule on Mars.
* Exploring Mars for a suitable base for humans.
** Consider how to do this in a fuel-efficient way.

### Distances from the Sun

* Open the Solar System builder. In front of you is a model of the system with just the Earth and the Sun. The scale shows roughly how far apart they are from each other at any given time.
Insert interesting facts about the distance between the Earth and the Sun
* Try adding Mars to the model. You might have to search the web to the find how far Mars is from the sun!
The data structure might look something like this:
* At this point, your model should be showing Mars, Earth and the Sun.
* Add the rest of the Solar System's planets to the model.
# JavaScript/Reserved words/try
## The try keyword

The try keyword is used to be sure that a number of commands to follow will not cause an unhandled exception. If one of the lines causes an exception, the code inside the catch clause will be executed. If the try statement does have a finally clause, this part will execute irrespective of what happened before.

### Examples
## See also

* catch
* finally
* throw
# JavaScript/Reserved words/throw
## The throw keyword

The throw keyword is used to be sure that an exception is caught when it occurs. It has the obligatory catch clause, and the optional finally clause. If the code inside the try block does not cause an exception, the code inside the finally block will execute, if it exists. If an error occurs, the comments inside the catch clause will execute, the finally block will execute, if it exists.

### Examples
## See also

* catch
* finally
* try
# JavaScript/Reserved words/typeof
## The typeof keyword

The typeof keyword is a unary operator that returns a string giving the type of the parametre.

### Syntax

The operator returns six values, which are boolean, function, number, object, string, and undefined.
# JavaScript/Reserved words/while
## The do keyword

The while clause includes a condition that determines when the do loop will end.

### Examples
## See also

* do
# JavaScript/Shell

You can play around with JavaScript in one of multiple shells, in interactive batch mode. This means that you can enter JavaScript one line at a time and have it immediately executed; and if you enter a statement that returns a value without assigning the value anywhere, the value is displayed.
For a list of shells, see the mozilla.org list referenced from Enternal links.
Keywords: REPL.

## Standalone

Mozilla Firefox uses SpiderMonkey JavaScript engine, which is available as a standalone interactive shell for multiple platforms. You can download it from:
* https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
** Look for jsshell-*.zip
Unzip the file, and run "js" from the command line. A prompt appears:
You can enter statements, one at a time:
Multi-line function definitions can be entered one line at a time, pressing enter after each line.
To run JavaScript snippets that use alert function--since they are intended for web browsers, you can define your own alert function:

## From browser

You can have an interactive mode, entering JavaScript one line at a time and have it immediately executed, directly from your web browser.
In many versions of Firefox, press Control + Shift + K to get a web console window. At the bottom of the console window, there is a separate one-line field into which you can enter JavaScript lines and have them run by pressing Enter. Even multi-line function definitions can be entered, but not by pressing Enter but rather Shift + Enter and pressing Enter only after the whole definition was entered.

## External links

* Introduction to the JavaScript shell, developer.mozilla.org
* JavaScript shells, developer.mozilla.org
* JavaScript Engine Speeds, ejohn.org
* JavaScript interactive shell with completion, stackoverflow.com
# JavaScript/Reserved words/var
## The var keyword

The var keyword is optional and used to declare a variable. This operator is necessary if the code includes the line "use strict;".
# JavaScript/Restructure DOM

Besides adding and removing nodes, a common activity on trees is the rearranging of nodes respectively of sub-trees. In some of the previous examples, we have seen that appendChild inserts a node as the last child of a parent node. Of course, this is not delimited to the case that the child is currently created. The same operation is possible for an existing node. Hence it is an appropriate function to perform rearrangements.

## Example page

We use the following example HTML page to demonstrate the possibilities.

## Move an element to the end of siblings

We identify two elements and move them to the end of another node. This other node is not necessarily the old parent. But after the movement, it becomes the new parent.
As you see, the 'Ice creme' is moved to the end (temporarily) of its product group. After that, the 'cakes', which were a child of the second product group, were moved to the end of the first product group.

## Move an element before a sibling

You can move an element to any position within a group of siblings. ('Siblings' are nodes with a common parent node.) First, you must locate the parent. Next, you locate the child, which shall become the new successor of the element. When both nodes are known, the function insertBefore inserts the element to this position.
As an example, we move the 'Cakes' to the first place of the first product group.
Here, the 'Cakes' become the first element of the first product group. With the same commands you can move them to any position in the sequence of siblings. Just locate the sibling that shall be his new successor instead of 'li_11'.

## Attributes

The sequence of attributes within an element is in no way relevant. Hence, there is no need and no function to rearrange them. When a DOM gets serialized, programs may do it in different ways (original sequence, alphabetically, ...).

## Exercises

    ... are available on another page (click here).

## See also

* MDN Append Child
* MDN Insert Before
# JavaScript/Self Test

You can test yourself by answering the following questions. When in doubt, you should undertake a test in your development environment (editor, IDE, browser). So it's also a test of whether you have installed all the necessary tools to execute the examples of the Wikibook.
# JavaScript/Restructure DOM/Exercises

Topic: Restructure the DOM tree
1. We use the HTML page of the previous page for the exercises. Write a script that moves the two <div> sections BEFORE the button.
# JavaScript/Strict mode
## The strict mode

Strict mode can be enabled by placing '"use strict";' at the beginning of a script, before other statements:
It can also be enabled for a single function only:
Strict mode ensures the following:
* New variables need to be declared with "var"; "var" is no longer optional.
* Attempts to write to non-writable variables throw an error rather than silently doing nothing.
* Attempts to delete undeletable properties throw an error rather than silently doing nothing.
* Octal numerals are disallowed.
* Etc.
Strict mode is available since JavaScript 1.8.5, i.e. ECMAScript version 5.

## External links

* Strict mode, developer.mozilla.org
* JavaScript Use Strict, w3schools.com
* Strict Mode (JavaScript), msdn.microsoft.com
# Knowledge Patterns/Acknowledgements

Please add and edit as we go along:
* Kim Tucker - so far, for starting this book.
# Knowledge Patterns/Key Contributors

Key contributions include
* Contributors to the vision for this book
* writers
* reviewers
* editors
* illustrators
* etc.
Please add your details below if you are a key contributor.
Hint: cut, paste and edit the wiki markup text from one of the other contributors.

### Kim Tucker

| Position | Catalyst/ Researcher/ Editor/ Reviewer |
| Affiliation | Freelance |
| Location | Switzerland |
| Role | Catalyst/ Facilitator/ Editor/ Reviewer |
| Brief Biography | Kim Tucker is a researcher, writer, facilitator and catalyst interested in the global impact of technology and connected collaborative learning, and knowledge transfer across disciplines and divides. He promotes free software and "libre knowledge" emphasising the freedoms users of "libre resources" should enjoy to permit unrestrained social contructionist learning in the connected "copy modify mix and share" culture. |
# Knowledge Patterns

Knowledge Patterns is the culmination of years of research on knowledge and learning from a patterns point of view.
The book will cover knowledge patterns in the small (i.e. in an individual's mind), and in the large (across many minds).
Inspired by Alexander, analysis patterns, design patterns, etc. and moving into other disciplines including education and learning, psychology, physiotherapy, ecology, sport (tactics), etc. ...
... watch this space ... and participate.

## Table of Contents

See Discuss Structure for some ideas.

## Writing this Book

* Process
* Quotes (suggest quotes)
* References (add to the reading list)
Acknowledgements
# Knowledge Patterns/Process/Plan

Please elaborate.
Establish sub-teams for chapters.

## Roles

Roles:
* Writers
* Editors
* Facilitators (keep the discussions alive - by section/ chapter/ volume/ overall editing/ etc.

## Facilitation

Facilitated online (e-mail/wiki) dialogue by chapter:
* brain dump
* synthesise
* version alpha - release date
* version beta - date
* 1.0

## Tools
### Issue Trackers

Set up issue trackers similar to this or this.
# Knowledge Patterns/References

The idea for knowledge patterns came from software design which came from architecture. The patterns concept has been applied in many fields including psychology, music, linguistics, physiotherapy, ... and is ripe for application in others.

## Software (analysis, design, architecture, ...) Patterns and Idioms

* Design Patterns
* http://java.sun.com/blueprints/patterns/ Java BluePrints and Patterns]
* Martin Fowler's books - pick out the ones on patterns.

## Pedagogical Patterns

* Practical design patterns for teaching and learning with technology
# Knowledge Patterns/Discuss Structure

The book will cover knowledge patterns in the small (i.e. in an individual's mind), and in the large (i.e. across many minds).
The discussion of the structure of the volumes, chapters, etc. starts here:
# Knowledge Patterns/Process

Suggested:
* Identify Key Contributors
* Discuss Structure - volumes and chapters
* Plan the work of the Key Contributors
* Collect Quotes and References
* Collect Stories of Learning and Case Studies of knowledge transfer via patterns (in and across disciplines)
* Design Figures - including icons, images and illustrations (on-going)
* Weave together contributions into volumes
* When a volume looks to have a solid collection of sections and chapters, drive the process more proactively to complete the volume and publish a "milestone" snapshot.
* etc. (recursively for each volume, chapter, ...) (on-going).
# Knowledge Patterns/Process/Discuss Structure

The book will cover knowledge patterns in the small (in the heads of individuals), and in the large (collective or distributed knowledge).
# Knowledge Patterns/Quotes

Start here: Knowledge at Wikiquote
# Knowledge Patterns/Stories of Learning

See Lore of Learning/Stories of Learning and consider capturing the stories there - or create a new pool of stories here?
# Knots/Seizing knots/Sheepshank

The sheepshank is a type of knot (or, more accurately unknot) that is used to shorten a rope or take up slack. The knot has several features which make it suitable for this purpose:
* It provides two loops, one at each end of the knot which can be used to pass another rope through
* The knot remains secure under tension; the coarser the rope the more secure it is (see Disadvantages, below)
* The knot falls apart easily when tension is removed
The last of these attributes is valuable. Other knots will bind tightly and be almost impossible to undo if the knot has been placed under great tension. The sheepshank, by contrast, comes apart quite easily.

## Construction Methods

A sheepshank knot may be constructed as follows:
* Pull a section of rope back and lay it alongside the rope, so that the rope forms a Z approximately 20 cm long.
* Flatten the Z so that there are 3 sections of rope lying alongside each other, with two U-bends where the rope reverses direction.
* At each U-bend, grasp the U-bend in one hand, thus holding two of the rope sections. With the other hand form a small loop in the remaining section and draw it over the U-bend so that the loop forms a half hitch and stays there if the free end of the rope is pulled taut.
       Many people draw the small loop over facing the wrong way at least half of the time. Instead, make with the U a half-hitch around the other part, by tucking through, then pull the U straight.
* Repeat at the other U-bend.
An alternative method for quickly constructing a sheepshank is as follows:
* Create a simple loop in the rope, so that the (left) leading end is on top of the (right) trailing end of the loop.
* Repeat this process further down the rope to create 3 total loops that overlap slightly (similar to a venn diagram with three circles).
* Reach through the outer two loops and grab either side of the middle loop and pull outward while also keeping the rest of the rope slightly taut.
* Once the middle loop is pulled through the outer loops, pull on the free ends of the rope to secure.
The result is a flattened loop which is held at each end by a half hitch. If the sides of the flattened loop are pulled away from each other, the flattened loop ends pull out of the half hitches and the knot falls apart, but if the free ends are pulled taut then the knot remains secure.

## Usage

Sheepshank knots are typically used for securing loads to trucks or trailers, and in sailing applications.

## Disadvantages

The sheepshank was developed before the use of modern "slippery" Synthetic fibre ropes. Constructed from such ropes, under load, it can fail. It is strongly advised that one test the knot under load before trusting it.

## Variants
### Man-o'war sheepshank

The man-o'war sheepshank is a sheepshank knot with a Handcuff knot in the middle. This configuration with the half-hitches formed close to the central knot is used in rope rescue and is called a Fireman's chair knot.
# Knots/Sinnet knots

Sinnet (or sennit) knots are knots that involve weaving in a pattern.
* Daisy chain (Chain sinnet)
* Five-string English sinnet
* Three-string English sinnet
# Knots/Seizing knots
## Seizing knots

* Sheepshank
# Making a five-string English sinnet

The five-string English sinnet is a very simple sinnet to create, and closely related to the three-string version. You start by putting the five strings next to each other. Then you pick the leftmost string and cross it over the middle string. Then, you pick the rightmost string, and cross it over the middle string. Repeat this process alternating the leftmost and rightmost string, until the desired length is reached.

# Description

This sinnet is a braid, and is therefore primarily used for decoration. Another use for this sinnet is creating a stronger rope by braiding several weaker ropes. A five-string English sinnet will create a rope five times stronger than either of the five individual ropes (provided the five ropes used were of the same quality and strength).

# Other Names

* Five-string braid

# Related Knots

* Three-string English sinnet
* English sinnets with more strings are created the same manner. Any uneven number of strings can be used.
# Knots/Sinnet knots/Daisy chain

* Start with a slipped overhand knot.
* Keep passing bights through.
* End it off by putting the working end through the loop.
One of the features of the daisy chain (AKA chain sinnet) is that it can be untied by pulling the end out of the last loop and pulling on it, which will pull out every subsequent bight.
# Making a three-string English sinnet

The three-string English sinnet is the most simple sinnet to create. You start by putting the three strings next to each other. Then you pick the left string and cross it over the middle string, making the left string the middle string and vice-versa. Then, you pick the right string, and cross it over the middle string, making the right string the middle string, and vice-versa. Repeat this process alternating the left and right string, until the desired length is reached.

# Description

This sinnet is a braid, and is therefore primarily used for decoration. Another use for this sinnet is creating a stronger rope by braiding several weaker ropes. A three-string English sinnet will create a rope three times stronger than either of the three individual ropes (provided the three ropes used were of the same quality and strength).

# Other Names

* Common braid
* Braid
* Three-string braid

# Related Knots

* Knots/Sinnet knots/Five-string English sinnet