The Student Room Group

AQA COMP4: Need Some Advice

I studied Computing AS at home since my school didn't offer it (I sat it there as an internal candidate) and need some advice for Computing A2's coursework seeing as my school wouldn't really be able to help.

Choosing a graphics library

I'm thinking of making my project in Java with either LWJGL (a Java OpenGL wrapper (among other things)) or libGDX (a game library that abstracts low level and boilerplate OpenGL code and is built on top of LWJGL). I'm having troubles choosing between the two as using LWJGL would mean reinventing the wheel (since a lot of code I'll be writing will already be available in libGDX) and libGDX would be doing a lot of heavy lifting for me when it comes to graphics and input (I'm not sure AQA would like the idea of that). I've used libGDX before and I'm comfortable with it. Learning LWJGL would mean learning lots of new concepts I'm not familiar with which could take some time.

Deciding on a project

The first idea that came to mind is to make a SUVAT simulator for AS physics students. It'll be able to solve 1D or 2D SUVAT problems with n unknowns and then show an object moving based on the equation with labels showing the magnitude and direction of its properties during the simulation (such as its velocity). The graphics will be basic shapes (a circle/square for the object and arrows for the magnitude and direction of the objects properties). After the simulation the program will then say how it found out the unknowns such as common rules (the time of the vertical and horizontal component is the same) and how the equation was rearranged. The most difficult parts will be the millions of if/case statements based on the unknowns (especially with 2D SUVAT), testing every possible situation and handling the graphics (including the UI). I'm not sure if this would be unrealistic for a project; would AQA consider this too easy? Would you consider it harder than it should be? I'm really not sure when it comes to coursework.

I'm thinking of starting to program the project next week and then writing the coursework afterwards (then I know I won't have to rewrite parts of the coursework if I decided to change any aspects of the project). I'm not sure if this is a good idea though. Any advice is appreciated :smile:
(edited 9 years ago)

Scroll to see replies

Reply 1
Original post by Nuvertion
I studied Computing AS at home since my school didn't offer it (I sat it there as an internal candidate) and need some advice for Computing A2's coursework seeing as my school wouldn't really be able to help.

Choosing a graphics library

I'm thinking of making my project in Java with either LWJGL (a Java OpenGL wrapper (among other things)) or libGDX (a game library that abstracts low level and boilerplate OpenGL code and is built on top of LWJGL). I'm having troubles choosing between the two as using LWJGL would mean reinventing the wheel (since a lot of code I'll be writing will already be available in libGDX) and libGDX would be doing a lot of heavy lifting for me when it comes to graphics and input (I'm not sure AQA would like the idea of that). I've used libGDX before and I'm comfortable with it. Learning LWJGL would mean learning lots of new concepts I'm not familiar with which could take some time.

Deciding on a project

The first idea that came to mind is to make a SUVAT simulator for AS physics students. It'll be able to solve 1D or 2D SUVAT problems with n unknowns and then show an object moving based on the equation with labels showing the magnitude and direction of its properties during the simulation (such as its velocity). The graphics will be basic shapes (a circle/square for the object and arrows for the magnitude and direction of the objects properties). After the simulation the program will then say how it found out the unknowns such as common rules (the time of the vertical and horizontal component is the same) and how the equation was rearranged. The most difficult parts will be the millions of if/case statements based on the unknowns (especially with 2D SUVAT), testing every possible situation and handling the graphics (including the UI). I'm not sure if this would be unrealistic for a project; would AQA consider this too easy? Would you consider it harder than it should be? I'm really not sure when it comes to coursework.

I'm thinking of starting to program the project next week and then writing the coursework afterwards (then I know I won't have to rewrite parts of the coursework if I decided to change any aspects of the project). I'm not sure if this is a good idea though. Any advice is appreciated :smile:


How did you manage to sit it as an internal candidate if your school doesn't offer it?
Reply 2
Original post by Damask-
How did you manage to sit it as an internal candidate if your school doesn't offer it?


I asked my school if I could sit the exam there and they entered me as an internal candidate (I guess it's because I'm doing the rest of my A Levels there). Maybe I got this wrong but I'm pretty certain that's what they said (it was a while ago when we talked about it).
Reply 3
Original post by Nuvertion
I asked my school if I could sit the exam there and they entered me as an internal candidate (I guess it's because I'm doing the rest of my A Levels there). Maybe I got this wrong but I'm pretty certain that's what they said (it was a while ago when we talked about it).


