Edit: Hi Everyone! After an amazing response to this article, I’ve created something called The Weekly Project Club. Every week you’ll get a project idea in your inbox, but you’ll also get so much more. Learn more and sign up here!

The other day I noticed a pattern. I noticed a lot of people that are trying to learn programming, but they don’t have a specific goal in mind. I’ve talked about how understanding why you want to learn to program can help you pick what language to learn (Right Here!), and how to actually make that decision (Over Here!) but how does a project help?

When I mentor programmers, I’ve found that having a project to work on can help block out some of the other distractions, like wondering whether or not you’re using the right language. By focusing in on a specific goal, you have a little less energy to worry about whether this is exactly the language you should be working with. And the result is that you build something neat, and you learn something along the way! 2 birds, 1 stone.

So that’s why I curated this list of projects for beginner programmers. Many people have made large lists of projects to learn programming with, but they are rarely organized by difficulty. I’ve gone through several popular listings of programming project ideas. You can find the sources at the bottom of the page if you want to see the full listings.

I’ve broken it up into Tutorials and Ideas. Tutorials include a link to a resource, while ideas are just general descriptions of projects. I’ve also included my list of favorites for beginners.

Have a look, and see if something inspires you!

Table Of Contents

Tutorials

My Favs

Easy

Medium

Hard

Ideas

Easy

99 Bottles

Create a program that prints out every line to the song “99 bottles of beer on the wall.”

Do not use a list for all of the numbers, and do not manually type them all in. Use a built-in function instead.

Besides the phrase “take one down,” you may not type in any numbers/names of numbers directly into your song lyrics.

Remember, when you reach 1 bottle left, the word “bottles” becomes singular.

Magic 8 Ball

Simulate a magic 8-ball.

Allow the user to enter their question.

Display an in progress message(i.e. “thinking”).

Create 20 responses, and show a random response.

Allow the user to ask another question or quit.

Bonus: Add a gui. It must have a box for users to enter the question. It must have at least 4 buttons: ask clear (the text box) play again quit (this must close the window)



Rock Paper Scissors Game

Create a rock-paper-scissors game.

Ask the player to pick rock, paper or scissors.

Have the computer chose its move.

Compare the choices and decide who wins.

Print the results.

Subgoals: Give the player the option to play again. Keep a record of the score (e.g. Player: 3 / Computer: 6).



Countdown Clock

Create a program that allows the user to choose a time and date, and then prints out a message at given intervals (such as every second) that tells the user how much longer there is until the selected time.

Subgoals: If the selected time has already passed, have the program tell the user to start over. If your program asks for the year, month, day, hour, etc. separately, allow the user to be able to type in either the month name or its number. TIP: Making use of built in modules such as time and datetime can change this project from a nightmare into a much simpler task.



Medium

Pomodoro Timer

Create a Pomodoro Timer.

Pomodoro Timer is a time management method. The technique uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks. These intervals are named pomodoros, the plural in English of the Italian word pomodoro (tomato), after the tomato-shaped kitchen timer that Cirillo used as a university student. There are six steps in the original technique:

Decide on the task to be done. Set the pomodoro timer (traditionally to 25 minutes). Work on the task. End work when the timer rings and put a checkmark on a piece of paper. If you have fewer than four checkmarks, take a short break (3–5 minutes), then go to step 2. After four pomodoros, take a longer break (15–30 minutes), reset your checkmark count to zero, then go to step 1. to know more about Pomodoro Timer click here

GoogleCase

It’s a game which allows you to play with english sentences.

User will enter a sentence in any format.(uppercase or lowercase or a mix of both)

Program must convert the given sentence in google case .What is a google case style of sentence?know_about_it_here:.

Subgoals: Program must then convert the given sentence in camel case.To know more about camel case click_here Sentence can be entered with any number of spaces.



Dice Rolling Simulator

Allow the user to input the amount of sides on a dice and how many times it should be rolled.

Your program should simulate dice rolls and keep track of how many times each number comes up (this does not have to be displayed).

Finally, print out how many times each number came up.

Subgoals: Adjust your program so that if the user does not type in a number when they need to, the program will keep prompting them to type in a real number until they do so. Put the program into a loop so that the user can continue to simulate dice rolls without having to restart the entire program. In addition to printing out how many times each side appeared, also print out the percentage it appeared. If you can, round the percentage to 4 digits total OR two decimal places.

Bonus: You are about to play a board game, but you realize you don’t have any dice. Fortunately you have this program. 1. Create a program that opens a new window and draws 2 six-sided dice 2. Allow the user to quit, or roll again Allow the user to select the number of dice to be drawn on screen(1-4) 2. Add up the total of the dice and display it



Count and Fix Green Eggs and Ham

Some of you may remember the Dr. Sues story “Green Eggs and Ham”. For those of you that don’t remember it or have never heard of it, here is the story. However, there is a problem with the story I gave you - every time the word I is used, it is lowercase. Because of this problem, your job is to do the following:

Copy the story I gave you into a regular text file.

Create a program that reads through the story and makes the letter i uppercase any time it should be. (Make sure to change it when it’s used in sam-I-am’s name too.)

Have your program make a new file, and have it write out the story correctly.

Print out how many errors were corrected.

When you’re finished, you should have corrected this many errors.

Hard

Random Wikipedia Article

If you’ve been to Wikipedia, you may have noticed that there is a link to a random article on the left side of the screen. While it can be fun to see what article you get taken to, sometimes it would be nice to see the name of the article so you can skip it if it sounds boring. Luckily, Wikipedia has an API that allows us to do so Click here. However, there is a dilemma. Since Wikipedia has articles about topics from all over the world, some of them have special characters in the title. For example, the article about the spanish painter Erasto Cortés Juárez has é and á in it. If you look at this specific article’s API, you will see that the title is “Erasto Cort\u00e9s Ju\u00e1rez” and that the \u00e9 and \u00e1 are replacing the two previously mentioned letters. (For information about what this is, start by checking out the first half of this page in the documentation). To make your program work, you’re going to have to handle this problem somehow.

Create a program that pulls titles from the official Wikipedia API and then asks the user one by one if he or she would like to read about that article.

Example: If the first title is Reddit, then the program should ask something along the lines of “Would you like to read about Reddit?” If the user says yes, then the program should open up the article for the user to read. HINT: Click here to see how the article’s ID can be used to access the actual article.

Subgoals: As mentioned before, do something about the possibility of unicode appearing in the title. Whether you want your program to simply filter out these articles or you want to actually turn the codes into readable characters, that’s up to you. Make the program pause once the user has selected an article to read, and allow him or her to continue browsing different article titles once finished reading. Allow the user to simply press ENTER to be asked about a new article.



What’s the Weather?

If you would like to know the basics of what an API is, check out this post by iamapizza.

Create a program that pulls data from OpenWeatherMap.org and prints out information about the current weather, such as the high, the low, and the amount of rain for wherever you live.

Subgoals: Print out data for the next 5-7 days so you have a 5 day/week long forecast. Print the data to another file that you can open up and view at, instead of viewing the information in the command line. If you know html, write a file that you can print information to so that your project is more interesting.

Tips: APIs that are in Json are essentially lists and dictionaries. Remember that to reference something in a list, you must refer to it by what number element it is in the list, and to reference a key in a dictionary, you must refer to it by its name. Don’t like Celsius? Add &units=imperial to the end of the URL of the API to receive your data in Fahrenheit.



Sources

P.S.

Deciding on what you’re going to build is the 1st step of my 4 step program to pick the perfect programming language or framework. If you’re having trouble finding the right one, consider signing up.