When you get a few terms further into programming, you'll probably want to start applying your skills to something besides your latest assignment. Enter two things: personal projects and hackathons. It can be a bit daunting to get started, but luckily, Dhruv Agrawal (2nd year Compsci/Advanced Maths student) has put together a crash course on them both below!


Personal Projects

Getting started with personal projects

Ever wanted to make your own website, a game or something totally different? If you’ve never coded before, it can seem really daunting to start your own personal project. However, there are a few useful steps you can take to make it easier for yourself! A personal project can be anything and doesn’t have to require much code! You can find something that takes only a few days to do or, if you’re feeling ambitious, a project spanning months.

Trying out personal projects as a first year can be fun and help you learn so many new skills. Personal projects are very useful throughout your degree and it’s good to get started early so that you can learn how to brainstorm ideas, start the process of developing your own project and overcome challenges along the way. Doing a hackathon is also a good way to help learn these skills and we’ll be looking at hackathons in the 2nd half of this article.

How do I get started and what do I do if I’ve never coded before?

Here are some tips for the first few steps in getting started with a personal project:

  1. Find a project you want to start. Think about your interests and what you want to achieve at the end of your project. If you’ve never coded before, pick an idea that has lots of resources online to help. This could be as simple as starting off following a tutorial on YouTube and then adding on your own features afterwards.
  2. Research before you start working. Once you’ve decided what you want to make, outline the steps in order to make your project. If you’re making something straightforward then you might only need to watch one or two video tutorials and follow along with them.
  3. Get the basics down before moving onto complex features. Start coding the foundations of what you’re building and then once everything works properly start to add more functionality.

Ideas for simple projects to try out

  1. Creating your own VSCode theme is a simple but slightly tedious project. You’ll most likely be following a tutorial or Youtube video for most of it and searching up anything extra. This idea is great because it’s a relatively short project and it’s very easy to see what the code you’re writing actually changes!
  2. Making a personal website can be a fun experience and there are so many different ways to go about it.
    If you really don’t want to code, you can use something like Weebly or Wordpress to create a website. However, if you go one level lower you can make a website using Jekyll. This has all the conveniences of a website generator but also lets you tweak the underlying HTML and Javascript which makes it great if you don’t want to build an entire website from scratch.
    The last option for beginners is using HTML/CSS to design your webpages and then adding some Javascript afterwards! There is an abundance of tutorials for each of these options online and I’d recommend skimming through some before getting started.
  3. Contributing to an open source project gives you the opportunity to find a project you like and try to add your own code, fix a bug or write documentation. Open source projects are free to use projects with all their code available publicly online for anyone to see or use.
    You can help contribute to one of these projects online and, as with the above, there are lots of tutorials on how to do this. The benefits of contributing to open source is that you have so many projects you can choose from, you get to decide how simple or complicated your contribution is and you’re helping out free to use software with publicly available code.

Finding motivation to start and finish a project

The most important thing when starting a personal project is to find something to motivate yourself. That’s why it is important to choose a project that you want to do and find a team that you want to work with.

Break your project into manageable steps and don’t try to do everything at once! Before you think of any fancy features for your game or website, think about breaking up your project into only the basic features it needs to function. For example, to create a website you might first make a basic home page and host it on the web. The next step could be to add something like more pages. After that, some fancy transitions and a custom domain name. However, by breaking up the project into small manageable components, you can make it much easier to finish!

By adding one feature at a time, you can also change the direction you take your project. Throughout the development process, you can change your goals and keep thinking of new things to add that fit your changing interests. If you get bored of one thing, try working on another feature and come back to the original one later!


Hackathons

What is a hackathon?

Contrary to its name, a hackathon has nothing to do with hacking. It’s basically a short competition where your team tries to build something to solve a problem. This can be anything from creating a way for education to be more accessible to students, to creating a product that automates something tedious or repetitive.

Hackathons run anywhere from 24-72 hours and typically end with a showcase and presentation of your project.

Why should I do a hackathon?

Short time commitment

Hackathons are very short and don’t require more than a few days of time commitment. Because of this, you’ll be able to see the results of your work almost instantly and don’t have to wait weeks like you do for actual uni assignments.

No need for prior experience

Most of the hackathons at UNSW don’t require any past experience and are a great way to get started building personal projects of your own! Sometimes hackathons like the CSESoc Annual Hackathon even have prizes for first year teams so that there’s always a chance for you to win.

Improve coding and presentation skills

One of the biggest things I learnt from my hackathon experiences as a first year was how important the presentation is. It doesn’t matter how amazing your team’s code is, if you don’t have a stunning presentation then won’t be able to show off the true potential of your project.

Hackathons are really good for improving your presentation skills as you’ll have to answer questions about your solution on the spot and sell your idea to the judges. Although hackathons expect a working prototype of your idea, they don’t expect too much and it’s used more as a proof of concept rather than an absolute gauge of your performance. If you spend a long time on the presentation and make sure you address every question or concern they ask about, you’ll do really well!

At the same time, it’s really fun coming up with actual code to solve a problem and the process can teach a lot about how to code in short time frames and come up with an idea which could be used for a personal project later on.

General Advice

  • Learn a high level programming language. Although most introductory coding courses at UNSW are taught in C, it’s not feasible to code using that because it’ll take way too long to create code with any meaningful functionality. If you use something like Python, you can create a web server within a few lines, create an application with a GUI or use different Python libraries to do all sorts of things really easily!
    Once you know C, it’s not too hard to learn Python and you’ll be using it throughout COMP1531 anyways. So, learning it and applying your knowledge through a hackathon might be very useful for uni too.
  • Learn how to work outside the constraints of uni courses. Everything you learn at uni, at least from my experience of first year, is very different to coding in the real world. In uni assignments, you don’t have much flexibility with what you do and there’s a set of strict criteria that your code must meet. This isn’t true with hackathons because you have to design something unique to solve a problem in your own creative way. This gives you a lot of experience in the brainstorming process and teaches you how to start off small projects without the aid of detailed specifications and starter code.

If you ever want more information about personal projects and hackathons, you can find many good resources online. Additionally, make sure to hop onto the CSESoc Discord server where you can share your ideas with other compsci students and possibly find a team to work with!


You've completed this stage! Choose your next level below.

Or click here for a list of articles!