420 likes | 541 Views
12 techniques to radically accelerate the learning of Computer Science in Schools. Ajit.jaokar@futuretext,com @ AjitJaokar www.feynlabs.com. Ajit Jaokar.
E N D
12 techniques to radically accelerate the learning of Computer Science in Schools Ajit.jaokar@futuretext,com @AjitJaokar www.feynlabs.com 0
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 parliament 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
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
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
Address three unique challenges, which we believe are not being currently addressed • 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). • 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
From an education standpoint, here are seven goals we pursue when teaching programming within the context of Computer Science • To achieve a rapid rate of learning programming in early stages • To be inclusive -- especially in the introduction of women to computing • To achieve a smooth on-ramp for learning, e.g. maintaining interest for longer so as to reduce early drop-off • To encourage hacking, or modification of existing software (and hardware) to foster innovation • To understand the concept of "mastery" in a discipline, recognizing that even if mastery is not achieved, there is still value in learning programming • To co-relate programming with other math and science disciplines at an early stage, e.g. not teaching programming in isolation • To encourage systems thinking, the ability to see connections between the parts that interact to form a whole 11
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
7) Start with One Programming Language But Don’t Limit Yourself to specific languages • 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
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. 14
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
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
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
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
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 20
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
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
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
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
10. Discuss Learning About Learning There are three phases of learning. 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
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
In teaching computing and programming, here are some observations: • 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. • 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. • 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
Algorithms Abstraction Data Structures Computational Thinking 31
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
The Pi is an open device .. And we extending it as a platform to teach Computational thinking .. 33
Inspirations – In theoretical physics, Feynman diagrams are pictorial representations of the mathematical expressions governing the behaviour ofsubatomic particles. 36
Inspirations – Conrad Wolfram – we use mathematica as part of our methodology. 37
Inspirations – Tim Ferris – http://lifehacker.com/5962945/use-tim-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
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
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. 40
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