Weird. Well, the SUVAT idea has definitely been done before (I've seen at least two COMP 4s do the same thing and that's just from the examples my college had) and it's a good one for several reasons.

1) It's SO much easier having a client at your school than one outside of it, especially if it's a teacher you have a good relationship with who won't mind you showing up occasionally asking if you can photocopy their textbooks or observe something in order to document it.

2) If you make sure it's A2 maths or physics SUVAT then you will get a complexity boost automatically since it's academically a pretty difficult topic for a program.

Since you're working in Java anyway, using good OOP practices (encapsulation, polymorphism) will give you yet more complexity marks, so perhaps try simplifying it a bit.

Don't spend all your time coding - very simple graphics and well laid out code with strong, detailed documentation is worth about 20 UMS more than fabulous barely-commented code submitted with 40 pages of sub-par documentation. Remember that the code makes up a tiny fraction of the overall grade so it's not worth putting everything into it.

Mine was so barebones it was laughable, it wrote to and read from text files in a very naïve way, the OOP was a joke and it just wasn't a good implementation at all. It worked, but I probably could do a better job now in 12 hours. The thing is, I still got 74/80 for it, because the documentation was all there and the diagrams were easy to understand and I spent a lot of time writing through all my ideas and explaining my choices at each stage.

People make a huge deal about COMP4 (I was once guilty of the same thing myself) but the truth is, it gets a whole lot easier once you realise it's 10% code and 90% BS, with some diagrams thrown in.
Reply 4
Original post by Damask-
Weird. Well, the SUVAT idea has definitely been done before (I've seen at least two COMP 4s do the same thing and that's just from the examples my college had) and it's a good one for several reasons.

1) It's SO much easier having a client at your school than one outside of it, especially if it's a teacher you have a good relationship with who won't mind you showing up occasionally asking if you can photocopy their textbooks or observe something in order to document it.

2) If you make sure it's A2 maths or physics SUVAT then you will get a complexity boost automatically since it's academically a pretty difficult topic for a program.

Since you're working in Java anyway, using good OOP practices (encapsulation, polymorphism) will give you yet more complexity marks, so perhaps try simplifying it a bit.

Don't spend all your time coding - very simple graphics and well laid out code with strong, detailed documentation is worth about 20 UMS more than fabulous barely-commented code submitted with 40 pages of sub-par documentation. Remember that the code makes up a tiny fraction of the overall grade so it's not worth putting everything into it.

Mine was so barebones it was laughable, it wrote to and read from text files in a very naïve way, the OOP was a joke and it just wasn't a good implementation at all. It worked, but I probably could do a better job now in 12 hours. The thing is, I still got 74/80 for it, because the documentation was all there and the diagrams were easy to understand and I spent a lot of time writing through all my ideas and explaining my choices at each stage.

People make a huge deal about COMP4 (I was once guilty of the same thing myself) but the truth is, it gets a whole lot easier once you realise it's 10% code and 90% BS, with some diagrams thrown in.


Thanks for the advice :smile: Looks like I'll be sticking with my current project and use libGDX for graphics and input.
A friend of mine in my CS class wrote a SUVAT simulator, except he branded it as a revision tool. It would ask a question, the user would work it out and enter their answer, then the simulator would run to show them what would actually happen in that situation. He got a very good mark, I think 74/75 raw.

As other people have said though, the vast majority of the marks come from your documentation - follow the headings in the PDF exactly (where applicable) and you'll be alright. The high-scoring projects in my class all had 200+ pages of documentation. The one person who got full marks had over 500 pages.
Reply 6
Original post by benplumley
A friend of mine in my CS class wrote a SUVAT simulator, except he branded it as a revision tool. It would ask a question, the user would work it out and enter their answer, then the simulator would run to show them what would actually happen in that situation. He got a very good mark, I think 74/75 raw.

As other people have said though, the vast majority of the marks come from your documentation - follow the headings in the PDF exactly (where applicable) and you'll be alright. The high-scoring projects in my class all had 200+ pages of documentation. The one person who got full marks had over 500 pages.


This is what I dislike about the coursework :/ Guess I'll have to start early so I'll have it done in time.
Original post by Nuvertion
This is what I dislike about the coursework :/ Guess I'll have to start early so I'll have it done in time.


