IN THIS ARTICLE
- What Is a Software Engineering Project?
- What Are the Benefits of Building a Software Engineering Project?
- Software Engineering Project Ideas
- What Are Some Tips To Create Interesting Software Engineering...
- Presenting and Promoting Your Software Engineering Projects
- Software Engineering Projects FAQs
Get expert insights straight to your inbox.
If you’re looking to launch a career in software engineering, but want to forgo the path of getting a traditional college degree, then it’s imperative that you have a solid portfolio of software engineering projects that you can show to recruiters. Whether you’re self-taught or doing a bootcamp, a software engineering portfolio evinces your skills and will help distinguish you from other candidates.
How do you know which projects to add to your portfolio? With this guide, of course. Below, we’ll tell you all about 21 software engineering projects that you can do on your own.
What Is a Software Engineering Project?
A software engineering project is a basic application that you can build and add to your portfolio. That means that your app won’t necessarily be used in the real world, but the point is for you to test out your own engineering skills and get a taste of what deploying software in the real world is like.
What Are the Benefits of Building a Software Engineering Project?
Here are some of the benefits of building a software engineering project.
There’s only so much you can learn about software engineering from books and courses. Ultimately, you need to build your own software and see if you can do the thing for yourself. Along the way, you will figure out how projects are deployed and gain some invaluable hands-on experience.
Early on in your career, if you don’t have much experience to show, you can evince your skillset by showing a portfolio full of software engineering projects to a recruiter. Each project that you work on is an item that you can add to your portfolio and evidence of your practical engineering chops.
Each project you tackle should force you to learn new things, whether that’s a new programming language or algorithm type. Working on projects is a great way to expand your skill set in an organic way.
Software Engineering Project Ideas
Here’s a list of software engineering project topics that you can use as inspiration. For each project, we’ve described the basic elements of the implementation, but feel free to add your own twist to each.
We’ve all had to create passwords for different websites. And we all know that it can be hard to come up with strong passwords sometimes. That’s the problem you’re going to solve with your password generator.
This app is going to allow users to easily generate strong passwords. To add some complexity to your app, you can allow users to choose the password length and if they want specific inclusions, such as special characters or numbers. You can see an example of a password generator here.
Hangman is a simple game in which players try to guess the letters in a word within a certain number of tries. If they aren’t able to do that, the hangman character wins.
Hangman is quite straightforward from a programming perspective. To create a very basic hangman app, you can receive textual input from a user and output text input about whether the letter they’ve entered is in the word. You can give them a certain number of tries to achieve that.
You can take this software project up a notch by animating the hangman and enhancing the user interface of the game. An example of a web-based application for Hangman is available here.
Building a basic online shopping website can teach you a lot about combining front-end and back-end development skills. Since this is only a software engineering project, build your website so it offers the most basic e-commerce functions. That means that it would allow users to browse products, add specific ones to a cart, and then check out using a payment gateway.
A text editor is an application that allows you to type out and format text on a digital device, such as Microsoft Word or Google Docs.
You don’t need to get too fancy with the features that you build for your text editor. It can be as simple as an app where users can type out text, do basic formatting (add headings, change font sizes, etc.), and then save the document.
An e-learning platform is quite similar to an e-commerce website in that it allows users to peruse a list of products and then purchase the one they want. Those are things that follow a straightforward e-commerce mechanism.
You can bring in the e-learning element in your app by creating features that would specifically help learners when they’re watching a specific video or reading some material. You could do that by creating a space in the app where they can take notes or a community feature to interact with other learners who are taking the same class as them.
To-Do List Application
A to-do list is somewhat like a text editor, but it needs to do more than just text input and formatting. You can try out some of the popular to-do list apps out there as part of your research and make calls about things like added functionality and UI.
Customer Support Chatbot
Not every chatbot needs to run on artificial intelligence—you can build a chatbot that’s a lot simpler than that. Think about what a chatbot does. It lets a user detail a specific pain point, and then it produces output that can help them solve that problem.
Now let’s say you’re building a chatbot to help users of an e-commerce website. You can assume that some of the most common issues that users face on an e-commerce website include difficulty adding a specific problem to the cart, payment issues, and problems adding a review for a product.
You can build your chatbot so that each of these problems is represented by a separate button in your bot. When a user clicks a specific button, it will produce a text output containing the solution associated with that problem.
You can take this software engineering project a step further by including a search feature. You could use some fuzzy logic to determine whether a search term is associated with a specific kind of problem and generate results in that manner.
Time Tracking App
Time trackers are quite simple to build in programming languages like Python. DateTime libraries can be used to easily track elapsed time. From there on in, it’s just a matter of building a simple GUI where users can start and stop the timer.
Online Reservation/Booking System for a Hotel
A booking system is the kind of application that will test your ability to build a robust backend system that connects to a user interface that works in a consistent manner. You can use something similar to an e-commerce website for this software engineering project. In this case, you’re not selling products but days on which customers can book a hotel room.
A simple implementation would be a website where users can view a calendar and see days when a hotel is booked and days when it’s available. On clicking on an available day, they should be given the option of making a booking and completing their payment. You can see an example of what such an app would look like on a mobile interface here.
Facial Recognition Attendance System
Facial recognition systems need to have a few elements. First, you need to have a folder of “known faces,” which are the faces that the system needs to give authorization to. Any other face needs to be denied access.
You then need to build a simple image recognition system that takes an image stream as input and compares it against the database of known faces. You can read more about how you can build such a system here.
Food Delivery App
A food delivery application will test your ability to work with various APIs that will simplify the process of locating restaurants and tracking the movement of couriers.
There are three aspects to a food delivery app that you need to build out individually. First, you need to create the part of the app where restaurants can sign up and input their business information. This essentially involves building a content management system so that restaurants have a page where they can input their menus, prices, photos, etc.
Then there’s the client of the app. This is where users can log in, see a list of restaurants, and place an order. Customers should also be able to raise complaints on this side of the application.
Finally, we have the courier side of the app. This is where the couriers will be able to view order information and get directions to the restaurants and then to the customer’s address. You can rely on APIs like the Google Maps Places API and MapBox API for the location-based features of your app.
Credit Card Fraud Detection
This is a software engineering project where you can put your machine learning skills to use, and you can use this Kaggle dataset as the training data for your machine learning model. The idea is to use the information available in the dataset to identify suspicious activity in ATM card transactions.
Most of the software development that you do for this project will involve training your machine learning algorithm and conducting feature selection. You don’t need to worry about a user interface component since this kind of application doesn’t require that.
Personalized Recommendation System
Recommendation systems are a pretty standard software development project to pick if you’re working on your data science skills. The idea is to give users recommendations of items they’re likely to want to consume based on their history.
These kinds of applications use a technique called collaborative filtering to group users and gauge their interests. You can read an in-depth article on how you can build a recommendation system here.
Android Language Translator App
Language translation is an important feature for various kinds of applications, including your run-of-the-mill Internet browser. If you’re looking to build such a feature for your app or as part of a software engineering project, you’re in luck. There are various APIs that you can use to simplify the process.
The Translation API by Google and Microsoft Text Translation API are just a couple of examples of APIs that you can use for such an app. Once you have the necessary API connections made, it’s just a matter of building the user interface, which is quite simple. You just need to create a text box where users can input some text and then see the output in a chosen language.
Social Media Sentiment Analysis Tool
Sentiment analysis is an important capability to have for businesses. Being able to gauge customer sentiment is an essential way to find out what they think about your products and what kind of issues they run into regularly when using those products.
Building a sentiment analysis tool is quite simple if you know your way around Python. Libraries like TensorFlow allow you to easily train the model. You can read more about how to build a sentiment analysis tool here.
Real Estate Marketplace
A real estate marketplace is an example of a two-sided marketplace. As a software developer, you need to take both sides into account when building an application.
The seller side of this app is essentially a CMS. It needs to allow sellers to list their properties along with information like the selling price, photos, etc. The buyer’s side software module is a website where buyers can browse properties and then contact a seller if they’re interested in a specific one.
Blockchain-Based Voting System
A blockchain is a ledger where a record of transactions is maintained in an immutable manner. Given these characteristics, blockchains lend themselves to software built for elections.
You can read about how to build your public blockchains here. Once the basic blockchain is created, you need to modify it so that it can record and count votes. This will involve creating a user interface where voters can see a list of candidates and cast a vote for one. The blockchain needs to record this vote in an immutable manner and keep track of the number of votes for each candidate.
Employee Training Gamified App
The software development approach for any gamified app is the same. You need to set ways for users to reach specific milestones and then create rewards that they’re given each time they achieve a milestone.
Your app will need to have resources that employees can read or watch learning content to get trained in a specific discipline. You also need to have a software module where employees can be tested at each stage to determine whether they’ve picked up the requisite skill.
Finally, you need to create rewards so that gamified elements are integrated into the application. These are usually badges or digital assets that are given to users once they’ve completed a training module.
Real-Time Traffic Monitoring System
A real-time traffic monitor system is a piece of software that receives a live video stream from sources like CCTVs and produces data on traffic at any given time. Such software has various uses, including automating traffic lights and generating data from public institutions to use.
Since you’re building this as a software development project, you can use a YouTube video of traffic instead of a live data source like a CCTV camera. The main software engineering implementation involves building a convolutional neural network that can classify different vehicle types and annotate images obtained from a live stream. You can read more about how to build such a system here.
Meal Planning App
A meal planning app is a piece of software where users can get personalized meal plan recommendations based on their dietary preferences. Believe it or not, there are now APIs that allow you to source data for such applications. The Edamams Meal Planner API is one such example.
The front-end software engineering that you do for such an app will involve creating an interface where users can choose the number of meals they want to plan for per day, their dietary preferences, and calorie limits. You will need to do some backend software development to channel data from the API to your application in a user-friendly manner.
Predictive Maintenance System
Predictive maintenance is a software-based approach to conducting maintenance on industrial and manufacturing equipment. It involves obtaining data from various sensors and using them to gauge the structural status of a piece of equipment. The software is trained so that it can alert users when maintenance needs to be conducted.
You can use data obtained from temperature sensors and humidity sensors for your training dataset, then conduct a time-series analysis in Python to track the evolution of those data points and connect them to structural markers of the equipment. You can check out an in-depth article on how to do this software development for this project here.
Get To Know Other Software Engineering Students
What Are Some Tips To Create Interesting Software Engineering Projects?
Not all software engineering projects are equally compelling. Let’s take a look at a few things you can do to elevate the projects that you build and stand out from run-of-the-mill work.
Experienced software engineers will tell you that you need to articulate complete project details before getting down to the actual work. That means that you define the scope of the project, write a spec, and choose the languages and frameworks that you use based on that. Planning your projects will ensure that you don’t overlook any key elements and have a clear idea of what you’re going to produce before you start off.
Focus on the User
If you’re just working on software engineering projects for your portfolio, not many people (besides recruiters) are going to actually use the apps you create. However, it still helps to imagine a user persona when you’re building any app. By doing so, you will create a product that doesn’t just show off your technical skills but also excels from a usability perspective.
If you’re just starting out as a software engineer, then you should always build the most basic version of the app that you have in mind. That means that you use APIs as much as possible and keep the feature list as minimal as possible. As your skills evolve, you should revisit your projects and add more advanced features over time. This serves both as practice and helps you have more impressive projects to put on your portfolio.
Document Your Work
Software engineers will tell you that documentation is an oft-overlooked part of the job. It’s something that every software engineer needs to do so that they can easily figure out their work if they revisit it in the future. It also makes it simple for collaborators to contribute code if they need to or build the same app for other operating systems. Always write clear documentation of all your projects and include details on the tech stack and programming approaches you’ve used.
Presenting and Promoting Your Software Engineering Projects
You don’t just build your software engineering projects. There will also be times when you need to present them to professors or recruiters. Here are some tips to help with that.
What’s the Best Way To Present Your Software Engineering Projects?
An online portfolio is the best way to collate your software engineering projects. You can put this on your personal website or in a concise manner on your resume. Always make sure to mention each project separately and include specific details on the technical skills that you used to create each one of them. We’ve put together a detailed guide on how to create a great portfolio here.
How Can You Promote Your Software Engineering Projects?
It’s important that you get the word out about your projects or at least just document their existence. Here are a few ways you can do that.
A Github profile is a must-have if you want to make your software engineering projects easily accessible with the source code.
LinkedIn now has a projects section. You can add details on each of your projects here and include a link to their page on your website. Adding these projects is a good way to round out your LinkedIn profile.
As we said earlier, a portfolio is a great way to spotlight your projects. You should build a personal website where you have individual pages for each of your software engineering projects. This is the most professional way to display your work.
For some extra credit, you can take the time to write a Medium article to go with each of your projects. These articles are an opportunity to articulate in detail your programming process and some of the challenges you solved over the course of the project. An added benefit is that other programmers can access your work and get help if they’re working on something similar.
Software Engineering Projects FAQs
We’ve got the answers to your most frequently asked questions.
How Do I Choose a Software Engineering Project?
You should choose software engineering projects based on your skill level and the kind of job that you’re looking to land. For example, if your dream job is in machine learning, then you would choose projects that involve that technology.
How Long Do Software Engineering Projects Take To Complete?
A simple software project takes only a few days to complete. But the more advanced ones can take a month or more sometimes.
What Does a Successful Software Engineering Project Include?
The outcome of a successful software engineering project is a usable software application. Along with that, you should also have its documentation and add the project to your portfolio.
Should I Put Software Engineering Projects on My Resume?
Yes, you can put your software engineering projects on your resume if you’re applying to an entry-level role, but make sure to mention only the projects that are relevant to the job that you’re applying to.
Since you’re here…
Interested in a career in software engineering? Join our mentor-led Software Engineering Bootcamp or our foundational Software Engineering Course if you’re just starting out. We help people make the switch every day (just peep our reviews). You can do it, too!