Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have seen (and have) books with programming problems perhaps targetted at bright college students who have finished (or mostly finished) a programming class, or even graduates studying for job interviews. This question is NOT about those.

Are there any books or websites with programming problems or problem sets more suitable for pre-college absolute beginning programming students who may not have any strong math background? (e.g. stuff one might assign the 1st, 2nd, 3rd week, etc., in a high school or younger classroom, or equivalent tutored or self-taught situation?). Prefer problems that aren't too tightly specific to any one single programming language.

share|improve this question

closed as primarily opinion-based by Yannis Rizos Jul 23 '13 at 8:20

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

>See: perlmonks.org/?node_id=920206 It is not all Perl at all. It haves some valuable links for all languages. –  Dynamic Nov 1 '11 at 23:58

4 Answers 4

Here are a few that are relatively new:

  • Code Academy - Codecademy is the easiest way to learn how to code. It's interactive, fun, and you can do it with your friends.
  • Code School - Code School is all about learning by doing. Our educational courses combine video, coding in the browser, and gamification principles to make learning more fun and therefore more effective. A typical course contains 5 levels, each with a 10-15 minute video, followed by series of code challenges a student must solve to make it to the next level. Once finished each course provides rewards for completion.
share|improve this answer

Project Euler is a great place to start. It is where I go when I want to teach myself a new language.

I like it because the problem sets are straightforward enough to tackle and don't end up with messes of external dependencies and really let one focus on the language itself.

share|improve this answer
I used to think the same way. Now I find that usually the math behind the question is so much more challenging (for me!) that the language I use hardly matters. No need to write classes, sometimes not even functions. I still use it for fun with math, but not to learn languages anymore. –  MPi Jan 5 '13 at 20:51

Do you really need a book for this? It seems pretty easy to dream up any number of very simple problems:

  • Convert temperature, currency, etc. from one unit to another.

  • Input several parameters and output the result of a calculation based on those parameters:

    • Inputs: mass, acceleration; Output: force
    • Inputs: any two of voltage, current, resistance; Output: the missing value
    • Input: a chemical formula; Output: properties of that compound such as molecular weight
  • Basic mathematical computations:

    • Find the first 6 or 7 perfect numbers
    • Find the first n prime numbers
    • Factor a number
  • Basic data storage:

    • Create a to-do list, address book, calendar, etc.
    • Use a data file, such as a table of elements, to calculate something

I could go on like this all day.

If you're going to be teaching a class, you might want to think bigger. Think of some larger project, and then break it down into simpler, smaller problems. Then you can assign the simpler problems first and work toward putting those skills together into something interesting. For example, you might decide to have students build a web server. That might sound really complicated, but web servers can actually be very simple: accept a request, figure out what to send back, and send the data. So, start by having students accept inputs from stdin, calculate something, and print an output to stdout. Then teach them to use files. Then show them that reading/writing from/to a network connection is just like reading and writing a file. A simple web server can be up and running pretty quickly, and after that you can start adding features like logging, permissions, etc.

share|improve this answer

There's a strange but somewhat interesting open source learning website called P2PU, www.p2pu.org they are like a more loose version of Codecademy. While the lessons are less structured, they are more fun and more intuitive. Users can learn skills through completing challenges with the help of peer commenting and guidance, after each challenge they earn one to multiple badges.

There's a School of Webcraft collection of challenges dedicated to web application skills for beginners.

The method is however untraditional, for example instead of learn HTML5 tags, one challenge task sends users to find HTML tag look-alikes in real world. There was also a component of the challenge asking user to hand write their first HTML codes.

P2PU's badge system is also supported by Mozilla (Firefox folks), which offers great online glossary for beginner programmers.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.