logo CodeStepByStep logo


CodeStepByStep is a web application to help you practice solving Java, C++, and Python programming exercises online.

To use CodeStepByStep, first create an account, then choose a problem from our list. Type a solution and submit it to our server. The system will test it and tell you whether your solution is correct.

CodeStepByStep has instructor features to allow a teacher to see which exercises have been solved by their students, so you can assign our exercises as homework. If you're a teacher, sign up for an account or request instructor access for your existing account.

CodeStepByStep is an independent project not directly affiliated with any specific educational institution.

Many thanks to past developers who have contributed to this project:

  • Allison Obourn: developer and exercise author (2018-2021)
  • Sara Jackson: developer (2017-2018)
  • Alex Miller: developer (2016-17)
  • Melissa Hovik: student developer (2016-2019)
  • Ryan Rowe: student developer (2016)
  • Jessica Wolk: developer (2012-14)

Many exercises have been added by teaching assistants and colleagues; we thank them for their help.

CodeStepByStep is inspired by similar tools such as Practice-It, CodingBat, JavaBall, and CodeWrite. Many exercises have been added by friends and colleagues; we thank them for their help. We also thank Glen Herrmannsfeldt from Caltech and former UW student Ryu Muthui for contacting us with many bug fixes.

Our Privacy Policy

CodeStepByStep version beta (2023/12/06)

  • C version: gcc 11.4.0
  • C++ version: g++ 11.4.0
  • C# (Mono) version:
  • Go version: Unknown
  • HTML (PhantomJS) version: Unknown
  • Java version: Unknown
  • JavaScript (NodeJS) version: 12.22.9
  • Kotlin version: Unknown
  • ML version: Unknown
  • Perl version: 5, version 34
  • PHP version: 8.1.2
  • Python version: 3.10.12
  • Racket version: Unknown
  • Ruby version: Unknown
  • Swift version: Unknown
  • Visual Basic (Mono) version: 3.9.0-6.21124.20

