CodeWorkout is an online system for students learning a programming language for the first time. It is a free, open-source solution for practicing small programming problems. Students may practice coding exercises on a variety of programming concepts within the convenience of a web browser! Exercises provide customized, immediate feedback to support learning and suggests appropriate exercises as students improve their mastery.

CodeWorkout Forums

How is CodeWorkout Different?

CodeWorkout was inspired by many great systems built by others, but aims to bring together the best from earlier forerunners while adding important new features. The primary concepts differentiating CodeWorkout from similar online programming learning systems are:

  • Full support for courses and assignments (homework, quizzes, tests, etc.) with traditional gradebook features and score downloading.

  • At the same time, no account is needed for learners who want to try the system out, or engage in free practice or self-study outside the context of a course.

  • CodeWorkout supports both multiple-choice and code-writing questions. Use question tagging to find questions about a particular topic or in a particular style.

  • Inspired by PeerWise, CodeWorkout lets students write their own questions, which can be a helpful learning aid. Instructors can also write their own questions for use in assignments, or draw from a large collection of expert-written questions.

  • Students who are stuck on an exercise can request a hint to help them along. Students who successfully complete questions can leave hints for those who follow. Moderation of hints help prevent students from giving each other answers, while data analytics helps track which hints are most effective, so that students receive the hints that are most helpful for their current situation.

  • Per-question threaded discussion support allows teachers to ask questions about or discuss particular exercises, while also allowing students to ask questions about ambiguities in an exercise or get help. Student and instructor discussions are partitioned so each audience sees what they need to see.

  • Data analytics applied to exercises helps identify difficulty and consistency. Questions that appear problematic based on student performance are targeted for expert review.

  • Similarly, as students answer more and more exercises, the system builds a model of their skills. Students can track their progress and mastery by topic, and when combined with question-based analytics, the system can recommend appropriate exercises on an individualized basis, based on the skills a student has mastered so far.

How is CodeWorkout Different from Web-CAT?

Web-CAT is a more established assignment grading system that is targeted at analyzing programming assignments--anything from a single class or source file to a large program made of many classes. It is typically used in assignments that students work on from a few hours to a few weeks. Some schools use Web-CAT for lab assignments, while others use it for out-of-class individual program-writing assignments, or even group assignments. It's focus is on larger-grained assignments, however. These assignments often require students to apply many different skills in synthesizing an appropriate response.

CodeWorkout, on the other hand, is focus on much smaller-grained exercises where is a student is writing a single method or function, or possibly even filling in the blanks needed to complete one method. These exercises are more the size of individual homework questions, quiz questions, or test questions, rather than full-fledged programming projects. Answering an exercise in this context might take anywhere from less than a minute to 15 minutes or so, but is on a completely different scale that the assignments typically processed by Web-CAT. With CodeWorkout, the goal is to provide students with a large number of small, focused exercises that aim at mastering individual skills in a very small practice setting. Instructors might give students weekly or semi-weekly assignments with 10 or 20 exercises centered around that week's topic, so that students can build up their knowledge practice.

Fall 2015 Launch (Beta Testing)

We currently have a working prototype of CodeWorkout's core features and expect to begin using it in classes locally in June. We are planning to open CodeWorkout up for beta testing using by other schools for Fall 2015 (some time in August). The features CodeWorkout will provide this fall include:

  • Code writing exercises in Java, Python, and Ruby, as well as multiple choice-style exercises. Code-writing exercises will primarily involve writing a single function/method/procedure/main.

  • Fully automatic checking of answers to all exercises.

  • No accounts (or courses) needed to practice or self-study with public questions.

  • Instructors can create and manage courses. You can upload your own roster, or allow students to self-enroll.

  • Instructors can create assignments with any number of exercises, set due dates, and view and download student scores.

  • Use exercises from our pre-written bank of exercises, or write your own.

    • An initial collection of approximately 1,000 exercises including both code writing and multiple choice questions will be part of CodeWorkout in the fall.

    • Public exercises are available for your use under a Creative Commons Non-Commercial Share-Alike license.

    • When writing your own exercises, you can keep them private for use only in your assignments, or publicly share them under the same license as other public questions.

  • Login with Facebook or GMail, for those who prefer it.

  • As always, CodeWorkout is free to use, with a fully open-source code base.

  • Want to use CodeWorkout in your class? Let us know by posting in the CodeWorkout Forum.

Longer Term Goals

Longer term, although these would not be available in 2015, we do plan to add other features as the project progresses, including:

  • The ability for students to write, share, and practice with their own questions.

  • Allowing students who get stuck to receive hints, or once they have succeeded, to leave hints for others.

  • The ability for assignments to be used as homework, quizzes, or even tests (which have different policies regarding whether students immediately see feedback, whether students can see correct answers, availability of hints, time limits, etc.).

  • On-line discussion support so that teachers can discuss exercises with each other, and students can ask (or answer) questions about exercises they are practicing.

  • Data analytics support for modeling student mastery levels on different subject topics, and for intelligently recommending the most productive exercises to use for practice.

  • Data analytics support for assessing the performance of individual exercises to help identify exercises of low quality or that need attention.

  • Support for using exercises for in-class peer instruction activities.

Learn More

Learn more about CodeWorkout, ask questions, or contribute to the project:


Syndicate content

There are no visible status updates.