Don't worry, nobody like documenting code!
Reply 8
Original post by Nuvertion
I studied Computing AS at home since my school didn't offer it (I sat it there as an internal candidate) and need some advice for Computing A2's coursework seeing as my school wouldn't really be able to help.

Choosing a graphics library

I'm thinking of making my project in Java with either LWJGL (a Java OpenGL wrapper (among other things)) or libGDX (a game library that abstracts low level and boilerplate OpenGL code and is built on top of LWJGL). I'm having troubles choosing between the two as using LWJGL would mean reinventing the wheel (since a lot of code I'll be writing will already be available in libGDX) and libGDX would be doing a lot of heavy lifting for me when it comes to graphics and input (I'm not sure AQA would like the idea of that). I've used libGDX before and I'm comfortable with it. Learning LWJGL would mean learning lots of new concepts I'm not familiar with which could take some time.

Deciding on a project

The first idea that came to mind is to make a SUVAT simulator for AS physics students. It'll be able to solve 1D or 2D SUVAT problems with n unknowns and then show an object moving based on the equation with labels showing the magnitude and direction of its properties during the simulation (such as its velocity). The graphics will be basic shapes (a circle/square for the object and arrows for the magnitude and direction of the objects properties). After the simulation the program will then say how it found out the unknowns such as common rules (the time of the vertical and horizontal component is the same) and how the equation was rearranged. The most difficult parts will be the millions of if/case statements based on the unknowns (especially with 2D SUVAT), testing every possible situation and handling the graphics (including the UI). I'm not sure if this would be unrealistic for a project; would AQA consider this too easy? Would you consider it harder than it should be? I'm really not sure when it comes to coursework.

I'm thinking of starting to program the project next week and then writing the coursework afterwards (then I know I won't have to rewrite parts of the coursework if I decided to change any aspects of the project). I'm not sure if this is a good idea though. Any advice is appreciated :smile:


Chose the graphics library that you are comfortable with. There is absolutely no point in reinventing the wheel, and I'd hope that doing so would not gain anyone more marks than someone who smartly decides to use stuff already there. AQA are (supposedly) not here to make us suffer and pointlessly write code. It just has to be clever.

Lots of people do mathsy projects like yours, so in terms of originality... meh, but if you don't really care and want to get a high mark its fine. I do think a SUVAT simulator is rather basic though, and so you might want to add some other mechanics - related stuff. But like everyone says, its all about the documentation as usual :|


What on earth is a 1D SUVAT equation?
Reply 9
Original post by Harjot
a SUVAT simulator is rather basic though, and so you might want to add some other mechanics - related stuff. But like everyone says, its all about the documentation as usual :|


What on earth is a 1D SUVAT equation?


I'm also adding a few other features that should make it a more advanced. 1D SUVAT (from what I understood) was just the vertical or horizontal component of an object, rather than both (2D SUVAT).
Reply 10
Original post by Nuvertion
I'm also adding a few other features that should make it a more advanced. 1D SUVAT (from what I understood) was just the vertical or horizontal component of an object, rather than both (2D SUVAT).


Oh, I get what you mean. Also, perhaps add a test system that generates questions and use that with the simulation. That'd be cool
Reply 11
Original post by Harjot
Oh, I get what you mean. Also, perhaps add a test system that generates questions and use that with the simulation. That'd be cool


