Inspirations - CAS Community

advertisement
12 techniques to radically accelerate the
learning of Computer Science in Schools
Ajit.jaokar@futuretext,com
@AjitJaokar
www.feynlabs.com
0
Copyright : Futuretext Ltd, London
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
University European parliament
-
- BBC - Oxford
Smart cities: Advisory board – World Smart Capital(Amsterdam), Connected
Liverpool
Global top 20 wireless blogger
According to fierce wireless
www.opengardensblog.futuretext.com
Phd research on resilience of sensor networks in
Advisory board World Smart Capital startup - @feynlabs
1
Copyright : Futuretext Ltd, London
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)
2
Copyright : Futuretext Ltd, London
• 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
Image source - http://gardenofeaden.blogspot.co.uk/2011/10/cheetah.html
3
Copyright : Futuretext Ltd, London
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.
Image source - http://gardenofeaden.blogspot.co.uk/2011/10/cheetah.html
4
Copyright : Futuretext Ltd, London
Some people who like our work ..
5
Copyright : Futuretext Ltd, London
6
Copyright : Futuretext Ltd, London
Source Baz Nijjar posted @CAS
7
Copyright : Futuretext Ltd, London
Source Baz Nijjar posted @CAS
8
Copyright : Futuretext Ltd, London
Source Baz Nijjar posted @CAS
9
Copyright : Futuretext Ltd, London
Source Baz Nijjar posted @CAS
10
Copyright : Futuretext Ltd, London
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 stages
2. To be inclusive -- especially in the introduction of women to
computing
3. To achieve a smooth on-ramp for learning, e.g. maintaining
interest for longer so as to reduce early drop-off
4. To encourage hacking, or modification of existing software (and
hardware) to foster innovation
5. 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
11
Copyright : Futuretext Ltd, London
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
12
Copyright : Futuretext Ltd, London
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?
13
Copyright : Futuretext Ltd, London
1. Co-Relate the Teaching of Programming Languages to RealLife 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.
14
Copyright : Futuretext Ltd, London
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
15
Copyright : Futuretext Ltd, London
16
Copyright : Futuretext Ltd, London
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 ..
17
Copyright : Futuretext Ltd, London
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.
18
Copyright : Futuretext Ltd, London
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.
19
Copyright : Futuretext Ltd, London
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-andArrays.png
20
Copyright : Futuretext Ltd, London
6. Use Hacking as a Fundamental Teaching Tool
We 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.
21
Copyright : Futuretext Ltd, London
w3schools Code for Shutdown Alert
22
Copyright : Futuretext Ltd, London
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.
23
Copyright : Futuretext Ltd, London
24
Copyright : Futuretext Ltd, London
8. Use Multimedia for Learning and for Content Creation
Most 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.
25
Copyright : Futuretext Ltd, London
9. Separate the Exceptions from the Rules
Programming 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.
26
Copyright : Futuretext Ltd, London
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.
27
Copyright : Futuretext Ltd, London
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.
28
Copyright : Futuretext Ltd, London
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.
29
Copyright : Futuretext Ltd, London
30
Copyright : Futuretext Ltd, London
Algorithms
Abstraction
Data Structures
Computational Thinking
31
Copyright : Futuretext Ltd, London
We are also creating a conceptual layer on top of the Pi. Idea inspire by Mini Languages
Ex Turtle but specifically to learn concepts
32
Copyright : Futuretext Ltd, London
The Pi is an open device .. And we extending it as a platform to teach Computational
thinking ..
33
Copyright : Futuretext Ltd, London
Inspirations – mathematical modelling ..
34
Copyright : Futuretext Ltd, London
Inspirations – Ian Stewart books
35
Copyright : Futuretext Ltd, London
Inspirations – In theoretical physics, Feynman diagrams are pictorial representations of
the mathematical expressions governing the behaviour ofsubatomic particles.
36
Copyright : Futuretext Ltd, London
Inspirations – Conrad Wolfram – we use mathematica as part of our methodology.
37
Copyright : Futuretext Ltd, London
Inspirations – Tim Ferris – http://lifehacker.com/5962945/usetim-ferriss-four+step-process-to-master-new-skills
DiSSS
Deconstruct
"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?"
38
Copyright : Futuretext Ltd, London
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
39
Copyright : Futuretext Ltd, London
http://www.wikihow.com/Think-LikeLeonardo-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.
40
Copyright : Futuretext Ltd, London
Lets continue the conversation ..
Please contact us if you want to be a part of early research
Ajit.jaokar@futuretext,com
@AjitJaokar
www.feynlabs.com
41
Copyright : Futuretext Ltd, London
Download