# A-level Computing/AQA/The Computing Practical Project/Picking a project

So now it's time to start thinking about what sort of project you are going to make. This is an important decision as this will drive the rest of this coursework.
Projects that I've marked in the past have included:
* Cricket Player Management System based on a database that keeps track of matches and player scores
* Database of children at a day care centre that deals with the billing for parents
* A computer room booking database that allowed teachers to book rooms for different days and see other teacher's timetables graphically
* A stock control database for a hardware shop that handles re-orders and sales
* A web-based maths revision site that allowed for random papers to be created then automatically marked
* An A-Level Maths revision maze game
* A French revision side-scrolling adventure
* Physics projectile modelling tool
* A snake game where it asked you to eat the correct answers to maths questions
* A helicopter flying game that asked you economics questions to get extra fuel
* A computing revision program wrapped around a tetris clone
* A chess game that enforces all the rules of the game and recognises when it's check mate
* Phone based revision game for mathematics
You have probably noticed that there is a lot of talk about databases and data manipulation. An easy way to tackle this project is to build a data processing system, i.e. a stock control system or a revision game, with a database in the back-end to store data. This is a strong sort of project and a way to getting top marks. However, you don't have to do something like this. If your code is complex enough then you don't have to store any data and the parts of the write up that talk about databases, you can skip. You might not be encouraged to make games, but if it is a game with a database or revision system behind it, or showing clever simulations of A-Level standard mathematics then you need to talk to your Computing teacher.

## What is Data Processing

Every system you make must involve data processing. This means taking data and adding, updating, deleting, interpreting and displaying it. This is very easy with a database, but you must get beyond the defaults of add, edit, delete, that something like Access gives you. Think about using complex queries and fancy ways to present your results. It could also be an XML file storing seating plans or student records, editing/deleting/adding questions to a revision game and recording the scores of different users. Whatever you do you must have data processing at the heart of it.
Using a form of SQL (e.g MySQL) or similar (e.g MariaDB) is a good choice over Access because it easily integrates with a lot of programming languages. Also SQL is on the COMP3 syllabus so you will need basic SQL knowledge anyway.

## How to pick a Complex problem

To get top marks the system has to be complex but what does that mean? There are a few things that you need to do and a few more things you need to do to stand a chance to get top marks. AQA's marks scheme says, to get in the top band for complexity, you need at least one of the following:
* Non trivial algorithms, e.g Graph traversal or recursion.
* Use of sophisticated features of your chosen programming language, e.g runtime created objects, sophisticated data structures, user defined classes
* Time-based simulation
* Use of network protocols (e.g TCP/IP)
* Development for mobile devices
* Complexity in the non-computing side of the problem (e.g using complex maths, if it's something in your A-level maths its complex enough)
* Image processing or pattern recognition (e.g using regex Note: regex is in the COMP3 syllabus, so you'll be learning it anyway).
If you can use more than one of these, you'll guarantee yourself these marks. Also having more will give you more to write about in your later sections. However, don't be too ambitious because you don't want to spend all your time on the coding or not finish the program.
If you're using a database it can be harder to tell if your project is going to be complex. AQA has a document on this, but in short your database will need to be fully normalised and high volumes of data will get you more marks. If you can, try to implement one of the points above and you will get the marks.
* Warning!
* Never create something in Access alone, you need to show real coding. Even if Access would be a simpler solution this will not allow you to get marks for a complex project. Always check with your teacher about complexity

## Finding a Problem and a User

You probably have a few ideas running through your head already but you now need to find a user. Users aren't necessarily going to find you so if you are a member of a local sports club, church, drama society etc. try and think how a data processing system could help them out. For example, you could keep track of the members of a choir, which sessions they attended and whether they have paid their subscription. If you know someone who runs a small business could you write a system to keep track of when staff were on duty, how much stock they have, how many sales they make? Is there an area in your school / college that could be improved? Ask your teachers, maybe they still need to write reports manually, maybe they would want a revision tool for their subject, maybe they would like web based system to book out rooms, maybe they want a program writing that could simulate projectile motion to demonstrate something in class. Once you have found your user keep hold of them, they are going to be key to you completing every part of this project.
* What will you do?
If you're having trouble finding a user, try asking some of your teachers at school. If you want to do a simulation, your maths or physics teachers may be helpful.

## Workable projects?

Do the following sound complex enough? If not, how would you make them complex? Remember to check with your teacher about complexity.

## How will you solve the problem?

Once you have a user and a problem how are you going to solve it? You aren't a multi-billion pound IT firm and you probably don't have much more than a years programming experience. You have got to be realistic about how you are going to solve this problem. Here are a couple of questions you need to start thinking about, write down your answers
* What languages do you already know? What languages and skills do you need to learn?
* Is it going to be web, phone or desktop application based?
* Will you use a relational database or flat file data structure, or nothing at all?
* Do you know how to normalise data tables or read from text/XML files?
* Do you have enough time to do what you want to?
* Is it complex enough to get you top marks?

## Next Steps

Write all of this down somewhere, it's going to come in useful for your Analysis!
* Question
* What is your idea?
* Is your idea complex enough?
* How will you deliver the complexity?
* Who is your end user?
* What programming languages do you know?
* How long do you have?
* Do you need to use a database or other data store?
* web based / phone app / desktop?
* What do you need to learn?
* What web sites and books can help you?