logo CodeStepByStep logo

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.

The primary developer of CodeStepByStep is Marty Stepp. CodeStepByStep is an independent project not directly affiliated with any specific educational institution.

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

  • 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, CodeWrite. Many exercises have been added by friends and colleagues; we thank them for their help. We also thank Glen Herrmannsfeldt from Caltech for contacting us with many bug fixes and suggestions for improvement to the quality of the system.

Our Privacy Policy


CodeStepByStep version 0.8.3.8 beta (2019/08/22)

  • C version: gcc 4.8.4
  • C++ version: g++ 4.8.4
  • C# (Mono) version: 5.10.1.20
  • HTML (PhantomJS) version: 1.0.0
  • Java version: 1.8.0_91
  • JavaScript (NodeJS) version: 7.10.1
  • Kotlin version: 1.2.0
  • ML version: 110.76
  • PHP version: 5.5.9-1
  • Python version: 3.4.3
  • Racket version: 5.3.6
  • Ruby version: 1.9.3p484
  • Swift version: 4.0.3

What's New:

  • [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. New version of Stanford C++ libraries. 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. Problem 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 problem 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 a site administrator.

© Marty Stepp, all rights reserved.