So you have begun your journey of learning to code and are looking for some great coding projects… that’s great! We are going to show you what we think are the top 10 coding projects that will change your life.
You may have picked up a book or two on the matter, watched a few – or a lot – of videos on YouTube, enrolled in a couple of coding courses… or you might even have a Computer Science Degree.
Regardless of the path you’ve chosen, one thing is for certain: coding is an art, and you need to develop your skills constantly in order to get better at your craft.
The best way to do so is to look for coding problems and projects that you can participate in, that make you think constantly and help you train your brain muscle.
FizzBuzz
This problem is relatively simple to state.
Write a program that prints out the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz” instead of the number. For numbers that are multiples of both three and five print “FizzBuzz”.
Here’s an example of its output, written in JavaScript:
This coding exercise is actually a regular interview question for programming jobs in the U.S., since most interviewees don’t have a deep understanding of logical thinking; thus providing an effective method for filtering quality candidates.
Caesar Cipher
Probably one of the oldest message security utilities ever, this is interesting because it will also teach you about cryptography.
This method is named after Julius Caesar, the Roman Emperor, since he used it in his private correspondence to hide the messages he wanted to communicate.
He did this by shifting (or rotating) each letter of the alphabet by, say, n letters. So, if n is equal to 3, the resulting message would be obtained by shifting 3 letters of the alphabet; like this:
Building your own website
Even if you just run it on your own computer, building a website of your own is actually pretty helpful for learning about how website designs can be implemented, HTML, cascading style sheets (CSS), system administration, etc.
Some of the more popular hosting and cloud providers are (in no particular order):
Whichever service you use, sooner or later, you’ll end up learning a thing or two about how databases work, and even about using JavaScript for programming for the web.
Implement your own Web Server
Want to know more about the software that serves your website and its content? How about implementing a web browser on your own?
Your website most likely runs on either the Apache or Nginx web server programs, so; what even better way to know how they work, than by implementing a similar solution yourself?
There are many languages you can choose to implement a web server, here’s just a few of them:
For reference, you may wish to take a look at the Request for Comments (RFC) for HTTP version 1.1 (RFC2616). Remember, this is for HTTP, not HTTPS. For HTTPS, you may wish to check out RFC2818.
Implement your own Chat/Messenger-type program
If you’re either old or lucky enough to have known MSN Messenger – I know, I’m old ;-) –, then you already know what this task is about. Here’s a short definition, just in case:
You need to implement the interface of a Messenger application. You will need to create a Client and a Server. You should be able to connect several Client instances to a Server, and allow them to establish a connection so that they can send messages to each other.
The server should be able to relay each message to its destination, with 2 or more Clients being able to message each other at the same time.
Once this is done, you might also want to connect a group of Servers so that users on Server A can maintain conversations with users of, say, servers B or C.
This project is understandably complex. However, it will give you a better understanding about how Client-Server interactions work. Plus, it will teach you about concurrency by using Threads.
Here’s a few examples for you to understand more about this project.
Creating a simple chat client/server solution
Java Socket Programming Examples
A Java Chat Application – CodeProject
Implement your own Blog System
Ever heard of WordPress? Thought so…
Now, this isn’t meant to be as complicated as implementing all WordPress features – but it could be ;-) –, but it is intended to teach you a bit about converting files from one format to another.
You’ll simply need to implement a blogging system that allows you to create blog entries using text files, which would then need to be converted into HTML files. These could be indexed in a landing page that would have links to, say, the 10 most recent posts; or all of them.
There’s no need to implement a database for them, since this is simply meant to teach you about data conversion and formatting.
To give you an idea of a working blog system, you can take a look at Luke Smith’s blog, and also to his lb repository on GitHub.
Build a Web App
Continuing from the Blog System, you could get into more complex web applications.
Here are some ideas for you:
- An e-commerce app
- A restaurant reservation/review site
- A social network for people with a specific interest (say, japanese anime, vintage photography, etc.)
- A video content delivery/streaming platform – create the next YouTube! Yeah, I know. Wishful thinking… :-P
- And many others
The neat thing about this is that these kinds of projects can, if you play your cards right, even become a revenue stream for you; as long as you’re willing to dedicate enough time and effort to what you decide to go with.
Want more ideas? Check out this link for more.
Build a Video Game
The possibilities are endless with this kind of project; you could:
- Create a Chess game
- Create a Space Invaders clone
- Create a Super Mario Bros. clone
- Create a Mortal Kombat/Street Fighter clone
- Etc.
Quick tip: no matter what language you decide to go with, make sure you investigate any libraries and Application Programming Interfaces (APIs) that could be useful for displaying game objects on screen. OpenGL would be a great example of such libraries.
You could also design it to run on a web browser; that way, you could enhance your JavaScript and web app skill set.
Nachos
In case you’re really up for a challenge, you could choose to work on completing the Not Another Completely Heuristic Operating System project (a.k.a. Nachos), a project that was created to Computer Science students about the inner workings of operating systems.
Nachos was created by Thomas Anderson at UC Berkeley, using the C programming language. However, due to portability limitations – it was meant for the x86 architecture –; a newer Java version of the project was developed in order to be able to run the project on other architectures.
Linux Kernel Development
Ok, so Nachos may not be your thing… or you may have already completed it and are now looking for the next challenge: something you may actually use in real life.
How about getting into development for the Linux Kernel? After all, the Linux Kernel powers servers all over the Web, network infrastructure, even the Stock Exchange has been running on Linux for at least a decade.
If you know your way around C, you can download the Linux source code and look to find if there’s anything you wish to work on.
Willing to give these projects a try? Have you converted any of them into your new company? Let us know in the comments below. Have fun!