Wednesday, February 27, 2013

Codingbat, Progress Graphs and Michael Jordan



codingbat.com is an interesting site where you can practice your programming skills in Python (newer) and Java. It was earlier called JavaBat but the name was changed to codingbat after Python problems were added.

About codingbat

Excerpt from above page:

[ CodingBat is a free site of live coding problems to build coding skill in Java, and now in Python (example problem), created by Nick Parlante who is computer science lecturer at Stanford. The coding problems give immediate feedback, so it's an opportunity to practice and solidify understanding of the concepts. The problems could be used as homework, or for self-study practice, or in a lab, or as live lecture examples. The problems, all listed off the CodingBat home, have low overhead: short problem statements (like an exam) and immediate feedback in the browser. ]

These two excerpts give some good reasons why the site is useful:

[ Theory -- Coding in the Large and Small

To excel in Java, or any computer language, you want to build skill in both the "large" and "small". By "large" I mean the sweeping, strategic issues of algorithms, data structures, ... what we think of basically as a degree in Computer Science. You also need skill in the "small" -- 10 or 20 line methods built of loops, logic, strings, lists etc. to solve each piece of the larger problem. Working with students in my office hours, I see what an advantage it is for students who are practiced and quick with their method code. Skill with the method code allows you to concentrate on the larger parts of the problem. Or put another other way, someone who struggles with the loops, logic, etc. does not have time for the larger issues. ... ]

[ Coding Practice
If you want to build skill in running, what do you do? You run. To build skill in method code, write methods. Ok, that's pretty obvious, but with this site, I'm trying to create an environment where people can concentrate on the coding with nothing else to get in the way. With all the surrounding structure taken care of, you can get a lot of coding practice done in just an hour or two. ... ]

The Progress Graphs feature of codingbat is cool. The author has a good quote in that page:

[ My favorite graphs are like the one above. The person is taking on a problem which is a challenge, and so there are lots of failed attempts. What's most important is that they do not give up; they keep working at it, and eventually figure it out. Step by step, that's how you learn. If a graph is really short, the person was probably not challenging themselves.

I've missed more than 9000 shots in my career. I've lost almost 300 games. 26 times, I've been trusted to take the game winning shot and missed. I've failed over and over and over again in my life. And that is why I succeed.
- Michael Jordan ]

Michael (Air:) Jordan



I came across codingbat recently and tried out a simple Python problem on the site; here is the progress graph for it. You will have to sign up for the site before you can see that graph; signing up is free.

CodingBat sleep_in Progress Graph

- Vasudev Ram

No comments: