The Student Room Group
Remember that the most important part of the project is the report. Whatever you decide to build will be fine as long as you're building something where you are able to write code that is is sufficiently complex for an A-Level project.

But it's much better to start with something which is far too simple and add complexity on top of that, as the saying goes, "any intelligent fool can make things bigger and more complex" -- this is generally true with programming as long as you're not using some super-easy tool which already does everything for you. For example, WordPress is usually a bad idea because WordPress has.nearly everything done for you already and there's not much room to write any new complicated bits of code yourself.

A few possible ideas:
- A business management system for a company (e.g. customers, sales, products, inventory, purchases, suppliers, shipments, etc.)
- Some kind of instant messenger or social media app (Consider taking ideas from facebook, whatsapp, instagram, etc.)
- An educational app - e.g. quiz/revision tool, student timetable app.
- Complex mathematical or scientific simulation (e.g. Dijkstra's pathfinding algorithm)
- A game (e.g. Battleships, Space Invaders)



If you start with something simple, you can always add more features later to build complexity. Some ideas:
- Add a user login/identity/authentication capability -- e.g. password strength, user registration, password reset, automatic lockout, etc.
- User role-based authorisation and permissions for different parts of the app/system -- e.g.. Manager/Employee/Admin or Student/Teacher/Admin.
- Create a hand-rolled data in-memory structure such as a linked-list, binary tree, hashmap, etc
- Create hand-rolled algorithms for some common operations such as sort/search. hashing or encryption.
- Persist your app's data in a SQL database using a non-trivial relational schema in 3NF and look at some non-trivial queries involving Join/Group-by/etc.
- Build your app around some common "OO" design patterns such as creating a GUI with the "Model-View-Controller" pattern, or use the 'Repository Pattern' for code that connects to a SQL database.
- Ability to upload/import information into a system from a CSV file
- Ability to download/export information from a system into a CSV file
- Visualising reports and charts based on data from a database.
- Connect to a web API such as The Movie DB API or Twitter API.
- Split the app between a 'user facing' UI app and a 'back end' server app (e.g. a back-end web server which serves data using HTTP and JSON from some well-known web framework like Flask in Python or ASP.NET in VB/C#, etc)

Also remember that nearly all of the main languages that people would normally use for the A-Level project have all kinds of libraries for helping with things like Desktop GUIs, databases and web services, so you should be able to get some of these things working fairly quickly using tutorials and examples from the internet.

Don't forget how hugely important your report is - most of your marks come from that; pay very close attention to the markscheme and spend your time wisely. Don't waste loads of time doing something which earns you 0 marks. Use the mark scheme to remain focused, don't fall into the trap burning dozens of hours creating something that will not earn you any extra marks.

It's a good idea to start off with this before you jump into writing code (you really need to know what it is that you're building before you can write any code). The level of detail that you include in your objectives and success criteria in particular are going to be key to how the rest of your report pans out. Make sure that your report contains plenty of information that describes all the features of the app including things like what it's intended to do, how different users will interact with it, inputs, outputs, expected behaviours, etc. In many ways it's a good idea to have a decent outline all the different functional tests that you want to be able to perform; Once you know how you are going to verify that your app is working properly, then you can write the code to make it pass those tests. Don't forget things like error handling, user validation, and checking for edge cases.

Also remember things like UI mockups and detailed descriptions of ways that a user might test the app to verify that it's working will help you a lot in knowing what the code is supposed to do. Generally speaking, it's very difficult to write any code until you've already thought very carefully about what that code is going to do and how everything is going to fit together from a user's point of view. E.g. what happens when they press a button on a screen? how do they navigate the app? what data do they need to input? what data will they see? what will be shown on the screen? etc.

On the subject of writing code, it's good to create "throwaway" prototypes for trying out different stuff -- e.g. maybe a load of little prototype console apps to figure out how to write an algorithm, or how to use a GUI framework, or how to build a web service that serves some JSON, or how to get some data in/out of a SQL database from your program. Those are all really good things to do early on and help you understand the technical side of the problem, especially if you are going to be using any tools or libraries that you're not comfortable with yet.
Reply 2
When I started my NEA, my teacher suggested to the class to make a project based off of our other other A-Level courses, as other Level-3 topics would be likely to be sufficiently complex. I had a friend who made a program that balances chemical equations, and a friend that created an integration calculator.
I personally made a program which harmonised music by the conventions of 4-part Bach Chorale. This was quite good, as I could split the project into clear input-process-output stages: each with their own challenges. This included things like adding stacks for the input stage, so users could undo notes they input, writing to text files, and being able to read the files, as well as converting them between midi and diatonic notes, and creating a heuristic algorithm for the harmonisation, creating a good solution in a relatively short amount of time. It also helped that since Bach harmony is based on very strict rules, I could make different subroutines that apply and check for each rule, and also use said rules as a means of testing the program. It also really helped my Music studies, as writing all the rules out for the project really consolidated the subject in my head.

My teacher seemed pretty pleased at the final program, but I will find out whether it will pay off in a couple of days. Predicted an A*, so fingers crossed!
Reply 3
Original post by znedd1
When I started my NEA, my teacher suggested to the class to make a project based off of our other other A-Level courses, as other Level-3 topics would be likely to be sufficiently complex. I had a friend who made a program that balances chemical equations, and a friend that created an integration calculator.
I personally made a program which harmonised music by the conventions of 4-part Bach Chorale. This was quite good, as I could split the project into clear input-process-output stages: each with their own challenges. This included things like adding stacks for the input stage, so users could undo notes they input, writing to text files, and being able to read the files, as well as converting them between midi and diatonic notes, and creating a heuristic algorithm for the harmonisation, creating a good solution in a relatively short amount of time. It also helped that since Bach harmony is based on very strict rules, I could make different subroutines that apply and check for each rule, and also use said rules as a means of testing the program. It also really helped my Music studies, as writing all the rules out for the project really consolidated the subject in my head.

My teacher seemed pretty pleased at the final program, but I will find out whether it will pay off in a couple of days. Predicted an A*, so fingers crossed!

Hi, I wanted to ask how did your project do and what grade did you get?
Original post by znedd1
When I started my NEA, my teacher suggested to the class to make a project based off of our other other A-Level courses, as other Level-3 topics would be likely to be sufficiently complex. I had a friend who made a program that balances chemical equations, and a friend that created an integration calculator.
I personally made a program which harmonised music by the conventions of 4-part Bach Chorale. This was quite good, as I could split the project into clear input-process-output stages: each with their own challenges. This included things like adding stacks for the input stage, so users could undo notes they input, writing to text files, and being able to read the files, as well as converting them between midi and diatonic notes, and creating a heuristic algorithm for the harmonisation, creating a good solution in a relatively short amount of time. It also helped that since Bach harmony is based on very strict rules, I could make different subroutines that apply and check for each rule, and also use said rules as a means of testing the program. It also really helped my Music studies, as writing all the rules out for the project really consolidated the subject in my head.

My teacher seemed pretty pleased at the final program, but I will find out whether it will pay off in a couple of days. Predicted an A*, so fingers crossed!

Hi, how did your project go? Also, how did the project of your friend who did the integration based project go? Thank you.
(edited 3 years ago)
Reply 5
Original post by Faith_24
Hi, how did your project go? Also, how did the project of your friend who did the integration based project go? Thank you.

ouch