copyright : futuretext ltd, london 0 ajit.jaokar@futuretext,com @ajitjaokar 12 techniques to...

42
Copyright : Futuretext Ltd, London 1 Ajit.jaokar@futuretext,com @AjitJaokar www.feynlabs.com 12 techniques to radically accelerate the learning of Computer Science in Schools

Upload: raina-joseph

Post on 14-Dec-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Copyright : Futuretext Ltd, London1

Ajit.jaokar@futuretext,com@AjitJaokar

www.feynlabs.com

12 techniques to radically accelerate the learning of Computer Science in Schools

Copyright : Futuretext Ltd, London2

Ajit Jaokar

Mobile Data Scientist – forthcoming book -World Economic Forum - future of the Internet UK based - Hands on Publisher (futuretext) - Author (Mobile Web 2.0, Social Media Marketing, Open Mobile) - Chair: Oxford University's Next Gen Mobile Applications panel - PhD student UCL/UK - Consulting – Operators, Governments EU, Startups

Recent and forthcoming talks include Mobile world congress

(2007,2008,2009, 2011), CEBIT, Stanford University - MIT Sloan - Web 2.0 expo - Ajaxworld Supernova - CNN money - BBC - Oxford University European parliamentSmart cities: Advisory board – World Smart Capital(Amsterdam), Connected Liverpool

Global top 20 wireless bloggerAccording to fierce wireless www.opengardensblog.futuretext.comPhd research on resilience of sensor networks in Advisory board World Smart Capital startup - @feynlabs

Copyright : Futuretext Ltd, London3

What’s in it for you?• We are all facing times of great change in short time frames• The techniques we describe here can be used by you to rapidly learn CS techniques – including algorithms, programming etc • Its an ongoing conversation – we open source and are a

foundation.

We will share even more (at CAS and beyond)

Copyright : Futuretext Ltd, London4

Image source - http://gardenofeaden.blogspot.co.uk/2011/10/cheetah.html

• feynlabs is developing a set of unique techniques to accelerate the learning of computer science, programming and computational thinking among young people. • Set up as a non profit foundation/ Open source initiative •   We are developing this based on live trials in schools •   We use devices like the Raspberry Pi which lead to learning more

about computing

Copyright : Futuretext Ltd, London5

Image source - http://gardenofeaden.blogspot.co.uk/2011/10/cheetah.html

Address three unique challenges, which we believe are not being currently addressed 1) We are creating a set of techniques to accelerate the early stages of learning for computer science for young people. 2) We focus on computer science (and not programming alone). 3) We focus on Computational thinking i.e. the use of Computing to solve problems – often in other scientific and technical domains.

Copyright : Futuretext Ltd, London6

Some people who like our work ..

Copyright : Futuretext Ltd, London7

Copyright : Futuretext Ltd, London8

Source Baz Nijjar posted @CAS

Copyright : Futuretext Ltd, London9

Source Baz Nijjar posted @CAS

Copyright : Futuretext Ltd, London10

Source Baz Nijjar posted @CAS

Copyright : Futuretext Ltd, London11

Source Baz Nijjar posted @CAS

Copyright : Futuretext Ltd, London12

From an education standpoint, here are seven goals we pursue when teaching programming within the context of Computer Science

1. To achieve a rapid rate of learning programming in early stages2. To be inclusive -- especially in the introduction of women to

computing3. To achieve a smooth on-ramp for learning, e.g. maintaining interest

for longer so as to reduce early drop-off4. To encourage hacking, or modification of existing software (and

hardware) to foster innovation5. To understand the concept of "mastery" in a discipline, recognizing

that even if mastery is not achieved, there is still value in learning programming

6. To co-relate programming with other math and science disciplines at an early stage, e.g. not teaching programming in isolation

7. To encourage systems thinking, the ability to see connections between the parts that interact to form a whole

Copyright : Futuretext Ltd, London13

1) Co-Relating the Teaching of Programming Languages to Real-Life Examples in Other Scientific Domains

2) Preparing for the Next Wave of Computing

3) Clarify for Kids the Economic Value of Learning Programming

4) Delaying Coding

5) Discussing the Big Picture and Introducing Systems Thinking

6) Use Hacking and Debugging as a Fundamental Teaching Tool

Copyright : Futuretext Ltd, London14

7) Start with One Programming Language But Don’t Limit Yourself to specific languages

8) Use Multimedia for Learning and for Content Creation

