EdGurus
  • Best Practices and Tips
    • Design Decision Wizard
    • The Basics
    • Ed Sites Doing It Right
  • Guru to Guru
    • Advice from Others
    • Share Your Wisdom
    • Discussion Forums
  • Experts' Corner
    • Online Students
    • Online Courses
    • Online Lessons
  • In the News
  • About
  • Contact
  • Terms of Use
  • Reports and Resources

Codecademy: A great example of how to use worked examples online

8/26/2014

1 Comment

 
Author: Roy Stripling
Disclaimers: This in an opinion piece. The opinions expressed in this review are those of its author (and anyone who happens to agree with him). Other than completing some online courses, the author is not in any way affiliated with
 Codecademy.

Note: Images in this post may contain copyrighted material used under the educational and criticism fair use exemptions to the U.S. copyright law.

PictureCodecademy User Home Page
The internet is fundamentally an interactive environment. With an abundance of multimedia formats and modes of interactivity, the Internet would seem a natural place to teach learners through worked examples and interactive learning practices.

What are worked examples?
"Worked examples" is basically just giving examples of problems that are partly worked out. The goal is to reduce  mental effort that isn't directly involved in learning something new. Worked examples can be "scaffolded" so that at first they there is little if any information for the learner to fill in. Then, as the learner progresses, less information is provided for them. This gives them more and more opportunities to recall and reinforce the parts they've already learned, and add to that knowledge the new parts they're being asked to learn. In general, research suggests that worked-examples are best for initial acquisition of skills or concepts.

So what's Codecademy and what does it do?
Codecademy is a free online education portal dedicated to teaching beginning computer programming skills. It distinguishes itself from MOOCs such as Udacity, Udemy, and Coursera, by skipping instructional videos and lectures and starting learners almost immediately on interactive educational activities. In fact, Codecademy's instructional experience is entirely delivered through a page with three sections. The left section contains instructional content (all in text) and step by step instructions for completing the worked code example presented in the middle section. This middle section presents the actual computer code (minus whatever element the learner is asked to fill in) that executes in the right panel. The right panel displays the results of the code present in the middle panel. If errors are made in the middle panel, the resulting erroneous behavior or error messages are visible in the right panel, and a red-tinted feedback box pops-up at the bottom of the screen explaining the problem and a hint for correcting the error. If the entered code is correct, a green check icon appears at the bottom of the screen along with encouraging feedback and a green button enabling progression to the next step in the lesson. It all seems pretty simple, but given the range of code entries a learner might submit, providing meaningful feedback is likely no small challenge. Also making all of this work in a web browser is even more impressive.


Picture
Codecademy Instructional Interface: Incorrect Answer
Picture
Codecademy Instructional Interface: Correct Answer
PictureCodecademy: Searchable Q&A Forum
It doesn't always work perfectly, though. Occasionally, I found the tool would not process a correct entry if it was a fix of an incorrect entry. In these cases, I reloaded the page (which did not cause me to lose my progress, but did reset the code in the middle panel to its original content), entered the correct code, and everything worked well. Also the feedback for wrong entries doesn't always provide a useful hint. In an early Python lesson, I was asked to create a variable called, "my_bool" and set it equal to "True". I entered "my_bool = true" (lower case "t") instead of "my_bool = True" to see what would happen. I got an error message and a pop-up feedback box asking me if I had created a variable called my_bool. Since I knew the real source of my error, I corrected "true" to "True" and got my green check icon and was able to move forward in the lesson. If I hadn't been able to figure out the problem, I could have clicked the "Q&A forum" button at the bottom of the first section. This opens a new browser tab with a searchable forum of every question that's been posted on this part of the course so far. It's often the case that someone's already posted your question and someone else has already answered it, so getting the hint you need is pretty easy. But if it's not there, you can post a new question and go back to trying to figure it out while you wait for someone to respond to your post.

