Learning Theories with Dr. Bonk at Indiana University.
Introduction
Finally, even if schools were requiring computer science, we lack the qualified educators to teach the subject. We have an enormous need for exceptional students and teachers in this field which is not being addressed by our current educational systems.
However, in the past decade, we have also seen the rise of do-it-yourself, maker culture, which provides open, free, and recycled resources to help kids (and adults) learn computer science and coding, along with numerous other skills, on their own time and outside of the classroom. Many students are choosing to learn computer science on their own, as their passions are not being addressed in their schools.
To this end, this article will focus on 5 different resources that allow students to learn computer science and programming skills for free and in an online environment. Each resource will contain an overview and analysis as well as an exploration of the specific learning theories and principles that are addressed.
1 | Code.org
Code.org is perhaps most well known for their "hour of code" which is coming up in December, from the 8th - 14th. For this one week period, the site offers a variety of simple and fun lesson plans in an attempt to get students across the world more interested in the computer sciences. The activities are built around familiar characters like Angry Birds and Plants vs. Zombies, and provide instruction in basic step-by-step program building block programming.
In addition to the hour of code, Code.org offers numerous tutorials for students to learn "Beyond One Hour." Most of these tutorials link to other resources, like Scratch, Codeacademy or Tynker, however Code.org also offers their own intro courses to computer science as well. These courses are aimed at all age groups and offer a variety of learning activities.
- - - - - - - - - - - - - - Learning Theories & Principles Addressed - - - - - - - - - - - - - -
Bruner: The principles addressed by Bruner are seen in several places throughout Code.org's exercises. First, Bruner's idea of creating autonomous learners is absolutely evident, as the entire course is offered without an instructor (resources for help are given, but the students must choose to access them on their own). Second, Bruner focuses on the importance of invention and not just absorption, and that idea is certainly addressed throughout Code.ord, especially in the modules where students are asked to apply what they have learned to create something completely new. Finally, as to Bruner's modes of representation, Code.org strides the boundary between iconic and symbolic representation, asking students to first build programs using visual blocks and later to convert that understanding into specific language.
Vygotsky: The principles espoused to by Vygotsky also make an appearance here, especially in regard scaffolding. In addition to each exercise being only incrementally more challenging than the previous (as mentioned above), the lessons also offer scaffolding in the form of video and text-based hints to help learners build their understanding. On top of that, the videos are from a variety of expert sources and programmers, demonstrating how they use the ideas of that particular lesson in the real-world (a type of modeling that Bandura would certainly love).
Cognitivism: One of the main principles of cognitivism is the organization of knowledge and the activation of prior knowledge, which these activities certainly provide. The user interface is incredibly straightforward and organized, with simple, step-by-step instructions or guiding questions to follow. Additionally, many of the activities reference and pull in what the learner has previously done, in an effort to connect to their prior understanding. Finally, as mentioned before under behaviorism, feedback is immediate and informative, offering learners hints when they are struggling or praise when they succeed.
Constructivism: Finally, the cognitivist principles are also evident throughout Code.org, especially considering the entire curriculum is basically one large problem-based question, "how can I create a working program?" Students solve smaller problems along they way to this larger problem, learning the steps of programming, the terminology, and the logical and reasoning skills that are necessary to create a functioning program. On top of that, these activities are incredibly authentic and have real-world applications as the students are actually learning a skill that can be put to use designing and creating new programs and applications.
2 | CodeAcademy.com
Finally, they also offer instruction in how to create APIs (Application Programming Interface) for apps like YouTube, Deezer, Box, and many more.
Each module is broken down into simple step by step instructions, with the learning task on the left, and the coding section on the right. For each module, if you are stuck, you can request a hint, or you can visit the Q&A forum where you can read or take place in a discussion about particular questions that you may have.
Modules advance from simple to complex concepts over the course of extensive lessons, all of which are designed by programmers and developers who have volunteered their time. Students can also choose to visit a glossary of terms which can offer quick definitions for any terms they are struggling with.
- - - - - - - - - - - - - - Learning Theories & Principles Addressed - - - - - - - - - - - - - -
Social Learning Theory: The primary principle of social learning theory that is addressed is that students have the ability (through the Q&A forum) to observe the work of others and learn from it. They can see what has been successful, the steps those learners have taken, and they can then learn from those models and take those steps themselves.
Gagne’s Conditions of Learning: Several of the principles from Gagne’s principles of instruction are present throughout the site. Many of the lessons begin with attention grabbers and explanations of the objectives, showing the students the complex project they’ll be creating at the end of the module, and giving the students a goal to strive for. Additionally, most of the lessons begin by asking the learners to recall what they accomplished in previous scenarios, and then continue to build from there. Plus, as mentioned above in the behaviorism section, feedback is an integral part of the site as well.
Constructivism: The major principles of constructivism are also present, in that students are creating a project in a hands-on environment. And, while the step-by-step lessons are structured in more behavioristic ways, the overall module is centered around a single, real-world problem, and the end results is certainly constructivist and project-based.
Connectivism: Finally, connectivism principles are also evident throughout the site. The idea that learning resides in the diversity of opinions is prevalent, especially in the Q&A forum where students can explore a variety of solutions to a single problem. Additionally, the idea of learning as a process of making connections is here as well, as, at the end of each module, students are required to pull together all the diverse fragments of knowledge that they have acquired to assembly something real and practical.
3 | KhanAcademy.com
As for as computing goes, within the computer science section, Khan Academy offers three distinct modules: Algorithms, Cryptography, and Information Theory. On the programming side, they have a few more selections and offer: JavaScript, Advanced JavaScript - Games & Simulations, Advanced Javascript - Natural Simulations, HTML/CSS, and Meet the Professional, where students are introduced to game designers, programmers, and developers from around the world.
The discussions are an excellent feature as they allow for students to interact, get help, and provide advice to their peers who may be struggling. After examining the discussion threads throughout these two modules, I found, a bit to my surprise, that they were all incredibly positive, helpful, and friendly. And, while I'm sure negative comments do get thrown into the mix from time to time, by and large the community seemed eager and willing to help and discuss.
Finally, in addition to the videos, questions, discussions, and quizzes, Khan Academy also has projects and challenges embedded within the modules. These learning tasks ask students to synthesize what they have learned so far and create something new or original. The projects range from creating animations to designing games to building webpages and a whole lot more.
- - - - - - - - - - - - - - Learning Theories & Principles Addressed - - - - - - - - - - - - - -
Social Learning Theory: There is quite a bit of social learning and observing/learning from experts throughout the Khan Academy modules, and I think this is probably the best and most beneficial feature of the site. At the end of each activity, students can pose questions and respond to others, and from what I saw, responses came very quickly to those who were asking questions. From the discussions, students can observe and learn from what other "expert peers" are doing, and then put their ideas into practice. Then, they in turn can become the next generation of experts, helping those that come after them.
Cognitivism: Some of the major principles of cognitivism are present throughout these learning modules as well. Each module does an excellent job of organizing knowledge into specific areas as well as reminding students of how what they're currently learning connects to their previous activities. On top of that, Khan Academy does an excellent job of combining multiple modes of representation, offering material in video, text, audio, and image format to help a wide variety of learners.
My primary worry about Khan; however, is that it lacks the very simple, "building slowly upon itself with lots of feedback" structure that the previous two resources use. As I mentioned, this site is definitely more constructivist in nature, and some students may struggle with it if they are inexperienced in working on their own. Personally, I would recommend starting with something like Code.org or Codeacademy.com and then moving onto Khan from there.
4 | Scratch
Scratch utilizes a simple drag and drop "block programming" language that makes it easier to learn, especially for younger students, since they don't need to learn a unique coding language. On top of that, there is an enormous wealth of training resources and tutorials online to help students become familiar with the software.
Through discussion boards and feedback within projects, users can share their ideas and get suggestions from their peers on how to improve or create certain aspects of a program. Finally, there have been multiple research studies conducted on the Scratch online learning environment, showing that it can be a beneficial community for learners.
- - - - - - - - - - - - - - Learning Theories & Principles Addressed - - - - - - - - - - - - - -
Connectivism: In addition to Scratch being focused on constructivism, there are also elements of Connectivism. Specifically, students learn from an enormous network of their global peers. They can pick up little pieces of knowledge here and there, gain ideas from one project or another, and put those ideas together into their own unique creation.
Cognitivism: Within the tutorials offered throughout the Scratch site, Youtube, and sites like LearnScratch.org, the principles of cognitivism are evident. All of the lessons I explored start with very simple tutorials that seek to draw on the learners' prior knowledge, helping them make connections between every day activities and the tasks of programming and design. Additionally, all of the series of tutorials I explored slowly build upon each other, referencing what was accomplished in previous lessons and then taking those ideas a step further to slowly build students up towards proficiency.
Bruner: Finally, as mentioned under Code.org, the principles addressed by Bruner are seen throughout Scratch as well. Bruner's ideas of creating autonomous learners and the importance of invention are cornerstones of the Scratch environment. Scratch is essentially a hub for invention and autonomous learning and the community has been built in such a way that these principles are heavily emphasized and supported.
5 | CodeCombat.com
Like all the other resources outlined in this post, Code Combat is free (and the code is open source); however, it does have freemium features where users can buy "gems" to increase their character stats. This is the only feature of the site that I'm not a fan of, and if a parent or teacher had students using this resource they would need to ensure that they weren't buying up countless gems.
Throughout the game, players are instructed in the basics of a coding language of their choice. The site covers Python, Javascript, CoffeeScript, Clojure, Lua, and Io. Essentially, the learners are sent on various missions, and they must use code to direct their characters how to move, attack, defend, and so on. Throughout the course of each level, the learner has obstacles to avoid and puzzles to figure out in order to successfully complete the challenge. In the end, they earn gems or unlock items which they can use to increase their characters statistics and abilities.
- - - - - - - - - - - - - - Learning Theories & Principles Addressed - - - - - - - - - - - - - -
Cognitivism: The principles of cognitivism are also present throughout Code Combat. Each of the lessons or "quests" pulls on what students learned in the previous exercises. Learning is very structured and organized to help students add what they are learning in the current exercise to their previous understanding. Plus, the overall site as a whole is definitely an attention grabber and helps to establish motivation; the students are playing a game after all!
Vygotsky: Vygotsky also makes an appearance in the form of scaffolding. In each exercise students are shown the strategies (i.e. code commands) they can use to successfully accomplish their goal. Additionally, hints are available for each mission as well, for those students who are struggling or who need additional support for success.
Social Learning Theory: Code Combat also offers a multiplayer feature where students can pit their code against code created by other users. In this way, learners can explore what other users have created, see models of exemplary code, and learn from these examples. For an example of what this looks like, you can watch the video below which explains the process in more detail.
Conclusion
In short, these resources are excellent for those students who are highly motivated, dedicated, and interested in learning about computer science. However, for those students who are not interested, I'm not certain if any of these resources would help sway them. It's certainly possible, but I think it would take more direct interaction with an actual teacher or mentor to help motivate those types of learners.
Overall though, all five of these resources offer excellent lessons, are well structured, and can be incredibly beneficial for those learners who are ready to tackle the challenge of learning to interact with computers. The recent boom in the creation of these resources speaks well to the future of self-directed computer science learning and I have no doubt that for those students who want to learn, they will be able to find a particular resource that suits their unique passions and learning styles.
References
Bruning, R., & Schraw, G. (1999). Cognitive psychology and instruction (3rd ed.). Upper Saddle River, N.J.: Merrill.
Driscoll, M. (1994). Psychology of learning for instruction. Boston: Allyn and Bacon.
On the Web: