DEV Community

Sam Borick
Sam Borick

Posted on • Updated on

C# Project Ideas 100+ Project Ideas

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 problem to solve in your inbox. You can work on solving the problem, and you'll have the help of the whole club to keep you on track. 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!


My Favs






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.


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


  • 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.


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 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.


What do you think? Do you like to learn with a specific project or do you prefer without?

Top comments (17)

corsari profile image
corsari • Edited

Hello this list rocks
Have you ever met or realized a tutorial where PHP OOP beginners are accompanied by the hand from the classes vocabulary to some PURIST OOP STYLE GUIDE

What do I mean

With plenty of PHP OOP tutorials and guides around the web, you become half of an expert for the terms part of the PHP OOP

but then ... they all forget about teaching a little of mentality and good style and practices when thinking and projecting with OOP in mind (for PHP)

Maybe its me that am wrong, but e.g. the typical CRUD tutorial for PHP/MYSQL is usually procedural (and that is good for such a tiny app) BUT in a PHP OOP tutorial,
it would be preparatory to have the chance to see some comparison
I mean see that tiny CRUD app EITHER the procedural way and next its alter ego made with as many classes as possible :-)

For comparison I mean

when you learn that stuff, talking about the above example, as rookie you ask yourself
the PHP OOP PURIST GURU where would place the foreach loop that will output the result of the SELECT query to fill the HTML table?
In which one of the classes? (Given that above I asked ... how many / which will be the classes)

Needless to say that the comparison and the OOP code must teach the PURIST STYLE and so ideally it should be written by some PHO OOP guru/pro

Thank you for reading and thank you for the comprehension
Thank you even more if you may link a well done tutorial that makes the second part that I talk about

which passes from the PHP OOP "vocabulary" to some PHP OOP "grammar" or if you have a link to some PHP OOP oriented very basic app to be used as study field (hopefully NOT part of or based on a PHP framework)

it would make no sense to put classes in action by myself to make practice ... the wrong way, they may work but that is not the point.


daviduzondu profile image
David Uzondu

I agree

davidmm1707 profile image
David MM👨🏻‍💻

Thanks Sam for these ideas.

I'm always learning, and knowing when to drop tutorials and when to start learning by yourself is something I'm working on. By giving these project ideas not only we have new ideas of things to build, but also the difficulty level, so we can scale from that.

PS: Check your first link on GoogleCase, it is broken.

risafj profile image
Risa Fujii

Thanks for a great post! Next time I want to start a side project, I'll read this again for inspiration.

Just letting you know that the link below seems to be broken:

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

developervilchez profile image
Lourdes Vílchez

Thank you so much!!

dejanperovic profile image
Dejan P.

Thank you for collection!

nicharryton profile image
Nic Harrington

Great post, thank you!

jahnvisrivastava100 profile image
Jahnvi Srivastava

Great List : )

samborick profile image
Sam Borick


lukegarrigan profile image
Luke Garrigan

Blimey, thank you for this. Bloody endless ideas!

vijoin profile image
Victor Inojosa

Already subscribed! :-)

variable4u profile image
محمد النعيمي

جزيل الشكر

rmfranciacastillo profile image
Renato Francia Castillo

Great List! :D

ben profile image
Ben Halpern


samborick profile image
Sam Borick

Double wow! I only know about because I follow you on twitter! and here we are. Small world!

iceorfiresite profile image
Ice or Fire

I like "What’s the Weather?" as a project. I did something similar in the past and it was and great practice for consuming APIs

harlyon profile image
Harrison Ekpobimi

Great list.
Most times I get stuck with what to add to my portfolio.
Can these projects get you a job when added to your portfolio?