The idea is that there's two mode's, problem solver with N unknowns (that simulates the problem graphically and then shows the answer) and a quiz section where you can create questions (the program will generate the wording of the question, you just need to input the variable values) and try to answer some questions (around 5 questions will be randomly selected from wherever they're stored) with a score being displayed after.

I'm thinking about storing the variable values in a local database, but I've never worked with databases outside of web development (MySQL, PHPMyAdmin) so I'm not sure how to go about implementing it in Java (on top of that they were pretty basic; no normalization or any other techniques that seem to pop up in A2). If it proves to be a problem I might just use a CSV file or something (maybe XML).
Reply 12
Original post by Nuvertion
The idea is that there's two mode's, problem solver with N unknowns (that simulates the problem graphically and then shows the answer) and a quiz section where you can create questions (the program will generate the wording of the question, you just need to input the variable values) and try to answer some questions (around 5 questions will be randomly selected from wherever they're stored) with a score being displayed after.

I'm thinking about storing the variable values in a local database, but I've never worked with databases outside of web development (MySQL, PHPMyAdmin) so I'm not sure how to go about implementing it in Java (on top of that they were pretty basic; no normalization or any other techniques that seem to pop up in A2). If it proves to be a problem I might just use a CSV file or something (maybe XML).


Don't worry about storing stuff in a local database - you'll overcome that hurdle when you get there, and it generally is not that hard. Plus you are using java, which will have heavy support for this kind of thing (use a library).
Why does the program not generate the values itself? Surely that'd be better?
Reply 13
Original post by Harjot
Don't worry about storing stuff in a local database - you'll overcome that hurdle when you get there, and it generally is not that hard. Plus you are using java, which will have heavy support for this kind of thing (use a library).
Why does the program not generate the values itself? Surely that'd be better?


For the quiz? I think it would be better if they were set by someone rather than generated; it shows that the program can verify and process data rather than just output generated values.
Original post by Nuvertion
For the quiz? I think it would be better if they were set by someone rather than generated; it shows that the program can verify and process data rather than just output generated values.

I disagree. If the questions and answers are pulled from a database, your program doesn't have to be able to solve the equations it's testing. If it uses generated values, in order to check whether an answer is correct it must solve the equations algorithmically.
Reply 15
Original post by benplumley
I disagree. If the questions and answers are pulled from a database, your program doesn't have to be able to solve the equations it's testing. If it uses generated values, in order to check whether an answer is correct it must solve the equations algorithmically.


Indeed - they'd rather see algorithmic stuff than input and output, which was more GCSE. If you really want to include that stuff, then perhaps use a database to store test results etc.. From a practical point of view, the teacher would probably not rather enter the data as they have to check it themselves etc and it takes time
Reply 16
Original post by benplumley
I disagree. If the questions and answers are pulled from a database, your program doesn't have to be able to solve the equations it's testing. If it uses generated values, in order to check whether an answer is correct it must solve the equations algorithmically.


Original post by Harjot
Indeed - they'd rather see algorithmic stuff than input and output, which was more GCSE. If you really want to include that stuff, then perhaps use a database to store test results etc.. From a practical point of view, the teacher would probably not rather enter the data as they have to check it themselves etc and it takes time


Except that equations are solved in the Problem Solver part of the program so I'd be reusing the same code but if the quiz had to verify the input data that would actually make the program more complex as it would have to do both (equation solving and input data verification).

In fact generating questions would remove the need of a database in the first place, making the program even more simple.
(edited 9 years ago)
Reply 17
Original post by Nuvertion
The idea is that there's two mode's, problem solver with N unknowns (that simulates the problem graphically and then shows the answer) and a quiz section where you can create questions (the program will generate the wording of the question, you just need to input the variable values) and try to answer some questions (around 5 questions will be randomly selected from wherever they're stored) with a score being displayed after.

I'm thinking about storing the variable values in a local database, but I've never worked with databases outside of web development (MySQL, PHPMyAdmin) so I'm not sure how to go about implementing it in Java (on top of that they were pretty basic; no normalization or any other techniques that seem to pop up in A2). If it proves to be a problem I might just use a CSV file or something (maybe XML).


I used a mysql connector DLL for VB.net so presumably there is something similar for Java. Using mysql will get complexity marks, but SQL is a massive pain! Just remember comp4 is a huge project (mine was about 370 pages) and you will end up spending every spare second on it so make sure you want to do the project!!! (And visio is very good for flowcharts and stuff - your college may have it).

Also the A2 aqa textbook has a little bit which is useful (don't rely on it!) And the wikibook is good
(edited 9 years ago)
Reply 18
Original post by brilld
I used a mysql connector DLL for VB.net so presumably there is something similar for Java. Using mysql will get complexity marks, but SQL is a massive pain! Just remember comp4 is a huge project (mine was about 370 pages) and you will end up spending every spare second on it so make sure you want to do the project!!! (And visio is very good for flowcharts and stuff - your college may have it).

Also the A2 aqa textbook has a little bit which is useful (don't rely on it!) And the wikibook is good


Thanks for the advice.
Reply 19
Oh and xampp is great to get mysql on your PC quickly

Quick Reply

Latest