So they're using worked examples. How's that going?
The good: Codecademy does everything it can to make the most of worked examples, and they use it to great effect. The first few steps in a lesson might be just introductory information (getting oriented to their three panels, for example). Generally, in those cases you're only asked to look over the middle and right sections before clicking the continue button. But before too long they'll have you filling in missing information or adding multiple lines of code. Initially, they  tell you almost exactly what to fill in and where. Instead of telling you to type in "my_age = 12" on line 8, they'll tell you to create a variable on line 8 called "my_age" and set it equal to 12. These are lessons meant for beginners, so the simplicity of the task seems reasonable. However, if you've got some prior experience programming in other languages, these early lessons can be helpful as each language has slightly different ways of doing basic things like this. This approach makes it easy to learn these differences and their short, focused tasks makes it easy to move through them very quickly.

Eventually, though, you're filling in your own code for entire "for", "if-else", "while", or "case" structures or complete functions called by other elements of your code. If you're a true coding novice, these lessons deliver exactly what you need. If they come up short in any way its not providing enough opportunities to practice and reinforce these fundamental coding logic concepts. Later lessons walk you through the development of simple task oriented programs that do things like track deposits and withdrawals from an imaginary bank account, or play a game of blackjack. These also are very useful for beginners as they introduce the novice coder to basic concepts for creating a more complex and complete programs out of smaller building blocks of code. 

The not so good: More complex programming skills still seem to be a bit beyond Codecademy's reach, however. Object-oriented practices, for example, seem impractical given their browser-based instructional environment. They do teach building and calling functions, but -- likely because of the limitation of teaching through one browser window -- they don't call to functions saved in other files (or even simulate this... actually doing this through a web browser would probably cause serious security vulnerabilities). Nor do they advise on how, when, or why one might want to save general purpose/frequently called functions in separate files. Other higher level programming practices are also not taught.

More recently they've introduced short courses on using application programming interfaces (APIs). [APIs are rules for how your program can to send or receive information to/from other programs.] I recently took the course on using the YouTube API, but don't feel I learned too much from it. It seemed more like a quick walk-through of the basic elements of the YouTube API. It used a single, scaffolded worked example that showed how to link to YouTube, submit search terms and receive search results. But it didn't cover how to request, receive, embed, and display YouTube videos. Also, after only one worked example, I was left feeling that, even if I had a site where I wanted to replicate the functions they demonstrated (seaching YouTube), I could do that, but only because I could copy and paste their code, not because I knew how to do it myself.

So what happens when I'm done with their worked examples?
First a brief confession: All of my programming skills are entirely self-taught. I learned my first two programming languages (LabView and Java) using text books and suitable
integrated development environments (IDE). The approach that worked best for me was to type the book's code examples into the IDE as I read their lessons. That and start writing code for a completely different project of my own vision as soon as I understood enough to do so. I really feel this deepened my learning, made it last longer, and made it much easier to transfer it to new projects I thought of later. Perhaps with similar thinking in mind, Codecademy more recently added a "Codebits" tool, which provides a free-form coding and output sections (like the middle and right panels from their instructional interface) that supports HTML, CSS, and JavaScript code.

In the future, they may expand Codebits to include other languages. However, I'm not sure that it is critical for the learner's further development. Once you've finished your Codecademy introductory lessons, you'll be ready for more advanced training that's going to require more than either worked examples or free-form play can offer. You'll want to read in more depth about higher design concepts and best practices. If you have a project in mind, you'll do well to try to identify key concepts you're still lacking (things like APIs for third party software, security considerations, or when to use server-side versus client-slide processing) and search for good books or online lessons that cover those topics. If you've already jumped in and started coding a project of your own creation, you'll often find answers to smaller problems you're struggling with just by searching the Internet at large. So basically, I'd say that once you've finished your Codecademy course(s), you should download a free IDE. I'm a big fan of the Komodo Edit IDE. It allows you to develop code in every programming language I've ever thought about using (except LabView).

What's your bottom line?

Codecademy is a compelling interactive learning environment and makes great use of worked examples. Its a great example of how to make that approach work for online education in general. I much prefer it over viewing recorded lectures that generally cover all the same introductory material, but have you to take it all in passively and at their pace. Interactivity in those kinds of online courses are generally limited to answering a few quiz questions from time to time. In my experience, this is not a sufficient learning experience to deliver deep, lasting learning that transfers to real-world use.

