-
COMP3600/6466 Algorithms Final Project
COMP3600/6466 — AlgorithmsConvenor & lecturer: Hanna
KurniawatiE-mail: comp 3600 [email protected]
Final Project – Full DescriptionThe Final Project is worth 40%
of your total mark
So, you have been learning multiple analysis, data structures,
and algorithm design techniques. The final project isyour chance to
put all of them together into practice, to create and analyse an
application software of your dream!!!
The final project of COMP3600/6466 requires you to develop a
working application software of your choosing alongwith its time
complexity analysis. Yes, you can choose to create any application
software you like! However, it mustcontain at least three
functionalities. The algorithms or data structures you use to
implement each functionality mustcover at least one unique topic
covered in this class (i.e., the three functionalities must cover
at least three differenttopics in this class). Moreover, they must
satisfy the following:
• At least two functionalities must use the algorithms / data
structures covered in point B.4 or greater.• At least one
functionality must use the algorithms / data structures covered in
point B.7 or greater.
The above points refer to the points in section “Topics covered
in this class” (pp. 2 of this document).You are welcome to develop
more than three functionalities, but we will only mark three of
them and you will needto inform us which three you want us to
mark.Examples of project ideas are in
https://cs.anu.edu.au/courses/comp3600/prjIdeas.html.
To help keep track of your progress, the final project consists
of three milestones:
Milestone-1: Project Proposal• Due: 7 September 2020, 23:59
Canberra time.• This milestone is worth 10pt of your final project
mark.• We will mark how logical the software application,
functionalities, and assumptions are.
Milestone-2: Design Document• Due: (((((
(((hhhhhhhh5 October 2020 8 October 2020, 23:59 Canberra time.•
This milestone is worth 20pt of your final project mark.• Marking
criteria:
– Skeleton of the application software: 10pt– Two of the three
functionalities @5pt per functionality. For each of these two
functionalities, we will
mark the suitability of the algorithm/data structures you
propose to use along with your argument forselecting those
algorithms/data structures.
Milestone-3: Final Deliverables• Due:13 November 2020, 23:59
Canberra time.• This milestone is worth 70pt of your final project
mark.• Marking criteria:
– Overall working of the application: 10pt, with the following
breakdown:∗ A description on how to use your application 2.5pt∗ A
description of what your application does and the functionalities
provided: 2.5pt.∗ The overall program, i.e., it compiles, runs, and
outputs the correct results: 5pt.
– Each of the three functionalities is worth 20pt, with the
following breakdown:∗ Arguments for why the particular algorithms
is selected: 2.5pt∗ The program: 5 pt∗ Theoretical time complexity
analysis: 6.5pt∗ Empirical time complexity analysis and their
comparison against the theoretical results: 6pt
1
mailto:[email protected]://cs.anu.edu.au/courses/comp3600/prjIdeas.html
-
COMP3600/6466 Algorithms Final Project
Topics covered in this class:
A. Analysis Framework:
1. Asymptotic Analysis
2. Loop-invariant for proving correctness
3. Recurrence Analysis
4. Probabilistic Analysis
5. Empirical Analysis
6. Introduction to complexity classes
B. Data structure / algorithm design:
1. Comparison-based sorting
2. Non-comparison-based sorting
3. Binary search tree
4. Heaps
5. AVL Tree
6. Red-black tree
7. Hashing
8. Dynamic Programming
9. Minimum Spanning Tree (MST) + Dijkstra
10. Convex hull + closest pair of points (tentative)
Tentative schedule on when the above topics are covered is
available in
https://cs.anu.edu.au/courses/comp3600/schedule.html.
Prizes for best projects (courtesy of CECS ANU):
Last bust not least, we have 3 prizes for the top three final
projects:
1st prize 2nd prize 3rd prize
2
https://cs.anu.edu.au/courses/comp3600/schedule.htmlhttps://cs.anu.edu.au/courses/comp3600/schedule.html
-
COMP3600/6466 Algorithms Final Project
COMP3600/6466 — AlgorithmsConvenor & lecturer: Hanna
KurniawatiE-mail: comp 3600 [email protected]
Final Project – Milestone 1: Project ProposalDue: Monday, 7
September 2020 23:59 Canberra TimeGrace Period Ends: Tuesday, 8
September 2020 13:00 Canberra TimeLate Penalty: 100%
Notes:
• Milestone-1 of your final project (i.e, your project proposal)
should be typed on a single sided A4 page. Theminimum font size
should be 11pt, assuming you use a typical font type, e.g., Arial,
Times New Roman, andHelvetica. The top, bottom, left, and right
margin should be at least 1cm.
• Please submit your project proposal as a single .pdf file,
named FinalM1-[studentID].pdf, via Wattle before thedue date.
• We provide 13 hours grace period. This means, there will be no
penalty if you submit before the grace periodends. However, we will
NOT accept assignment submission beyond this time. We strongly
suggest you saveyour proposal as a draft before the due date. This
way, you can still update your proposal until the grace pe-riod
ends and by the time the grace period ends, the last saved draft
will automatically become your submission.
In this milestone, you will need to write a project proposal
describing the software application you will develop forthe final
project. Specifically, you need to submit the following:
1. A description of the software application you will develop,
together with assumptions and at least three func-tionalities. You
can provide more than three functionalities, but we will mark only
three of them. Therefore, ifyou provided more than three
functionalities, please identify three of them that you would like
us to mark.As a project proposal, you need to write the description
at a level that allows your fellow students in this classto
understand the difficulty of the problem.We do understand that you
might want to change functionalities as we cover more materials.
You will still beable to update two of the three functionalities in
Milestone-2, and to update one of the functionalities in theFinal
Deliverables.
2. The programming language you plan to use and whether the
software will run on Windows or Linux.
3
mailto:[email protected]
-
COMP3600/6466 Algorithms Final Project
COMP3600/6466 — AlgorithmsConvenor & lecturer: Hanna
KurniawatiE-mail: comp 3600 [email protected]
Final Project – Milestone 2: Design DocumentDue: Thursday, 8
October 2020 23:59 Canberra TimeGrace Period Ends: Friday, 9
October 2020 13:00 Canberra TimeLate Penalty: 100%
Notes:
• In this assignment, you need to submit: .– A design document.–
A skeleton of your application software. All source codes and
readme files must be placed inside a folder
named FinalPrjCode-studentID.
• You need to compress all files above into a single .zip file
named FinalPrjM2-studentID.zip and save this .zipfile as draft in
Wattle before the due date.
• We provide 13 hours grace period. This means, there will be no
penalty if you submit before the grace pe-riod ends. However, we
will NOT accept assignment submission beyond this time. We strongly
suggest yousave your submission as a draft before the due date.
This way, you can still update them until the grace pe-riod ends
and by the time the grace period ends, the last saved draft will
automatically become your submission.
The purpose of this milestone is to ensure that you have a
reasonable idea on developing your application softwareand how the
functionalities you propose will fit together in your application.
To this end, you will need to provide adesign document and skeleton
of your software, as specified below.
The design document must contain:1. A confirmation and
refinement of the software application you will develop. This
milestone is your last chance
to change the application or the assumptions of the application
you will be developing. If you do makechanges, please provide the
full description and assumptions. These description and assumptions
must be self-contained, i.e., we do not need to read your first
milestone to understand them.
2. A confirmation of at least two functionalities you will
implement. After this milestone, you can no longer makeany changes
to these two functionalities. In this milestone, you are allowed to
make changes to at most two ofthe three functionalities you have
submitted in milestone 1.
3. For each of the two functionalities in item #2 above, please
provide:
(a) The exact algorithm/data structure you will be using
(b) Argument(s) that support the use of the algorithm/data
structure you have selected for the application youare developing
and the assumptions you have set.
The design document must be typed. The maximum length of the
document is 4 single-sided pages of A4 size paper,assuming you use
a typical font type (e.g., Arial, Times New Roman, Helvetica) with
size 11pt or 12 pt, and the top,bottom, left, and right margins are
at least 1cm.
The skeleton of your application software should contain:1. A
main function of the application software that will allow a user to
interface with the application and the two
functionalities set in design document item #2. Note that this
point only requires you to implement the interfacefor a user to
interact with the software application and its functionalities, you
do not need to implement thefunctionalities themselves.
2. A readme file on how to compile and run your application
software. We will follow this readme file to checkwhether the
function you provided in #1 is working properly.
3. Definitions of the essential classes (if you use OOP) and
functions of your application software with at leastthe two
functionalities that you have specified in design document item #2.
If you are using C/C++, you canthink of this part of the skeleton
as your partial header files —partial because we do understand that
in the finaldeliverable, you may need to develop additional
intermediate functions.
4
mailto:[email protected]
-
COMP3600/6466 Algorithms Final Project
COMP3600/6466 — AlgorithmsConvenor & lecturer: Hanna
KurniawatiE-mail: comp 3600 [email protected]
Final Project – Final DeliverablesDue: Friday, 13 November 2020
23:59 Canberra TimeGrace Period Ends: Saturday, 14 November 2020
13:00 Canberra TimeLate Penalty: 100%
Notes:
• In the final deliverables, you need to submit: .– Your report,
named report-studentID.pdf .– Your source codes, README, and a set
of five test cases per functionality. The test cases must be
named
test-fi-1.txt, test-fi-2.txt, test-fi-3.txt, test-fi-4.txt,
test-fi-5.txt where 1 ≤ i ≤ 3 is the ID of the functionality.All
source codes, README, and all test cases must be placed inside a
folder named program-studentID.
– You need to put your report and the folder program-studentID
inside a folder named final-studentID, andcompress final-studentID
into a single .zip file named final-studentID.zip.
– You then need to save the above final-studentID.zip file as
draft in Wattle before the due date.• We provide 13 hours grace
period. This means, there will be no penalty if you submit before
the grace pe-
riod ends. However, we will NOT accept assignment submission
beyond this time. We strongly suggest yousave your submission as a
draft before the due date. This way, you can still update them
until the grace pe-riod ends and by the time the grace period ends,
the last saved draft will automatically become your submission.
In this final deliverables, the only thing you can still change
is one functionality.
You will need to submit:
1. A report: 47.5pt. The report must contain:
(a) A short description of what your application does and the
assumptions made (e.g., if you have a limit onthe input size, for
instance, you need to mention this limit here): 1pt
(b) A list of three functionalities you want us to mark, along
with a short description on the role of thefunctionality in your
application: 1.5pt
(c) For each functionality, you need to provide a description of
the functionality, which contains:
i. The function/data structure you use.
ii. Arguments for why the particular algorithm/data structure is
suitable for the purpose of your applica-tion: 2.5pt . Note: You
need to convince us that your choice of algorithm/data structure is
suitable.
iii. Theoretical time complexity analysis: 6.5pt
iv. Empirical time complexity analysis and their comparison
against the theoretical results: 6pt. Note:You need to be able to
empirically test the performance of each of the function you want
us to mark.You also need to submit five of the test cases you use
here (five per functionality). Among these fivetest cases, one must
be the smallest test cases, another one must be the largest, while
the other testcases should be in-between the smallest and the
largest size, and ideally, showcase the capability ofyour
functionality.
2. All source codes of your program: 20pt. Notes about this
marking:
(a) We will use the information you provided in the README to
compile and run your code. Therefore, youneed to write this file
correctly and in a manner that is easy to follow and
understand.
(b) Successful compilation and the running of the overall
application: 5pt.
(c) You need to provide a way for us to test each of the three
functionalities you want us to mark. Youcan provide a direct
interface, so that we can run each functionality with the testcases
you provided,OR provide an option for running the program, so that
we can test the performance of each functionindependently using the
testcases you provided. Each functionality will carry a maximum of
5 pt.
5
mailto:[email protected]
-
COMP3600/6466 Algorithms Final Project
3. The README: 2.5pt. The README must contain a description on
how to use your application, test it, andtest each of the
functionalities. Note that although the README itself is only
2.5pt, this README is veryimportant for you to get good mark in
your program because it will be our basis for compiling and running
yourprogram, including testing each of the three functionalities to
be marked.
If you would like to create a video on how to run your
application and functionalities, you can provide a video withat
most 3 minute duration, named video-studentID.mp4. The video must
be placed inside the folder final-studentID.Note that this is not a
replacement for a good README, but it can help us in compiling and
running the program.
6