9) Separate the Exceptions from the Rules

10) Discuss learning about learning

11) Concepts of Programming Languages vs. a Specific programming language

12) Mini languages in the age of the Web?

Copyright : Futuretext Ltd, London15

1. Co-Relate the Teaching of Programming Languages to Real-Life Examples in Other Scientific Domains

Mathematician and technologist Conrad Wolfram -  math as taught in schools looks very different from math as used in practice. In the real world, math is not necessarily done by mathematicians, but rather by other scientists like geologists, etc.

Copyright : Futuretext Ltd, London16

Radioactive Fluorescent DNA Sequence

Credit:Wikimedia Commons

The same ideas of pattern matching algorithms are used in DNA sequencing, since that process also requires us to find a specific pattern in a larger pool.

This example of DNA sequencing, although complex for kids, is a good way to make the teaching of algorithms more real.

Same also works for noise cancellation algorithms

Copyright : Futuretext Ltd, London17

Copyright : Futuretext Ltd, London18

2. Prepare Kids for the Next Wave of Computing with an emphasis on Algorithms ..

There is a fundamental shift in computing itself. Value will shift to a unique combination of open source hardware, open source software, proprietary software, algorithms and IPR. Making kids aware of these real-life changes in computing cycles helps them to think of becoming computing entrepreneurs. So, this makes algorithms very important ..

Copyright : Futuretext Ltd, London19

3. Clarify for Kids the Economic Value of Learning Programming

We want kids to learn programming. But we all see that the best-paid jobs are in investment banking. Add to this the practices of offshoring and outsourcing, many employers' emphasis on very narrow technical skillsets, companies' lack of desire to invest in training, the choice of management as a preferred career path (as opposed to technology skills), ageism and discrimination against women in IT -- and suddenly the economic value of learning programming is less clear.

It is thus even more important to outline the raison d'être for learning programming and to discuss the many counter-arguments that provide a reason why young people should learn programming. For instance, computing will be an integral part of everything from manufacturing (3D printing) and medicine (genomics) to the arts. Almost all interesting jobs will involve computing skills, and many will often be in technology start-ups involving some form of computing at their core. In other words, kids will be the digital cathedral-builders of the future.

Copyright : Futuretext Ltd, London20

4. View programming in context of Computer Science

Here, I am being a bit controversial. I believe that we place too much emphasis on coding at an early stage. This gives a false sense of achievement. For example, merely running simple programs is good, but it is only a first step which does not involve much thinking. Placing too much early emphasis on coding simple programs and environment setup also mixes the activities of thought and action. For example, the need to download software, compile code, perform initial setup and so forth breaks up the thinking process. Finally, these activities can often lead to an early drop-off in interest – for instance, if the setup is too complex or if the examples are too easy.

Copyright : Futuretext Ltd, London21

5. Discuss the Big Picture and Introduce Systems Thinking

In "Learning to Connect the Dots: Developing Children's Systems Literacy"6, Linda Booth Sweeney emphasises the value of systems thinking, which is broadly the ability to see the connections between the parts that interact to form a whole. This ability makes a big difference to all learning but is not applied much in the learning of programming languages.

http://www.stoimen.com/blog/wp-content/uploads/2012/06/1.-Search-over-Linked-Lists-and-Arrays.png

Copyright : Futuretext Ltd, London22

6. Use Hacking as a Fundamental Teaching ToolWe often start teaching new students about code by writing new programs. However, we don't emphasize modifying existing programs. Yet, in many real-life instances, we often spend large amounts of time modifying existing programs. The ability to make small, incremental changes to an existing program is a valuable tool to learn programming, especially because it provides a quicker payoff.

Copyright : Futuretext Ltd, London23

w3schools Code for Shutdown Alert

Copyright : Futuretext Ltd, London24

7. Start with One Programming Language But Don’t Limit Yourself to specific languages

To teach programming, you have to start with a specific programming language -- but you need not confine yourself to only one programming language. The popularity of programming languages is based on various factors which are often commercial. Thus, in the '80s, if you started learning programming, you used Basic/Pascal. In the '90s, you may have used Java or JavaScript, and so on. Today, as computing continues to evolve, there are many programming languages which are popular. Teaching only one gives a limited perspective. Also, thanks to the Web, it is now possible to look at more than one language. This idea lays the foundation of our work in teaching concepts of programming languages to kids.

Copyright : Futuretext Ltd, London25

