MTRX3760-MTRX3760代写
时间:2023-08-31
v2023.00
MTRX3760 - Lab 3
Containers
This assignment contributes 5% towards your final mark. It is to be completed individually, not in groups.
Total Marks: 100.
This assignment is due before the start of your allocated lab session in one week, i.e. before the start
of the Week 5 lab session for Thurs/Fri labs, and before the start of the Week 6 lab session for
Monday labs. Late assignments will be subjected to the University’s late submission policy unless
accompanied by a valid special consideration form. Plagiarism will be dealt with in accordance with the
University of Sydney plagiarism policy. Lab submissions will not be accepted more than a week after
the due date.
Note that this lab should be completed with the content of the first six lectures, that is lectures from
Weeks 1-3.
Assignments will be assessed based on the following components. Incomplete submissions will have
severely reduced marks:
● Report: Submit a .pdf report using the class Canvas site. The report can be very simple, and
needs only directly address the questions laid out in the assignment.
The cover page for your report should include your SID and tutorial section, but do not include
your name to comply with the University’s anonymous marking policy.
Code appendix: The appendix of your report must contain a printout (in text format) of all
source code written for the assignment. File header comments and proper formatting will be
critical to making this section readable. Unintelligible code attachments will result in loss of
marks.
● Code: Submit your code (code only, no binaries) in a .zip file via the canvas site.
Please see Lab 1 for hints on preparing your report, including how to format code for inclusion in the
appendix.
v2023.00
Occupancy Map
For this question, do all your development under revision control using git. Part of the question will ask
for your git commit history in a specific format, and you will be assessed based on the quality of that log,
showing appropriate use of revision control practices in your development process.
Starting from the provided code in Lab3_MainQuestion_Code.zip, you will design, program, and
compare the performance of two alternative approaches to storing occupancy grid maps. Example data are
provided in the zip file, along with an abstract base class that includes an evaluation function to validate
and time the performance of your approaches.
The base class knows how to read the test data and evaluate your approaches. Please refer to the provided
code to see how the base class works, and for example usage of the evaluation function.
The two approaches you design should use a set and 2D vector (vector of vectors) data structures,
respectively. Note that the 2D vector should be indexed such that a check for occupancy looks like
indexing a 2D array, as in mMyMap[Location.first][Location.second]. You should employ the C++
Standard Library implementations of these data structures.
Your program should evaluate both your approaches using the base class evaluation function. An example
output for evaluating a single approach is shown below:
Evaluating set-based approach using test points from
ExampleObservations_Small.txt and ExampleNotObserved_Small.txt
Loading the file of observations... ExampleObservations_Small.txt
PopulateForEval loaded 924 observed test points
Loading the file of test points that don't correspond to observations...
ExampleNotObserved_Small.txt
PopulateForEval loaded 912 unobserved test points
Measuring runtime...
Total time to test all points: ………… ms
[30 Marks] Functionality and understanding: In your report show the output of your program,
including the performance of both of your approaches. This and the code in your attached .zip file will be
assessed for correct functionality.
Please also address the following
● In your report, succinctly explain why one was faster than the other.
● In your report estimate how much memory each method required to store its map.
● In your report, estimate how much memory would be required by each method if observations
could take values up to 1 million instead of 2047.
v2023.00
[30 Marks] Code Quality and Development Process: Include in your report your git commit history as
reported by:
git log --oneline
note: copy/paste the text, screenshots are unacceptable
Your code and commit history will be assessed based on style and coding and development best
practices as taught in lecture.
[40 Marks] Design: In your report provide a UML class diagram for your design, excluding member
variables and functions, i.e. showing the overall structure of the program. This diagram and your code
will be assessed based on appropriate use of the design principles taught in lecture.
Self-Assessment
[+5 Bonus] In your report estimate the level of achievement of your submission. Show estimates for all
component grades as well as the total. If your estimated total is within 5 marks of the correct score you
will be awarded 5 bonus marks. Ignore late penalties when estimating.
/30 Functionality
/30 Code quality
/40 Design
/100 Total
Style and design guidelines
Recall that this lab should be completed with the content of the first six lectures, that is lectures from
Weeks 1-3. You may wish to refer to the design checklist from Lab 1, the style checklist from Lab 2, and
any additional style and design guidelines covered in the first 3 weeks of lectures.