A final year Project

At the end of every university degree, there is always a project/dissertation that has to be completed.

 Whether you’re doing a BA or BSc, your thesis will involve writing about a specific topic and be a core part of your final year. For example, as a Computer Science student, my thesis required me to develop software that solved a real-world problem.

The problem

Every May, sports clubs and societies at the University of Surrey will elect a new committee. Before Covid-19, voting was done through a paper ballot, in which students wrote the name of the candidate they wanted. A representative from the Surrey Students Union would then count the votes and announce the winner.

This method wasn’t possible in light of the lockdown restrictions in the UK. As a result, the university resorted to using an insecure online voting system. Going into the security flaws of the university’s chosen voting system is beyond the scope of this blog. All you need to know is that the system they were using had a lot of vulnerabilities.

PS For those of you that are interested in reading more, you can download my thesis here.

Solution

My solution was to create a new secure E-Voting system to facilitate AGM elections at the University of Surrey. The security was guaranteed through a technology called Blockchain (more on that in a second).

Technology Stack

For the non-techies in the room, a technology stack refers to the technologies used to develop an application.

As shown in the diagram above, the three major components of my application were the user interface (UI), server and database.

Just to give you a quick rundown:

UI: A UI is the users first point of contact; it allows users to perform actions and interact with the system. For my project, I implemented the UI in React.

Server: A server is a communication channel that sits between the user interface and the database. My server was written in Node.js (something I had to learn).

Database: The Blockchain acted as the system’s database. It was implemented in Hyperledger Fabric.

Again, if you want to know more about the specific technologies I used, drop me a message or read my dissertation here.

 Why Blockchain?

Even the non-techies in the room might have heard of Blockchain. It is often associated with cryptocurrencies as it is the underlining technology that allows them to function. In other words there would be no cryptocurrencies without blockchain.

Despite Blockchain being heavily associated with cryptocurrencies, the technology has a breadth of use cases, including E-Voting. Indeed, I decided to use Blockchain because it allows for the secure and immutable (unchangeable) storage of data. A traditional database can be breached, and information can be altered without anyone knowing. So, using Blockchain for my E-Voting system meant that I could be sure that students’ votes could not be changed.

The Development Process

Developing an application from scratch is difficult, especially when you are the sole developer. You need to set your own priorities, effectively manage your time, all while learning new technologies on the go. I decided it was best to start with the UI. This played to my strength as I primarily worked with React during my placement year at JPMorgan. After completing most of the UI, it was time to set up the Node.js server. Although Node.js was new to me, I was able to pick it up quickly…. Thank God for YouTube and Medium.

The most challenging part of development was getting the Blockchain up and running. Luckily, IBM had released a tutorial for getting started with their Hyperledger Cloud blockchain. Finding this tutorial was a gift from God because I would have been totally clueless without it. Once all three of the major components were up and running, development work was a matter of making tweaks to pump in more features.

If you’re a techie, you’ve probably heard the term ‘an agile approach’. This approach to developing software sees a team of developers iteratively focus on a small number of features. These iterations are known as sprints and can range from a week to a month in length. To date, it is the most widely used methodology for developing software.

I decided to take an agile approach to development, opting for sprints that lasted 2 weeks. But in all honesty, within a week, the whole agile approach had gone out of the window. As a sole developer, having a small set of requirements that I had to work on felt limiting. Sometimes I would get a spontaneous idea to implement a new feature however, following the agile approach would mean I would have to wait until the next sprint. Don’t get it twisted; the agile mythology is a powerful tool when working in a team. However, as a solo developer, it is unnecessary and will slow you down.

Sole developers working on a project should look into Kanban (a management tool). I would also recommend the Big Bang software development model for anyone developing software for a thesis.

Demo

After a week of all-nighters and pizza, I had finally finished the E-Voting application. In total, I probably spent about 2/3 months on the application, and there is still a lot more that can be polished.

The video below is a quick demo of the application, the system is no longer live, but you can get access to all of the code via my GitHub.

Reflection

The project was a huge success; I was awarded 85% for my thesis (one of the highest scores in the year). Indeed, my thesis stands as a testament to what I can do when I set my mind to something. My advice to anyone that wants to become a good developer is: you have to get stuck into projects. Many programmers get trapped in tutorial hell, where they jump from one programming tutorial to another. However, what separates beginners from the intermediates is the number of projects they have completed. Undertaking this project definitely took me to the next level as a software developer.

Thank you for reading. As always, if you like this post, please share it with friends. Also, if there is anything you would like to discuss, my DMs are open.

Make sure you subscribe to my email list, so you don’t miss the next time I post.

Emailing list

Sign up to recieve emails whenever Tobi posts a new Blog

2 thoughts on “A final year Project”

    1. It was interesting reading through. Big kudos to you!
      You’ve also motivated and shown me the power and benefits of working on projects as a developer.

Comments are closed.