Personal Projects
Building larger personal projects is one of the most impactful ways to grow as a Computer Science student. Unlike the shorter assignments typical of 1000 and 2000-level courses, personal projects give you the freedom to dive deep into problem-solving, apply your skills across different programming languages, and learn by doing. They not only sharpen your technical abilities but also serve as a creative outlet to explore your interests. Plus, a strong project portfolio is a great addition to your resumé, as many employers in tech often look beyond grades to see what you’ve actually built.
How Can I Get Started?
You want to start a personal project, but you're stuck on the most important question: what should you build? You might also be wondering to yourself,
- "What would I actually enjoy making?"
- "What would look impressive on my resumé?"
- "What project fits my current skill level?"
Feeling overwhelmed at the start is completely normal, but the best way to get moving is to build something you’re genuinely excited about. Don’t worry about creating the next viral social media app. Instead, focus on a topic you care about or a small problem you’d like to solve in your daily life. That personal connection is key to staying motivated and seeing your project through to the end. Projects are a lot more fun (and far more likely to get finished) when you’re excited about what you’re building.
- Want an easier way to split expenses with friends? Build a Bill Splitter App.
- Not satisfied with existing to-do lists? Create your own.
- Want to make working on your computer more fun? Build a Digital Pet that lives in your terminal or desktop.
- Wish there were a better way to track what you’re watching? Build a TV Show Tracker using an API1 like TMDB or Trakt.
- Trying to stay on top of your finances? Make a Budget Tracker to categorise and visualise your spending.
If you're looking for more specific inspiration based on the programming languages you're learning or currently exploring, here are a few suggestions:
Language | Project | Description | Difficulty |
---|---|---|---|
Java | Type Speed Program | A typing test app that tracks how fast and accurately you type. | Easy |
Java | VPN | Create a basic Virtual Private Network with encryption and tunneling. | Hard |
Python | Alarm Clock | Simple, but gives you an introduction to using APIs and time-based tasks. | Easy |
Python | Flappy Bird | Recreate the classic game using Pygame. | Medium |
Python | Music Player | Build a media player that can play, pause, and skip audio files. | Hard |
C++ | Dating App | Simulate a basic dating app with profiles and a matching algorithm. | Hard |
JavaScript | Weather App | Displays current weather using a weather API and dynamic UI updates. | Easy |
HTML/CSS/JS | Personal Portfolio Website | Build a responsive website to showcase your projects, resumé, and contact. | Easy |
Note: For the projects labeled "Hard", consider working on them as a group. Additionally, don't restrict yourself to just coding in language for more complex projects.
- Collaborating with others not only makes complex projects more manageable, but also helps you build essential teamwork and communication skills. You’ll gain practical experience with tools like Git and GitHub, which are skills that are highly valuable in both academic and professional settings.
- One great way to get that experience is through the University of Manitoba Programming Practices Club (UMPPC). Once a semester, UMPPC organises collaborative group projects where members are split into teams, each tackling a unique programming challenge. At the end of the semester, teams present their projects, giving you a chance to showcase your work and learn from others.
Learning Resources
If you're still trying to find what kind of project to build or need guidance as you bring your ideas to life, there are tons of high-quality, free resources online. These platforms can help you build the skills you need and maximise the output from your projects.
CS Basics & Practice
- LeetCode
- Before getting started with larger projects, you can try working on smaller coding challenges to sharpen up your skills in a specific language or concept.
- Bonus: LeetCode is great for preparing you for job interviews.
- Before getting started with larger projects, you can try working on smaller coding challenges to sharpen up your skills in a specific language or concept.
- Codecademy
- Offers interactive courses in various languages like Python, Java, JavaScript, SQL, and more.
- Ideal for beginners and includes career paths and skill tracks.
- Mozilla Developer Network (MDN)
- A trusted resource for web standards and documentation on HTML, CSS, JavaScript, and more. Great for reference.
- SoloLearn
- Learn programming on the go with mobile-friendly lessons and mini challenges in Python, C++, Java, and more.
Web Development
- Frontend Mentor
- Practice front-end skills by building real-world projects from professionally designed challenges.
- Great for improving your HTML, CSS, and JavaScript through hands-on experience.
- freeCodeCamp
- A beginner-friendly platform that teaches web development through hands-on projects and certifications.
- Covers HTML, CSS, JavaScript, responsive design, accessibility, and more.
- The Odin Project
- A full-stack curriculum that walks you through the foundations of web development and modern JavaScript.
- Includes project-based learning with topics like Git, Express, and React.
- Fullstack Open
- Builds solid programming skills, basic web development knowledge, and familiarity with Git.
- Covers Redux, Node.js, MongoDB, GraphQL and TypeScript.
- W3Schools
- A beginner-friendly site with interactive tutorials and reference material.
- Useful for quick lookups and learning HTML, CSS, JavaScript, SQL, PHP, and more.
Game Development
- Unity Tutorials (YouTube)
- A huge collection of beginner-friendly tutorials to help you get started building 2D and 3D games in Unity.
- Godot Documentation
- The official documentation for the Godot Engine which includes tutorials, best practices, and scripting references.
- Brackeys Unity Series
- One of the most popular Unity tutorial series, ideal for beginners learning to build games with C# and Unity.
AI & Machine Learning
- Google ML Crash Course
- A practical introduction to machine learning with interactive lessons, real-world case studies, and exercises.
- Deep Learning Specialisation (Coursera)
- Taught by Andrew Ng, this course covers neural networks, deep learning, CNNs, sequence models, and more.
Cybersecurity
- pwn.college
- A gamified and educational platform that teaches users different cybersecurity topics. Some topics covered include Linux basics, web security and system security.
- TryHackMe
- Interactive cybersecurity training platform with hands-on labs and guided learning paths.
- MIT OpenCourseWare – Computer Systems Security
- A graduate-level course covering the principles of computer systems security, including threat models and security mechanisms.
Honorable Mention
- OSSU CS Curriculum
- A comprehensive computer science education built entirely from free online resources, structured to match the core curriculum of a typical undergraduate CS degree.
- Cybrary
- Offers free and paid courses on a wide range of cybersecurity, cloud, and IT topics, with learning paths for various career roles.
Footnotes
-
API stands for Application Programming Interface. It allows different software programs to communicate with each other. APIs are commonly used in personal projects to fetch or send data between your app and an external service (like weather, TV show databases, or payment systems). ↩