1 Comment

When Is gamification Good? A user reports on Duolingo.

7/17/2014

3 Comments

 
Author: Roy Stripling
Disclaimers: This in an opinion piece. The opinions expressed in this review are those of its author (and anyone who happens to agree with him). Other than completing some online courses, the author is not in any way affiliated with DuoLingo.
Note: Images in this post may contain copyrighted material used under the educational and criticism fair use exemptions to the U.S. copyright law.
Picture
Duolingo user page
PictureDuolingo lesson page.
Gamification is the application of various game features towards non-game uses. It can include using anything you find in a game like scoring points and keeping track of high scores, extra lives, leveling up, unlocking features, using sound effects or music, first-person animations, and so on. In educational applications, gamification is often touted as a way to increase learner interest, engagement, effort, and "stickiness." On the other hand, most educational researchers would caution you against adding bells and whistles that aren't central to your learning objectives. So is gamification good or bad? The research method is an excellent tool for separating what really works from what doesn't, but it is not a fast process. In educational research in particular, you can't really feel confident about conclusions until they've been replicated by several independent studies and labs. So while we wait for researchers to weigh in, we may still be able to learn something by looking at one very successful educational tool that makes use of gamification and consider what it might be doing right (and wrong).

Duolingo is relatively new online/mobile tool for learning a second language that is rapidly growing in popularity. It was selected as Apple's 2013 App of the year, and, according to its Wikipedia page, in a little over two years it went from 300,000 to 12.5 million active users (as of January 2014). Duolingo is free to its learners, which almost certainly helps with it's rapid growth and popularity. But if it didn't work to its learners satisfaction, they would likely not keep coming back. So what is Duolingo doing right?

What are they doing?
First, let's look at how it is structured. I'll focus on its Spanish lessons for Engish speakers with the assumption that Duolingo uses all the same methods and features for its other language courses. Duolingo provides a modest course that includes 64 units, each consisting of a handful of lessons (3-5 typically). When the user selects a unit, they're show the lessons for that unit and are presented the only formal instructional discourse they'll encounter. Typically, this is a short set of tips (if present at all) that are pertinent to the material about to be covered (for example, the difference between formal and informal forms of the word "you"). Each lesson generally contains 15-20 problems for the learner to solve. A problem may ask the learner to translate a word (at lower levels), phrase, or sentence from Spanish to English, from English to Spanish, to transcribe a spoken Spanish phrase or sentence, to repeat a spoken Spanish phrase or sentence. If the learner gets the answer right, they hear a pleasant chime (gamification element: use of sound effect) and they see a visual confirmation (a check mark and "you are correct" message). If they get the answer wrong, they hear a different and slightly less pleasant chime and are shown a red "X" and the correct answer. In either case,
they see a grey square in the progress bar at the top of the screen turn green, and they're given access to a discussion thread on that problem. The conversation in the thread may include back and forth on why the answer is what it is, what other answers might also be correct, or it might just discuss something odd about the sentence itself. After the learner is done with the problem and any exploration of the discussion thread they care to take, he or she clicks a button to move to the next problem. Also at the top of the screen are three hearts
(gamification element: lives). If you get a problem wrong, you lose a heart. If you lose all of your hearts, the lesson ends and you're not given credit for completing it. (You can retake it from the beginning right away.) If you successfully finish the lesson, you earn points (gamification element: scoring points) which your friends can see (gamification element: competition/high score list). If you finish the lesson without losing any hearts, you earn a "lingot", which you can trade for other items including replacing a lost heart in a later lesson (gamification element: earning "coins" that can be exchanged for other game elements).

On the learner's home page, the course units are organized into a cascading tree of topics, each represented by medalion like icons (the medallion for the Animals unit depicts a whale, while the medallion for the Food unit depicts a hamburger). Rows in the cascading tree imply levels as there are anywhere from one to three units per row and each row is unlocked when all of the units from the previous row are completed
(gamification element: leveling up).

