7 ms·
A Pedagogical Analysis of Online Coding Tutorials [pdf]
- kingkongjaffa 9y agoWe're teaching recipes, when really we should be teaching self-sufficiency. Too many new learners are stuck unable to make the leap out of the browser based IDE and into running their own code locally on a machine or on a server.
- eat_veggies 9y agoI relate to this so hard--about two years elapsed between when I "learned" Javascript on Codecademy and when I first used it in a real project. These courses teach you syntax, and do a pretty shit job at even that.
- goldfishparty 9y agoI am a self-taught programmer. I see what people in this thread are getting at, and I believe I stumbled my way into that realm of knowledge by accident. Learning multiple languages (of different paradigms) led me to implement code in one language to one in another. Even though the first set may have been heavily based on some tutorial, when translating my own code, I had to be able to reason about it, break it apart, and re-compose it. This line of thought helped make me more capable of talking about and thinking through my code as an idea, where the implementation was just an exercise. If anyone else is teaching themselves, I would advise the following: + Learn a high-level OOP language + Learn a high-level functional language + Translate programs between the two, focusing on really working with the respective paradigm. + Move on to something lower level. Many people will say go with C to learn manual memory management. I found Rust interesting, if not difficult at first. Up to you, just seek lower-level understanding. + Learn an assembler, fake or real. Shenzhen I/O and Human Resource Machine are good introductions to this. + Build skills in your languages through katas. Learn to think and write in a language with minimal reference. This is simple, persistent, repetitive practice. + Read about a discrete math you find interesting. You will likely not be as strong at math as educated people. Discrete maths can help at least give you some good flair. + Seek constant review from peers. + Don't always agree with peers. Find ways to defend your viewpoint. Good arguments- not "Java sucks." Be able to say why you have the right idea. + Learn simple circuits. They help you think atomically. There are even sites that have virtual breadboards so that you can experiment and learn for free. Recipes can work, but they are just the first step. Learning how to "remix" a recipe and make it your own is the next. It's a long journey, for sure. I would agree that online resources that are the most visible are generally very entry-level and hand-holdy. I would also add that there is a vast amount of deep knowledge freely available for those wishing to go further.
- andyjko 9y agoAuthor of the paper being discussed here. Re: self-sufficiency, our evidence agrees. You might be interested in this paper from my lab, which successfully attempts to teach self-regulation skills to novices: Loksa, D., Ko, A. J., Jernigan, W., Oleson, A., Mendez, C. J., & Burnett, M. M. (2016, May). Programming, problem solving, and self-awareness: effects of explicit guidance. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (pp. 1449-1461). ACM. http://faculty.washington.edu/ajko/papers/Loksa2016ProgrammingProblemSolving.pdf http://faculty.washington.edu/ajko/papers/Loksa2016Programmi... Andy Ko Associate Professor University of Washington http://faculty.washington.edu/ajko http://faculty.washington.edu/ajko
- kingkongjaffa 9y agoThanks for the link I'm just reading your paper now, using Cloud9 IDE is an interesting choice which I am not sure is beneficial to the learners.. I think self-sufficiency should include building a local environment you can work work in without having to rely on some SAAS / Cloud service based IDE.
- keyle 9y agoThat was a very interesting read. As developers, let's face it, university was a tiny fraction of our knowledge. Most of it is ad-hoc real life problem solving, followed by seeing someone else's solution and saying "wow that's neat" and getting better that way.
- kevintb 9y agoVery interesting read! I've not heard of "Gidget, Lightbot, Code Hunt, and tutorials provided by Code.org" before, but the paper seems quite comprehensive.
- codezero 9y agoThis paper was written by the PhD advisor of the creator of Gidget, which appears to also have been funded by the NSF and Microsoft (like the research in the paper). Probably not a big deal, but I thought it was an interesting connection.
- andyjko 9y agoAuthor of the paper being discussed, and of Gidget here (along with collaborators). The work was primarily funded by a grant I received from the National Science Foundation: https://nsf.gov/awardsearch/showAward?AWD_ID=1240786&HistoricalAwards=false https://nsf.gov/awardsearch/showAward?AWD_ID=1240786&Histori... After the research, I raised some money through a Microsoft Research grant to support some additional work and pay for bandwidth for a decade. Just $4,000 left until I have to pull the plug :( If you like Gidget, please make a donation to support our skeleton crew. Andy Ko Associate Professor University of Washington http://faculty.washington.edu/ajko http://faculty.washington.edu/ajko
- codezero 9y agoThanks for the hard work Andy!
- cglee 9y agoThis is something we spend a lot of time thinking about at Launch School. You need the right pedagogy for the right phase of learning (https://launchschool.com/pedagogy https://launchschool.com/pedagogy). Most article writers aren't differentiating their audience enough, making their articles difficult to read for most people. There is a huge variance of "beginners", for example. Further, most developers who write these articles don't have a holistic learning framework in mind. Lastly, I'm seeing far too many technical tutorials just for SEO or attracting eyeballs lately. These articles are great for attracting attention but are typically technically shallow and add to the confusion rather than help.
- anonymous5133 9y agoAgree. Most of the tutorials I see seem to be written entirely to generate ad revenue rather than actually be a quality educational resource. Google's algorithms only promotes this type of garbage.
- startupdiscuss 9y agoI wish the authors — or any authors — studied which courses actually deliver results as opposed to what they ought to deliver. For instance, immediate feedback ought to deliver learning. So they looked at which courses give immediate feedback. But it would be even better if somone looked at which learners actually learned. You took the course now build xyz. Or pass a test or something. There might be a difference in the sorts of “immediate feedback” that are effective. It’s an indirect proxy of what you are after.
- askvictor 9y agoIndeed it would, but it's probably really difficult to research this, as you need a large population, and there will be plenty of external factors acting on those populations. You'd ideally want to use students with the same (or similar) age, and similar ability levels. Where do you find a suitably large number of those from? Then you'd need to remove any external influences - the effect of a good or bad teacher, for example. That's not to say it can't be done, but is a much larger and more expensive piece of research.
- anonymous5133 9y agoExcellent idea. However, I think the main reason they don't review by that aspect is because there simply aren't any of those types of courses. The courses coming out of the traditional universities (on edx or coursera) seem to be very watered down versions of real university courses. For the free online, independently created courses they seem to be catering to the "immediate stimulation" crowd rather than the small group of people who want truly comprehensive online courses. I agree though that project-based learning where the student takes an active role in the creation and development of projects is crucial. If you think about it, when the student enters the real world/work force, everything they do will be focused around projects of various size.
- j45 9y agoCourses are usually tied to revenue. (Some) post-secondary institutions can run like small countries. Other schools are hopefully starting to take the above approach and stay that way.
- 9y ago
- qwerty456127 9y agoIMHO the problem with coding tutorials is they usually target people that have little to no idea about programming essentials and teach them just the very basics like key primitive concepts (what classes, variables and functions are etc), language syntax, frameworks elementary basics etc. Is there even a single tutorial that a self-taught undergraduate coder (who has already went through a number of simple tutorials, can code a number of languages like Python and C# and use GitHub) can take to learn how are real-world apps made, what do professional (professional ≠ veteran, it just means a person who earns their living doing it, working in a team usually) coders actually do all day long at their workplaces, what are they meant to know, how to solve interview puzzles and everything enough to go and get a coding job with reasonable ease? As far as I know many companies need coders that can join a team and start writing/maintaining plain ordinary code, not necessarily brilliant code, just code that is readable, maintainable, reasonably fast and reliable and solves simple tasks it (a particular piece of code) is meant to. As far as I know a huge portion of people can potentially learn to do this with ease (you don't need IQ>150 for this, 100 is enough, even 90 will do which means the majority of the population). But people don't know how. And knowing a programming language syntax and being capable to code a simple script for yourself isn't enough: 99% of people who speak a language and can write a simple essay have no idea about how to write a novel (not necessarily a best-seller, even a mediocre one) - they are to be taught to structure it, introduce and develop characters, describe places and situations nicely, bake an idea in, maintain suspense, organize their writing process etc - it seems arcane to them while it essentially is just a number of plain and simple principles that can be outlined in a single manual. If only somebody having both the knowledge (skill) and the talent to explain would bother to write one and wouldn't write a huge tome practically obsolete by the release date instead.
- mike00632 9y agoStanford's Algorithms courses might be considered good like you describe.
- qwerty456127 9y agoIsn't it just about the fundamental algorithms rather than real-life production coding?
- dreamache 9y agoI've created probably over 100 video courses, hundreds of tutorials (written and video), for networks like TutsPlus (Envato), DigitalTutors, Pluralsight, LinkedIn Learning/Lynda.com, and my own site / yt channel. I've always been a huge proponent of example-based learning, and less about theory and generalized concepts. Still, though, I think the online tech ed space has a lot of growing up to do. In time, we'll all wise up to provide better experiences for learning. Until then, for the most part, we're stuck with: 1. Google: "How to do X in Y" 2. Watch 3 different videos or read 3 different articles 3. Apply it. 4. Run into a snag. 5. Google / Stackoverflow
- TaylorAlexander 9y agoYou just described how I learn new things!
- dofly 9y agoTo me untangling abstractions is always more difficult then building them up from the given premises. In other words, I believe generalizing from a given example to any level of abstraction is a straightforward process, but descending from built-up heights of abstraction down to the level of examples is a bit more involved.
- sagefy 9y agoI like a great deal that one of the considerations the authors make is adapting to prior knowledge. (3.1) describes what they looked for in detail. In their summary, "None provide personalization based on prior coding experience or learner goals, other than rudimentary age-based differentiation." Its hard to overstate the importance of prior knowledge. Prior knowledge has some of the highest effect sizes in educational research. In other words, what you already know going into it is going to determine how much you learn. It's rare for other factors to have the same impact on the results as prior knowledge. And yet, even given decades of learning science research, its pretty rare to see much of any attempt in Western learning to account for prior knowledge. It would be a refreshing change of pace to see some of these coding tutorials work in preemptive assessment to figure out where to focus the learner before getting into the "how" of it. Disclaimer: I'm working on sagefy.org
- dragon_king 9y agoThis is great. I have been tinkering with the idea of building something that helps people learn something in the most efficient way possible. I have been pretty frustrated with most learning materials for almost anything, especially when you have limited time and a lot of interests. Keep up what you are doing and hopefully I will be able to share something after a couple of months.
- anonymous5133 9y agoFor your website, sagefy, how do you plan on being able to "assesses" the student's prior knowledge? It seems to be a double-edge sword if you plan on using assessments (the only way I can think of to assess prior knowledge) to do it because people want immediate satisfaction. Unfortunately if you told people to take a 25 question pre-quiz before starting the course I am sure most would simply leave the website.
- yorwba 9y agoYou could make the pre-quiz part of the "immediate satisfaction" by calibrating the questions so that the learner can feel good about their current knowledge without making them spend a long time solving difficult problems. Making a quiz fun is probably easier than doing the same for the actual learning part, which might require much more time before seeing any satisfying results. Another way to assess knowledge would be to give the learner topics of varying difficulty to select from; it's unlikely that they'd choose something so easy that it'd be boring and in case the topic is too hard, there should be an escape route to something easier.
- muzani 9y agoSummary: Every online coding tutorial is a lecture. They might pretend to be a little interactive, but the learning path is railroaded, and doesn't cater to individual progress.
- anonymous5133 9y agoThe reason it is like that is because it is very efficient to have lecture-based learning. The second you add individualized progress to the course it begins to become a huge programming logic problem.
- visarga 9y agoIt's not necessarily so difficult. There are blindspots, they need to make more videos to cover them. Take a survey of questions in the forum and make new videos covering those topics. These videos could be optional. The learner can then watch as much as needed, thus, the course adapts to the learner.
- anonymous5133 9y agoIt is difficult because to develop the programming logic side of it involves knowing programming and how to implement a system that takes in student data, analyzes it and then creates a new learning path/customized learning materials. Most people creating educational content simply do not have those skills.
- ListeningPie 9y agoInstead of lecture based courses, I’d like to see more an adaptable textbook style, where a learner creates their own path of learning. A simple example is a user manual online, http://support.casio.com/global/en/wat/manual/5411_en/ http://support.casio.com/global/en/wat/manual/5411_en/ . The topic of each section is clearly indicated and when parts of another section are mentioned a direct link is given. In this way the information is presented as the reader wants it. The book Code Complete: A Practical Handbook of Software Construction, provides a brief description at the start of book of what a chapter contains and suggests reading orders based on what the reader is looking for. These are examples of the reader choosing order. Examples of relevant questions is in Maths textbook Mathematical Techniques: An Introduction for the Engineering, Physical, and Mathematical Sciences 4th Edition , where sections contained check your understanding boxes. In these boxes a problem relaying on the information in the section was given followed by a full worked out solution. The sections ended with more problems related to the immediate section followed by questions that involved knowledge from pervious chapters. In the way same code examples could be presented and at the end of chapters a build your own program challenge.
- j45 9y agoI've been reconnecting to the academic edtech space for the past year. After spending the past 20 years in both industry and academic online learning, academic behaviour remains a bit odd: 1) Academics in education talk about the use of technology in education but often don't know how to use technology in depth. Story: In attending the World Conference of Online Learning - held at a very capable hotel - there were no power bars for laptops, and no sessions were recorded. Less than 5% of 1500 attendees (academics) carried or used a laptop or tablet for notes. Typing fast to take notes received comments. This was one of the leading conferences (apparently) in the world. Over 100 countries, 500 speakers, and 200 sessions. 2) Some academics seem to regularly trash education that technology may be in fact delivering well for students beyond the Academic's ability to understand. One talk I attended at this conference was a Ph.D. essentially skewering how Duolingo is not a good way to learn a language. The arguments may have had merit, I found it hard to take the talk seriously, well, because the millions of users reporting a positive learning experience with tools like Duolingo is well known. Learning to speak a language is incredibly valuable for many people. 3) If academic's don't use the right terminology... It's a little baffling why academics use the word pedagogy when speaking about the use of technology in education. Pedagogy is how children learn, not adults. Andragogy is how adults learn. "Pedagogy", "improving learning experiences", "improving student outcomes"is on a long chain of lean startup type groupspeak where people continue doing what they do but sprinkle a little innovation dust on what they're doing. Want to upset an academic? Correct them in using Andragogy instead of Pedagogy as a non-academic. 4) Innovation in Education + Technology. Technologists can learn education easier than educators will learn technology. These two groups need to come together, or as I suspect, educators competent in understanding the capabilities and possibliites of technology will need to exist in higher learning. The rate of change in society may be hard to keep up with a tenure seeking mindset. 5) K-12 educators seem a lot more tech friendly than post-secondary educators. Post-secondary educators seem often threatened by technology replacing them, and fail to recognize that improved digital learning experiences will be like better text books. If our educators aren't levelling up on tech use, they wont be able to help the students of the future.
- andyjko 9y agoAs a Ph.D. in higher education with both a computer science and learning science background, I can confirm many of your claims. Most education researchers and practicing educators have a weak grasp of computing and it's powers. And indeed, many faculty outside of computing are terrified of computing. There's no context for them to learn about it. I respond to these troubling trends by collaborating with people in other disciplines, sharing my expertise. Right now, I'm working with faculty in our College of Education, in Psychology, and many interdisciplinary researchers with backgrounds in Feminism, Anthropology, and other fields. Interdisciplinary research will save academia; the National Science Foundation has shifted to a strong expectation of interdisciplinary teams. I'm hopeful. Other claims you made are wrong. That people report positive learning experiences with Duolingo is not evidence that they can read, write, or speak a language. In fact, there are several studies of Duolingo that show the exact opposite: there's massive variation in learning outcomes, and it really only supports the most motivated and resourceful of learners. But that's what research is for: to test assumptions with data. Andy Ko Associate Professor University of Washington http://faculty.washington.edu/ajko http://faculty.washington.edu/ajko