I see a lot of posts from people asking for ideas for projects, and I see a lot of responses, including some common projects myself. But I don’t think it’s enough to just list three or two, so I’ve compiled this list for you to bookmark and spread if you’re looking for simple programming projects to learn and practice. These projects are not at the paper level, they’re just a little bit of an inspiration.
Below you’ll see more than 120 project ideas that I brainstormed. I’ve divided them into 10 categories by topic, but some projects actually cover more than one topic.
Review images
Update: If you like these ideas, you can also read my ebook. It’s over 100 pages, 200 ideas, and lots of useful content and links. Each idea contains a difficulty score, tips for implementing the idea, and a more complex version of the idea. It’s got more depth than this. Also check out my other book, The Coding Survival Manual: Habits and Pitfalls, free of charge.
Text manipulation
- Reverse string – Take a string, reverse it and print it.
- Latin Pig Word Game – this is an English language game. The basic rule is to move the first consonant phoneme of an English word to the end and add the suffix -ay (” banana “becomes” anana-bay “, for example). You can learn more about it on Wikipedia.
- Count vowels – Enter a string and count the number of vowels in it. To get more complicated, count the number of vowels per vowel.
- Palindrome – Determines whether the string entered by the user is palindrome. A palindrome is a word that has the same spelling, like “racecar”.
- Count the number of words in a string – Count the number of words in a string, or more complicated, read a string from a text and generate a count of words.
- Text editor – Notepad type application that can open, edit and save text documents. You can add word highlighting and other features.
- RSS Source creator – Can read text from other sources and publish it in RSS or Atom format.
- Real-time stock price – the current stock price can be queried. Users can set how often the data is refreshed, and the program uses green and red arrows to indicate stock price movements.
- Guest book/journal – allows people to add comments or journals, enable/disable comments, and record the time of each entry. You can also make a shout out.
- News and Score Announcer – a desktop application that gathers news and game scores from the Web and scrolls the results across the screen.
- Astrological compass – The use of astrology to predict the fate of the day.
- SMS – encrypts and decrypts data and sends it to friends.
- Pick your gift – Enter a bunch of gifts you might give, and when someone’s birthday comes, the app randomly selects one. You can also add an extra feature that tells you where to get the gift.
- HTML generator – Converts TEXT documents into HTML files, useful for making HTML documents for web pages.
- Cd-key generator – uses an algorithm to generate a unique Key. Software developers can use it as an activator for their software.
- Regular expression query tool – the user can enter a piece of text, in another control to enter a regular expression. The result is either a match or an error in the regular expression.
network
- FTP tool – Interacts files with remote network servers.
- Atomic clock timing – synchronizing atomic clock time from the Internet. There are so many atomic clocks around the world that you can list them all.
- Chat apps (IRC or MSN style) – chat apps like IRC or live chat apps like MSN. To get more complicated, you can set up your own transport protocol for chat.
- Get current weather – Get the current weather for an area.
- P2P file sharing apps – like LimeWire, FrostWire, Bearshare or Torrent style apps.
- Port scanner – Enter an IP address and port range, and the program tries each port in the range one by one, marking the port as open if the connection is successful.
- Mail check tool (POP3/IMAP) – Users enter some account information, including the server, IP address, and protocol type (POP3 or IMAP). The application checks the email addresses of this account periodically.
- Packet sniffer – detects packets coming in and out of a computer, obtaining information such as destination and size.
- IP address query – Enter an IP address to query where the IP address is registered.
- Whois query tool – Enter an IP or host address, query through Whois and return the result.
- Zip code query – Enter a zip code and return the name of the region that uses that zip code.
- Remote Login – Remote login desktop type application that allows you to view and control remote computers (if you have access to them). You may need your own network and two computers to test it.
- Site checker – Tries to connect to a site or server at regular intervals or at scheduled times to check if it is reachable, and notifies you by email or desktop notification if it is not.
- Small Web server – a simple version of a web server that can host HTML files containing Javascript and other forms of code. To get more complicated, try streaming video, creating a server-side language, or some other type of streaming media.
- Web spider – a program that automatically performs a variety of tasks on a web page, including web site inspection, page crawling, data summarization, and web mail.
class
- Product Inventory Management – Create an application to manage product inventory. Create a product class that contains price, ID, and inventory quantity. Then create an inventory class that records various products and calculates the total value of the inventory.
- Movie store – manages video rentals, keeping track of loan times, due dates, and late fees. A bit more complicated can generate account reports for overdue users.
- Airline/Hotel Reservation System – Create a reservation system for booking flights or hotels. Different airline seats and hotel rooms charge different rates. First class, for example, is more expensive than economy. A suite with a loft is more expensive. Record when a room is available for booking.
- Student Grade Manager – Records the students in a class (create a Student class and record their name, gpa, and test scores) and their grade level. Average scores and grade levels are calculated based on students’ scores on tests and assignments. A little bit more complicated is to plot the data on a Bell curve.
- Bank Account Manager – Create an abstract class called “Account” with three subclasses “CheckingAccount”, “SavingsAccount”, and “BusinessAccount”. Debit and credit to these accounts are managed through atM-like programs.
- Collection catalog – Create a book category that records titles, page numbers, ISBN numbers, and whether or not they are on loan. Use it to manage various books and allow users to check out and return them. More complex, you can generate a report on overdue books and overdue expenses. Users can also make reservations.
threading
- Download Progress bar – Create a progress bar that represents the download progress. The progress bar is operated by a separate thread that communicates with the main thread through a delegate.
- Download manager – Allows applications to download several files simultaneously, each with a separate thread for background download. The main thread monitors the download progress and notifies the user when the download is complete.
- Chat software (Remote Chat) – Make a chat software that allows you to connect directly to another computer via IP and also allows your “server” program to handle multiple requests for connections.
- Batch thumbnail generator – It takes a lot of time to do the image conversion process, especially if the image is large. Create an image processor that allows you to convert hundreds of images into one size in a background thread while doing other things. To get more complicated, you can use one thread to scale and another thread to rename the thumbnail.
The Web application
- Wysiwyg Editor – Create an online editor that allows users to move elements, create tables, write text, and set colors without having to understand HTML. It’s like Dreamweaver or FrontPage. For examples, see DIC.
- Paged Browser – Create a small paged web browser that can view several web pages at once. To simplify things, don’t worry about Javascript or other client-side code.
- File Downloader – this program can download various resources, including videos and other files from web pages. For web pages with many download links.
- Remote Login – Create a remote login application that can log in to the server over the network and execute some basic commands.
- Online Whiteboard – Create an online whiteboard application where you and your friends can use whiteboards, drawing, writing, etc.
- Bandwidth Monitor – This widget keeps track of how much data traffic you have uploaded and downloaded online. Try making a report or chart showing usage over time.
- Bookmark Collection Manager – this application allows users to upload bookmarks and sort them, remove duplicates, and generate bookmark files for Firefox/IE/Safari, etc. To get more complicated, try sorting your bookmarks into different folders.
- Password safe – Used to record passwords and encrypt them so no one can see them.
- IGoogle Media Player widget – Make an iGoogle widget that can be used to play local music lists or share a song every day. And maybe let people see what you’ve been listening to lately.
- Text-based Games — Be a text-based RPG like Utopia, where you can build a civilization, collect resources, co-forge alliances, cast spells, and have a turn-based system. See if we can unify the kingdom.
- Timed automatic Login – a program that logs in to a specific web page at a predetermined time and performs certain actions before logging out. It can be used to check mailboxes, post general content, and get information for other programs.
- E-card generator – allows users to make their own e-cards and send them to others. You can use Flash or not. You can use a photo gallery, or you can add a poignant aphorism.
- Content management systems – Content management systems like Joomala, Drupal, PHP Nuke, etc. Start simple and gradually add other features.
- Template Maker – This web application allows users to enter various color codes, elements, and sizes to create template files for PHPBB, Invision Board, MySpace, and the like.
- Captcha Generator – Have you seen captcha pictures with numbers and letters when you log in? This prevents auto-logins and spamming. Try making one yourself, and if you’re using PHP, look at GD’s picture function.
file
- Test Paper Generator – this program can randomly select different topics from the file to generate a test paper. Each test paper can be different and graded by reading the answers.
- Quick start – This tool can add small ICONS for each program, which can be clicked to run the program. Similar to Windows quick start.
- File manager – To be a file manager, add some new features, better search function, new ICONS, new look.
- File Record Sorting tool – Reads records from a file, sorts them, and writes them back to a file. Allows the user to select a sort style as well as a sort key.
- Generate financial transaction files and average – read financial transactions into files, classify them by account, calculate the total or average of items, and sort out the debit and credit data for each account.
- Zip file generator – The user enters files in different folders, perhaps on other computers, and the program packages them into Zip files. To get more complicated, compress these files when you package them.
- PDF Generator – Generates PDF files by reading data from TXT, HTML, or other files. It could be a web service where the user uploads a file and returns a PDF version.
- Batch File namers – programs batch some files and rename them according to user-supplied filters. JPG, myImage001.jpg, myImage145.jpg, or even myImage1987.jpg, since 1987 also satisfies the requirement of having at least three digits.
- MP3 tag generator – modify THE ID3V1 tag of MP3 files. You can also try adding id3V2 tags, such as album Art tags, to the header of MP3 files.
- Log file generator – this program logs specified events. Such as what the program is doing, what the system is doing, and when the file was changed.
- Excel page output – do an online program, can read the content of a file to generate an Excel page. This can be done through CVS or other file formats. Let’s see if we can create a formula field if it’s a little bit more complicated.
- RPG Character Attribute Generator – build a program to randomly assign attribute points to RPG characters, which can be assigned by the user. You can generate class, gender, strength/magic/agility points, extra abilities, or trade skills. Save the result in a file so the dungeon master can print it out while running.
- File Replication tool – This tool can batch file replication and backup operations.
The database
- SQL Query analyzer – this tool allows the user to enter a query command and run it in a local database. Try to make it run as efficiently as possible.
- Remote SQL Tool – this tool allows you to perform queries on remote servers over the network. It can receive remote host addresses, validate user names and passwords, perform queries, and return results.
- Card Collator – Creates an online application for recording collected cards. Users can enter entire sets of cards to see which are already available and which need to be collected. To add complexity, you can also let the user know how much is left to complete, or the value of the card that has been collected.
- Report Generator – This tool generates a report based on tables in a database. For example, generate sales reports from order forms.
- Database backup script maker – this program can read the objects, relationships, records, and steps of a database to generate an SQL file that can be imported into another database or used as a backup file.
- Memos – this program allows the user to set a date and time for an event, event notes and place them on a calendar. Users can view calendars and search for specific events. To be more complex, you can let the user set events that repeat, such as daily, weekly, monthly, yearly, and so on.
- Budget Logger – This program records the household budget. Users can add expenses, income and calculate income and expenditure over a period of time. To get more complicated, let the user specify a time period and display the household income and expenditure during that time.
- Phone book – records contacts and their numbers, email addresses, notes. A more sophisticated approach would allow users to connect to the Internet and post their phone books to a set site.
- TV Programme Recorder – Is there a TV show you don’t want to miss? But if you don’t have a VCR or want to be able to find the show later and record it, you can make a program to find various online TV navigation sites and record the show’s name, time and channel in a database. The database or website will then send you an email alerting you that the show is about to start on a certain channel.
- Travel Planning system – this system allows users to manage travel itineraries, keep track of flight and hotel arrangements, places of interest, budgets and schedules.
- Entity Diagram Generator – this program allows users to consolidate and save entity diagram, or to generate some basic SQL statements.
- Database translator (MySQL<->SQL Server) — This tool can read data from database A, generate SQL statements used by database B, and store data in database B. The most common is the MySQL Server used by SQL Server and Oracle.
- BBS forum – Create a forum for you and your friends to post, manage, share ideas and ideas.
Image and Multimedia
- Slideshows – Make a program that displays various images as slideshows. Additional effects can be made to increase the difficulty, such as progressive checkout, star erase, and window fading.
- Mind mapping – Allows users to write down ideas and quickly brainstorm them into a mind map. The faster the better, so let users quickly write down ideas and then drag them into visual maps to show the relationships between ideas.
- Import image and save as grayscale image – This tool divides the color of the image and saves it. You can add additional features like contrast adjustment, coloration, and so on to add complexity.
- Streaming Video online – Try making your own online streaming video player.
- MP3 Player (and other music players) – This little program plays your favorite music files. Let’s see if we can add a playlist and an equalizer if it’s more complicated.
- Batch Image Processing – this program can unify the images in a folder, such as lowering the image tone, changing the format, or changing the file properties. You can also try tagging images.
- CD Burner – a tool for easily burning CDS.
- YouTube Downloader – You can download videos from Youtube.com to your hard drive and support file formats including FLV and AVI.
- Wallpaper management tool – do a management of wallpaper procedures, you can regularly change and refresh wallpaper, can also be scaled for resolution.
- Screengrab – create a tool that can take screenshots, and add a function to forward emails if it is more complicated.
- Image Browser – this program can view images in various formats on your computer, such as PNG, GIF, JPG, BMP, TIFF, etc.
- Traffic lights – Try to make a traffic light and put it in an interactive setting. Don’t let the car run the red light or hit other cars.
- Mp3-wav Converter – MP3 format is essentially a compressed version of WAV. Try converting MP3 to WAV format for use by programs that can handle WAV format. Keep in mind that 1MB of MP3 is approximately equal to 10MB of WAV.
- Signature Generator – Ever seen a generated signature at the end of someone’s comments online? Try creating a program that lets the user customize a signature file by specifying a background, text, color, and alignment.
- Screensaver – a screensaver that runs when the computer is idle. The simple version can use some standard images, and the complex version can make 3D objects that rotate around the screen.
- Watermarking – Do you want to protect the copyright of your images? Add a logo or text to your images so that others can’t easily steal images from your site. Create a program to watermark your images.
- Turtle diagram – Create a 20 x 20 grid and use the command to have a turtle draw lines on the grid. You can go forward, turn left, turn right, pick up or put down a pen, and so on. To be more complex, allow an application to read a list of commands from a file. You can learn more about the turtle map online.
The game
- Ships — Create two game boards, one on each side, and place ships on them so that players can’t see each other’s boards. Each ship occupies several cells, and players take turns attacking a cell. If there is a ship on the cell, they hit the target, otherwise they miss. A ship is sunk when all squares it occupies are hit by an attack. The first to sink all the opposing ships wins.
- Chess and checkers – a game of chess or checkers. Try to make it playable on the Internet, with a graphical user interface to realize replaying, save moves and playback.
- Executioner – Select a word at random from the file and ask the player to guess the letters in the word. Next to it was a hidden picture of a hanging, partly revealed by a wrong guess. Players who fail to guess by the time all the drawings are displayed lose.
- Crossword puzzle – Create a crossword puzzle with a prompt for each word and ask the player to fill in all the correct words.
- Frog jump – Let the frog jump across a river or road, crossing on logs or lily pads that are moving at different speeds downstream, and crossing the road to avoid cars that are moving at different speeds.
Don’t forget there are lots of great ideas in the book. Order a copy now if you support it!
Thanks for reading!