COMP3600/6466 — Algorithms Convenor & lecturer: Hanna ... · E-mail: comp 3600 [email protected]...

6
COMP3600/6466 Algorithms Final Project COMP3600/6466 — Algorithms Convenor & lecturer: Hanna Kurniawati E-mail: comp 3600 [email protected] Final Project – Full Description The 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 is your 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 along with its time complexity analysis. Yes, you can choose to create any application software you like! However, it must contain at least three functionalities. The algorithms or data structures you use to implement each functionality must cover at least one unique topic covered in this class (i.e., the three functionalities must cover at least three different topics 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 need to 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: ✭✭ ❤❤ 5 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 for selecting 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

Transcript of COMP3600/6466 — Algorithms Convenor & lecturer: Hanna ... · E-mail: comp 3600 [email protected]...

  • 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