Does this work?
Duolingo summarizes one formal evaluation carried out by
Roumen Vesselinov (Queens College, City University of New York) and John Grego (University of South Carolina), which found that 34 hours of time spent on Duolingo was equivalent of one semester of an introductory college Spanish language course. My personal experience with Duolingo's Spanish course (having completed about 1/3 of it) is that it is effective at increasing written language comprehension, but spoken language comprehension is not as well supported. Language is used in multiple ways, so being able to read and write (at a very introductory level) is an improvement worth feeling good about. But I'm not seeing much improvement in my ability to understand what's being said on the Spanish channels (even when I tried to watch the Spanish version of Sesame Street), nor do I feel confident enough in my skills to start talking in Spanish with my Spanish-fluent friends. But practicing conversational skill is exactly what it takes to become competent at it, and this is probably the biggest feature that Duolingo is missing.

Yeah, yeah, but what about the gamification part? Does THAT work?
Overall I would say yes. One game feature that had initial appeal, but that quickly became less important to me was scoring points for each lesson completed. I think this quickly became meaningless, because I'm not in this to "win" any point-based competition. If I were a more competitive person, and I was sharing my scores with other friends who I was determined to beat, I might be distracted from the lessons by the drive to accumulate points. Rather than spend time reading the tips at the beginning of the lessons, or reviewing the discussion threads for still more enlightening tips from others, I would be inclined to charge forward or repeat lessons until I managed to just pass them, then never look back -- learning be damned. For me, the point scoring feature is harmless because I don't care about it and it is easy to ignore, but if I did care, it could undermine my progress. I've seen other learning games that offered extra points for quick responses, even though one of the learning objectives was to teach the learners not to make hasty decisions.
I think the message here is don't include game features that conflict with or could distract from your learning objectives.

Most of the other game features are used effectively, however. I find earning lingots to be motivating because I can use them to buy an extra heart/life. There have been times when my phone's auto-correct changed my right answer to a wrong one just before I submitted it. Having a way to get my heart back makes this kind of experience much less frustrating. I also find the three hearts/lives motivating as well. It adds some pressure -- I become especially diligent near the end of each lesson as I don't want to lose the lesson at the very end -- without adding too much pressure. After all, it only takes about 3 minutes to repeat the lesson if I do lose it. Leveling up in Duolingo also provides some sense of motivating satisfaction. It feels great to see the progress I've made, especially when I know that it represents an actual real-world skill that exists beyond just this game. This does make me want to stick with the program just a little more. I even find the feedback chimes and "X" or checkmarks motivating. They are immediate and short, so not at all intrusive, while providing meaningful feedback (especially when combined with the presentation of the correct answer if I did not provide it in the first place.

What could they do better?
With regards to gamification, I think they've pretty much nailed it. If I worked at Duolingo, I would push for minimizing the scoring aspect. They're doing a great job at keeping the interface uncluttered. The problem screens in each lesson are almost blank, except for the actual problem and answer field. There is no background music playing, and no characters added to the screen to add charm or color. The screen only contains the material to be learned, the progress bar, your hearts (which tell you what margin of error you have left in this lesson), a button to check your answer, and a "quit" link to get out of the lesson if needed. For some time educational researchers have been saying that less is more when it comes to online and multimedia learning, and Duolingo got the message.

With regards to learning effectiveness, I think the one thing they really could do better is create opportunities for conversational practice. If I worked at Duolingo, I'd test the effectiveness of adding a chat feature that paired Spanish speakers who wanted to learn English with English speakers who wanted to learn Spanish. They could offer it as a reward for completing a level or make it an earned and purchased experience bought with a handful of lingots. With 12.5 million active learners, there is probably almost always a large number of people taking lessons at any given time. Why not cover one of your biggest weaknesses, while give them a chance to get into the language teaching game, too?

3 Comments

    Archives

    August 2014
    July 2014

    Categories

    All

    RSS Feed

EdGurus.com | Best Practices and Tips | Guru to Guru | Experts' Corner | In the News | About us | Contact | Terms of Use
All content CC-BY SA 2.0, except where noted otherwise.
Photo used under Creative Commons from mikecogh