How to complete your A-Level coursework and enhance your CV at the same time
I've just obtained an A grade in the coursework component of my Computing A-Level writing it in Java, a language I'd never programmed in before. Initially I was hesitant about taking this approach to my coursework, but with the right support and attitude to the project, it can really pay off.
BackgroundI first started learning to code in year 9 using Python 2 on my Raspberry Pi. Towards the end of year 12 I'd spent about 3 years programming in an exclusively procedural style in Python (with a bit of HTML/CSS on the side). This meant when I had to start thinking about my NEA project, I'd only been exposed to a single programming paradigm in one language and had very few interesting options in terms of project ideas.
As I have an Android phone and am interested in programming, I'd thought about learning to write apps for it before. The NEA turned out to be the perfect opportunity to learn a few things involved with doing this:
- OOP in Java
- How to use Android Studio
- Some basic PHP*
- Git and Github**
**This one is non-essential, however I found using Git and Github really useful for driving the project forward.
Whether you like it or not you need to know how to write programs in an Object-orientated style for the A-Level Paper 1 exam. You might as well use the project to improve your understanding of OOP, preferably in a different programming language to the one your taking your exam in. The reason I advise doing your project in a different language if at all possible is that if forces you to think in terms of the theoretical principles of OOP rather than just how it specifically applies to a single programming language. This is incredibly useful when it comes to the theoretical side of the programming exam.
In my case I was able to benefit from the knowledge of OOP I gained whilst writing my project in Java, using it to help me in the Paper 1 OOP exam I took in Python.
The problemI'm a member of the GPEW (Green Party of England and Wales) and during my time as a member I've witnessed the extensive use of paper canvassing sheets and spreadsheets to record conversations with voters. The Green Party currently recommends either this approach or the use of a proprietary non-free canvassing system which can cost local parties hundreds of pounds per year. I wanted to be able to record data from canvassing sessions via a mobile device without a) having to cumbersomely open up a spreadsheet and b) having to pay large sums of money for software that might not fit our requirements very well. This would automate the process of storing the data digitally in a user-friendly and secure way, saving volunteers valuable time.
A solution as an Android appAlthough the software I developed for my coursework is by no means feature complete (lets call it early Alpha) and will need more work if I'm to use it to canvass real voters, I was able to create an Android application which in principle could be used to canvass voters in a FPTP election. More importantly, I learned a lot about developing Android applications allowing me to take the project forward in the future or build other applications in Android.
The detailThe purpose of the application is to record data given by the voter to the canvasser in answer to a set of predefined questions asked on the doorstep. This makes the basic functionality relatively simple:
- Create a GUI form that allows the user to enter and submit this data.
- Once the user submits data entered into the GUI form, build and send an HTTP request on another thread to the server.
- On the server, process the data sent via the HTTP request using PHP and store it in an SQL database table.
- Auto-locating the user to remove the need for them to manually type the address they're currently canvassing.
- If permissions necessary to use a particular feature if the app aren't currently granted, automatically prompt the user to grant these permissions.
- Search previously entered data by any question asked.
What can you take from this?
Learn a new OOP programming language for your projectC, C++, Java and Python are good ideas. Do however make sure that you have a good project idea before deciding what to build it with. You might also be able to get some inspiration for what languages and tools to use in your NEA from by blog post on the Google technical development guide for students.
Learn Git and GithubThis isn't essential for success at the NEA, in fact nothing in this article is (there's even multiple version control systems out there!), but I found Git and Github to be useful as a way of coping with the large number of programming tasks I had to complete to make the project a success. This isn't the time for an in depth tutorial, so I won't explain Git and Github here (not even sure I could if I tried!), but if your familiar with the tools you'll know what I mean by a commit. I used commits to split up programming tasks into smaller, more manageable segments. I would write a method for example, test it and commit it. Then take a break. This stopped me from being overwhelmed by masses of code and allowed me to focus on one section at a time.
Make sure you have supportA final bit of advice: I would not recommend this approach if you don't have access to a teacher at your school who has at least some experience in the programming language or tool you've decided to use. Even though I wrote the code for my project independently with the help of online resources, I had the support of a highly experienced teacher of Java programming. I found their support invaluable during the process as I'd be able to ask them about why my app was crashing or why my PHP script was not working as expected. They were often able to point out where my code was going wrong or even just direct me to a resource that would help.
If your going to complete your project using a language or tool that you have no prior experience in then this support is a must.
The bottom lineThe NEA can be a daunting prospect when you first start, but it can also be a great opportunity. You can really boost your CV and your technical skill set if you take the opportunity and run with it. Good luck!
Note: I've written this piece with a particular focus on AQA A-Level CS purely because this is the exam board that I actually sat the exams for. However, most of the advice given should apply if your with another exam board doing a CS course with a coursework component and a practical programming exam.