What's New:

  • [2023/10/10] v0.8.9.15. New optimizations for many languages; should speed up exercise test execution for many exercises.
  • [2023/01/22] v0.8.9.8. New options available in instructor "Student Search" page, including Reset Password and Wipe Data. FAQ page added.
  • [2022/05/07] v0.8.9.7. Changed notification email "from" rules and set them to originate from new server.
  • [2022/02/20] v0.8.9.5. Better logging and tracking of test run time / server load.
  • [2022/01/26] v0.8.9.2. Bug fix for submission timestamps being displayed incorrectly.
  • [2021/12/10] v0.8.9.1. Misc. bug fixes. Improvements for performance and stability on new web server.
  • [2021/10/06] v0.8.8.8. Instructors can now help verify their students' accounts in case they aren't receiving our emails. Improvements to student results page; more detail about problem sets, due dates, attempts needed by each student.
  • [2021/02/16] v0.8.8.4. Minor fixes. Instructors can now set a course to "open" or "closed". If a course is open, students can enroll themselves in that course. If it is closed, the instructor or TA must add the students to the course. This requested feature gives teachers more control over their class rosters.
  • [2020/08/31] v0.8.7.2. New split-pane layout on desktop with side-by-side code description and solution code text area. Streamlining of UI. New exercises added. Bug fixes.
  • [2020/07/29] v0.8.7.0. Perl language support and a few exercises added. Other new exercises added. Bug fixes.
  • [2020/07/08] v0.8.6.0. Visual Basic language support and exercises added. Contact Instructor and Instructor Notes features added to problem sets.
  • [2020/06/25] v0.8.5.0. Bug fixes for instructor-created exercises. Python DrawingPanel graphics exercises added. Various larger exercises added.
  • [2020/01/12] v0.8.4.4. Bug fixes for exercise creation. Bug fixes for student data Excel import.
  • [2019/10/27] v0.8.4.3. Go language support added.
  • [2019/10/10] v0.8.3.9. Many new Java and C++ exercises added. Misc. bug fixes.
  • [2019/08/22] v0.8.3.8. Python graphics exercise support with DrawingPanel.
  • [2019/07/14] v0.8.3.6. Minor UI revamp with wider central area and flat blue button styling.
  • [2019/07/07] v0.8.3.5. Lots of new Python exercises added. C# class exercises added. Ability to add user exercises with file input. Bug fixes.
  • [2019/04/12] v0.8.3.2. Problem set bug fixes/improvements. Ability for some students to disable ads.
  • [2018/08/16] v0.8.2.6. Bug fixes for exercise creation. Ability to edit/reorder a problem set.
  • [2018/05/31] v0.8.2.3. Regular expression exercise support. Rust exception parsing. Bug fixes.
  • [2018/05/18] v0.8.2.1. Swift/Rust bug fixes. Add Exercise bug fixes.
  • [2018/05/09] v0.8.2.0. Swift language support. Improvements to Add Exercise feature. Un-favorite an exercise feature. New HTML/CSS exercise backend based on SlimerJS instead of PhantomJS.
  • [2018/04/15] v0.8.1.1. Rust language support (limited).
  • [2018/04/13] v0.8.1.0. Favorite/unfavorite. User favorite exercises list.
  • [2018/03/11] v0.8.0.7. Context fixes for Python exercises.
  • [2018/02/09] v0.8.0.6. New instructor/TA dashboard (by Sara Jackson).
  • [2018/01/12] v0.8.0.0. Support for user-added exercises! Small UI changes and bug fixes.
  • [2017/12/23] v0.7.8.2. C++ graphics support via GWindow library. Misc bug fixes.
  • [2017/12/16] v0.7.8.1. C# DrawingPanel/graphics support. Other misc new exercises added. Misc bug fixes.
  • [2017/11/30] v0.7.8.0. Added Kotlin language support.
  • [2017/11/21] v0.7.7.4. Ruby language improvements and bug fixes.
  • [2017/11/17] v0.7.7.3. Better protection against excessive output and infinite loops/crashes, and other bug fixes. C# Main method improvements.
  • [2017/09/15] v0.7.6.2. Problem Sets feature v1 added. Ability to create, view, list (teachers/TAs), and solve (students) a problem set.
  • [2017/08/15] v0.7.5.8. Create Accounts for My Students feature added (Sara!). Ability to import student roster from an Excel spreadsheet.
  • [2017/07/20] v0.7.5.2. Introduction of HTML/CSS exercises.
  • [2017/07/08] v0.7.5.0. Revamped exercise search (Sara!). New C#, Python, and Racket (Melissa!) exercises added. Bug fixes.
  • [2017/06/23] v0.7.4.0. New Achievements feature (Sara!). Lots of additional Java and Python exercises added. Miscellaneous bug fixes.
  • [2017/06/18] v0.7.3.5. Better references and links for Java exercises.
  • [2017/06/16] v0.7.3.4 posted. Embedded exercises support. "Keep me logged in" feature.
  • [2017/04/03] v0.7.2.3 posted. Karel the Robot exercise support added.
  • [2017/03/29] v0.7.2.2 posted. ML and Ruby language initial support added.
  • [2017/03/21] v0.7.2.0 posted. C# language initial support added. Welcome to new CSBS developer Sara Jackson!
  • [2017/02/25] v0.7.1.8 posted. Racket functional language added.
  • [2016/12/02] v0.7.1.3 posted. Download student results as CSV feature added.
  • [2016/10/02] v0.7.0.6 posted. Additional C exercises; support for C-style arrays and NULL values.
  • [2016/09/25] v0.7.0.5 posted. Initial JavaScript and C exercise support.
  • [2016/08/24] v0.7.0.0 posted. Heavy refactoring and bug fixes. Initial PHP support.
  • [2016/08/05] v0.6.9.8 posted. Improvements to linked list / binary tree exercises. Extend session timeout. New exercises added. Bug fixes.
  • [2016/02/19] v0.6.2 posted. Bug fixes with C++ compiler errors. Bug fixes for Python syntax highlighting.
  • [2015/12/18] v0.6.1 posted. Bug fixes and improved CSS on mobile devices. Several exercises added.
  • [2015/11/30] v0.6.0 posted. Initial version of asynchronous job queue added. This will improve performance during high-traffic times and facilitate later work to integrate AWS / cloud features into the system.
  • [2015/11/24] v0.5.4 posted. Improved icons; redesigned UI for test runs. New refactored compiler error / exception output for Java/C++/Python including exception stack traces.
  • [2015/11/23] v0.5.3 posted. Initial Python support.
  • [2015/11/19] v0.5.0 posted. UI cleanup.
  • [2015/09/01] Initial site created.

Is there a problem? Contact us.