Copyright : Futuretext Ltd, London26

8. Use Multimedia for Learning and for Content CreationMost people would agree that multimedia plays a major part in education today. On almost any given topic, you can find some great video on the Web for free (on YouTube, for example). However, multimedia -- and especially video -- can be used as a content creation tool. We are using this approach in a trial where we create video with ScreenChomp10. The advantage here is that in creating video, participants learn programming concepts and techniques in a much more dynamic way. This reduces drop-off rates.

Copyright : Futuretext Ltd, London27

9. Separate the Exceptions from the RulesProgramming is taught linearly, topic by topic. But it could be easier to teach in two passes or stages -- first the core idea and then the exceptions. This makes it easier to get the basic idea first and then build upon it subsequently. For example, explaining passing parameters by reference vs. by value11 to a function can quickly get complex. Hence, it is easier to first explain parameters and functions and then come back to more complex topics like passing parameters by reference.

Copyright : Futuretext Ltd, London28

10. Discuss Learning About Learning

There are three phases of learning. 1) The aptitude/interest stage

2) The second stage is the apprenticeship stage, where the apprentice engages in extensive training under an expert. In Star Wars, the apprentice is the "padawan," and this three-stage process is enshrined in Jedi training.

Copyright : Futuretext Ltd, London29

3) The third stage is the mastery stage, where the participant is able to see the complete picture and recognize interconnections between components such that she can extend her existing body of knowledge.

For example, Charles Darwin embarked on a voyage to South America. In

doing so, he collected so many specimens that a theory began to form in his mind where he was able to see connections between specimens which others could not see. This is the "mastery" stage.

Copyright : Futuretext Ltd, London30

In teaching computing and programming, here are some observations:

1. Not everyone will want to master programming. Many will want to take their interest to the next level. This would be useful, considering that computing will be a central element to many jobs.

2. The ability to "hack" or change many physical objects in future will require the ability to understand some programming. In that sense, knowledge of programming will be useful even if mastery in programming is not attained.

3. The Internet allows us to accelerate the path towards mastery. Howard Rheingold, in his book NetSmart12, sees the ability to engage with cyberculture as a core skill, much like driving a car for the current generation. This ability will be an asset to acquiring mastery.

Copyright : Futuretext Ltd, London31

Copyright : Futuretext Ltd, London32

Abstraction

Computational Thinking

Data Structures

Algorithms

Copyright : Futuretext Ltd, London33

We are also creating a conceptual layer on top of the Pi. Idea inspire by Mini LanguagesEx Turtle but specifically to learn concepts

Copyright : Futuretext Ltd, London34

The Pi is an open device .. And we extending it as a platform to teach Computational thinking ..

Copyright : Futuretext Ltd, London35

Inspirations – mathematical modelling ..

Copyright : Futuretext Ltd, London36

Inspirations – Ian Stewart books

Copyright : Futuretext Ltd, London37

Inspirations – In theoretical physics, Feynman diagrams are pictorial representations of the mathematical expressions governing the behaviour ofsubatomic particles.

Copyright : Futuretext Ltd, London38

Inspirations – Conrad Wolfram – we use mathematica as part of our methodology.

Copyright : Futuretext Ltd, London39

Inspirations – Tim Ferris – http://lifehacker.com/5962945/use-tim-ferriss-four+step-process-to-master-new-skills DiSSSDeconstruct"What are the minimum learnable units, the LEGO blocks, I should be starting with? 

Selection"Which 20% of the blocks should I focus on for 80% or more of the outcome I want?

Sequencing"In what order should I learn the blocks?"

Stakes "How do I set up stakes to create real consequences and guarantee I follow the program?"

Copyright : Futuretext Ltd, London40

Inspirations – linguist Pimsleur developed his system using four principles he regarded as important to forming memory associations and language recall Anticipation Graduated-interval recall Core vocabulary and Organic learning

Copyright : Futuretext Ltd, London41

http://www.wikihow.com/Think-Like-Leonardo-Da-Vinci

Connessione. Connessione is "a recognition of and appreciation for the interconnectedness of all things and phenomena". This, in other words, is systems thinking. One main source of Leonardo's creativity is his ability to form new patterns through connections and combinations of different elements.

Copyright : Futuretext Ltd, London42

Ajit.jaokar@futuretext,com@AjitJaokar

www.feynlabs.com

Lets continue the conversation .. Please contact us if you want to be a part of early research