The goal of the assignment is: 1.To implement a collision detection algorithm for multiple objects using a single thread
1.You are only allowed to work on this assignment as an individual.
2.You are NOT allowed to work/collaborate/show your work to other people.
3.Upload the project report to Canvas as one PDF file per individual. Each individual needs to write his/her/their own project report. Submit all your code as separate files. You will be submitting your IEEE paper as a separate document for the second part of the project.
4.You are NOT allowed to receive helps from anyone. Your course instructor, and teaching assistants will not help you. Your course instructor will treat this midterm research project as a midterm exam. Your work must be your own and it must be original. Should you be found guilty of using someone else’s work (either full or partly, and without citation), an “F” will be assigned as your overall course grade for the semester.
All work must be done using DE1-SoC and the original C++ compiler and libraries that comes with the SD card. Failure to do this will result in a zero as the overall grade of this assignment.
6.You will be judged by how close your design to the specifications mentioned in this document. You must provide a live demo to your designated TAs (found on Canvas) or to your course instructor.
7.An automatic zero will be assigned as your overall grade to any individuals who fails to show a live demo to your designated TAs (found on Canvas) or to your course instructor.
8.You have to create your own Makefile. The use of other programs/software, such as but not limited to cmake, to create a Makefile is not allowed.
9.(Will be added as needed)
The course instructor has the right to update this document at any time. Should you encounter anything that is not clear about this document and you would like this document to be updated please email your course instructor as soon as possible. This document will be interpreted in the way your course instructor interprets it. Questions regarding this document must be directed to the course instructor before the due date. Comments such as “I don’t fully understand the rules …” or “I thought you meant …” or “The TA said that …” will not be valid as it is your duty to ask questions to clarify things. Be active in asking questions.
The goal of the assignment is:
1.To implement a collision detection algorithm for multiple objects using a single thread
2.To find the limit of such an algorithm and improve it using a single thread
3.(For those who want to seek more challenges) To apply the improved version of the algorithm using multi-threading
You are to display free-flowing objects using VGA. The free-flowing objects will rotate along their X or Y axis. When an object hits the edge of the monitor/screen, it will bounce to a new location based on its past trajectory. When an object hits another object, both objects will bounce to a new direction based on their past trajectories. Basic information about how to detect collisions between 2 square objects can be found here.
As an object hits another object or the edge of the monitor/screen, a sound will appear to alert users. A keypad is used to place an object at an empty location. A keypad can also be used to increase or decrease the size of an object before it is placed to the monitor/screen. You must also demonstrate a strong use of polymorphism or linked list. The sample program that illustrates the use of the VGA hardware can be found on the Video sample program. You need to come up with 10 shapes and out of those 10 shapes, you must have * (star), X, L, T, V shaped objects.
The following milestones are provided to guide you throughout the process:
1.To be able to connect to a monitor/screen using the VGA connection and display a box
2.To be able to rotate and free flow the box on a monitor/screen
3.To be able to come up with your preferred algorithm to detect collisions between the box and the edges of the monitor/screen
4.To be able to place 2 boxes on the monitor/screen, let them rotate and free flow while using your preferred algorithm to detect a collision
5.To be able to place more objects of different shapes and see how they interact with each other
6.To keep placing more objects to a point where you can sense a lag
7.Once you notice a lag, revisit your algorithm, and see how you can improve your algorithm to reduce the lag
8.(For those who want to seek more opportunities) Once you are able to reduce the lag, implement your solution using multi-threading. A good starting point can be found in this link. Spawn a thread to generate each object and see the performance you get. Do you think multi-threading is a good or bad thing to have in this project?
Your algorithm for 2b step #2, #3 and #4 can be quite simple. A quick Google search should be able to point you to some basic algorithm.
Once you get to step #5, you must search for a better algorithm to handle different shapes of objects. For you to receive credits, you must use one of the algorithms presented in IEEE papers. In order for the grader to verify your work, the IEEE papers that you plan to use or cite must be written in English. You are more than welcome to explore more than one algorithm and apply them to your code. When you get to step #7, you must find a way to improve your algorithm, this will be the focus of your research. The burden is on you to show that you have made an improvement to the algorithm. How you want to present the case is really up to you.
To measure the performance of your first algorithm (IEEE) vs the improved algorithm, we can measure the CPU time as shown in here. Each student needs to come up with their own way to measure the performance of the improved algorithm vs the first one (IEEE).
You will be judged by the functionality of your program, the depth of your knowledge (technical skills), original work, the improvement to the algorithm, the level of engagement with a user, the likelihood that your project will get published in an IEEE conference, the overall online presentation and your write-up/report. Submitting a single .cpp file, or one.cpp and one .h file for the whole project will earn you a zero. You are expected to submit multiple .cpp and .h files along with a Makefile.
You are required to give a presentation about your midterm project and post it online to a website such as Youtube. You can set your video as Unlisted if you wish. The presentation should be brief, no longer than 15 minutes. Tell us about your project, issues that you were facing, and how you overcame the issues. Provide a quick demo. The goal of this online presentation is to get your name out there and to convince people that you are just that good. Make sure that we can see your face as you provide your demo.
The final goal for this project should not be all about a grade. Use this opportunity to come up with a project that you can be proud of, put it on Youtube so that you can get your name out there. Write an IEEE paper while you are at it, go to a conference to present your paper and start making connections with other people. Opportunities come to those who seek them.
You must also schedule an interview time with one of the teaching assistants no less than 7 days priors to the report deadline. The interview deadline is different than the report deadline. The interview shall be made first come – first serve. To guarantee your spot, you may want to be interviewed on the second/third week of the project. You are expected to spend at least 2 hours per day on this project.
1.A PDF of your individual Midterm Research Project report/write-up (use the lab report template and follow the notes)
2.The full video of your presentation (in any file format that you desire)
3.The Youtube link (Make sure you put the title of the video as: EECE 2160, Spring 2021, Dr. J. Marpaung along with your name for ease of search)
4.All your C++ related files (.cpp, .h, etc)
You are not allowed to upload a zip file.
An automatic zero will be assigned to anyone who fails to show a live working demo to the grader of your course section or to your class instructor prior to the interview deadline. It is your responsibility to show your demo to the right person.
Students who fail to submit their video file on time will not be able to get their grade for it even though they have submitted a Youtube link. A Youtube link cannot be used to substitute a video file.