share
Stack OverflowYour favorite code kata
[+61] [12] Aaron Maenpaa
[2008-09-04 19:17:51]
[ self-improvement code-kata ]
[ http://stackoverflow.com/questions/44533/your-favorite-code-kata ]

What are your favorite code kata [1]?

We already know Jeff Atwood's answers [2].

I found many examples with code at : github.com/garora/TDD-Katas - Rick
[+25] [2008-09-04 23:02:30] slm

Take a look at Larry O'Brien's 15 Exercises to Know A Programming Language [1].

For example the first exercise is:

Write a program that takes as its first argument one of the words 'sum,' 'product,' 'mean,' or 'sqrt' and for further arguments a series of numbers. The program applies the appropriate function to the series.

Educational goals of exercise 1:

Requires basic control flow, basic operators, and the math library. (Complex numbers available?)
What are arrays like?
What about parsing / implicit conversion?
Are functions first-class (availability of Map() and Apply())?
Error handling: What happens on invalid data?

The exercises often build on themselves and use code or data from previous tasks. The exercises in general tend to be much more practical and less "puzzley" than Project Euler

[1] http://www.knowing.net/index.php/2006/06/16/15-exercises-to-know-a-programming-language-part-1/

(3) Your links don't work anymore. Use this: knowing.net/index.php/2006/06/16/… - Joe W.
1
[+22] [2008-09-04 19:32:11] amrox

I pick up some excercises from Project Euler when I can:

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

http://projecteuler.net/


(28) I don't agree. PE is far more about the math than it is about programming. It definitely hones your math and algorithm design skills, but they aren't really software engineering exercises. - Adam Jaskiewicz
2
[+6] [2008-09-04 19:30:00] Arkadiy

Etudes for Programmers [1] is quite outdated, and the etudes may be too large to be "kata", but its Russian translation was quite an inspiration for me when I was learning to code.

[1] http://rads.stackoverflow.com/amzn/click/0132918072

I loved that book when I started programming. - Kwang Mark Eleven
3
[+5] [2010-01-20 08:37:51] stephanos

Well, I'm biased, but I like my http://codingkata.org *g*


4
[+4] [2010-09-05 16:39:11] Andre Holzner

Topcoder [1] practice rooms and challenges

[1] http://www.topcoder.com/wiki/display/tc/Sample+Problem+Statements

5
[+2] [2010-08-06 17:48:10] Sean O'Hollaren

My favorite is definitely CodingBat [1].

[1] http://codingbat.com/

6
[+1] [2008-09-04 19:29:26] Bill

I found a link to Project Euler [1] last night through XKCD's blag [2] [sic]. I like his suggestion that:

"it’s a great way to learn a language; I started picking up Python last year by doing the first couple dozen Project Euler problems in it." source [3]

I'm trying to work through them from a Test Driven Development perspective myself, as a way of reinforcing the fundamentals.

[1] http://projecteuler.net/
[2] http://blag.xkcd.com/
[3] http://blag.xkcd.com/2008/08/22/pi-con-math-gender-glaubama/

7
[+1] [2008-09-04 21:01:49] Luke Halliwell

For pure problem-solving and algorithm skills, try the IOI [1] problems - they're great fun, and come with some evil test data. If you catch it at the same time as the contest itself, they often hold an online contest where you can try the questions in more realistic conditions.

Note: the 2008 website is incredibly ropy, if you're after this year's questions.

[1] http://en.wikipedia.org/wiki/International_Olympiad_in_Informatics

It takes some digging to get to the sites. You have to go to the end of the Wikipedia article, then look at the each ioi site, such as ioi2004.org, and then look around for the tasks. - Spencer Kormos
8
[+1] [2008-09-04 21:12:53] chakrit
  • What do you do to practice software development?

    Lead a team that builds real-world production software that are used by thousands everyday.

  • Where do you go to find new small projects to practice?

    My very own machine. Every now and then I find something on my machine that annoys me or requires a few steps to accomplish, I then set out to write a program that would deal with the annoyance and/or reduce steps to accomplish some tasks.
    .
    BATch files and powershell scripts are good "small project" practice from time to time as well as rolling/maintaining your own "AutoHotkey" scripts. And since I am a command line junkies, I have a lot of ideas for console applications as well.
    .
    And there are all the puzzles, just go to some online browser-game like Neopets [1] and try to write a program that solves one of their minigames efficiently.

[1] http://www.neopets.com/

9
[+1] [2010-09-05 16:34:03] nkint

best kata is fizzbuzz! to solve in 15minutes with OCP rules


10
[0] [2010-11-01 19:11:27] Thomas Nilsson

I provided some twists to the FizzBuzz kata to the kata catalog at http://www.codingdojo.org which adds a generalization, which makes it my current favourite. The Texas Hold'm kata is also a good one, although a bit tedious and large if you want to finish it.


11
[0] [2011-04-08 20:53:07] Pablo B.

I could learn a lot watching katacasts [1].

[1] http://www.katacasts.com/

12