Corning Community College
CSCS2320 Data Structures
======PROJECT: Lists - Doubly-Linked Trees (DLT0)======
=====OBJECTIVE=====
Onto Trees! Not only another common data structure, but the first non-linear data structure we've encountered this semester.
Don't forget to contribute to project documentation! That helps to ensure everyone is invested in the project.
=====OVERVIEW=====
Our tree, unlike our stack or queue, is not based on the list: we are taking the same doubly-linked nodes, and building a new, non-linear, infrastructure.
There are many descriptors used for the various trees that can be created. We will be pursuing an ordered binary search tree for our implementation.
=====UPGRADING=====
To assist with consistency across all implementations, project files for use with this project, along with the integration of the work you did on the last project, is made possible via a special recipe in the Makefile.
Simply go into the project base directory, and run:
lab46:~/src/SEMESTER/DESIG/prevPROJECT$ make upgrade-dlt0
=====EDIT=====
You will want to go [[/notes/data/fall2022/projects/dlt0|here]] to edit and fill in the various sections of the document:
* [[/notes/data/fall2022/projects/dlt0|https://lab46.g7n.org/notes/data/fall2022/projects/dlt0]]
{{page>notes:data:fall2022:projects:dlt0&nouser&nodate&nomdate}}
=====SUBMISSION=====
To be successful in this project, the following criteria (or their equivalent) must be met:
* Project must be submit on time, by the deadline.
* Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
* All code must compile cleanly (no warnings or errors)
* Compile with the **-Wall** and **--std=gnu18** compiler flags
* all requested functionality must conform to stated requirements (either on this document or in a comment banner in source code files themselves).
* Executed programs must display in a manner similar to provided output
* output formatted, where applicable, must match that of project requirements
* Processing must be correct based on input given and output requested
* Output, if applicable, must be correct based on values input
* Code must be nicely and consistently indented
* Code must be consistently written, to strive for readability from having a consistent style throughout
* Code must be commented
* Any "to be implemented" comments **MUST** be removed
* these "to be implemented" comments, if still present at evaluation time, will result in points being deducted.
* Sufficient comments explaining the point of provided logic **MUST** be present
* No global variables (without instructor approval), no goto statements, no calling of main()!
* Track/version the source code in your lab46 semester repository
* Submit a copy of your source code to me using the **submit** tool (**make submit** on lab46 will do this) by the deadline.
====Submit Tool Usage====
Let's say you have completed work on the project, and are ready to
submit, you would do the following:
lab46:~/src/SEMESTER/DESIG/PROJECT$ make submit
You should get some sort of confirmation indicating successful submission
if all went according to plan. If not, check for typos and or locational
mismatches.
=====RUBRIC=====
I'll be evaluating the project based on the following criteria:
91:dlt0:final tally of results (65/65)
*:dlt0:obtained project by the Sunday prior to duedate [6/6]
*:dlt0:clean compile, no compiler messages [13/13]
*:dlt0:implementation passes unit tests [13/13]
*:dlt0:adequate modifications to code from template [13/13]
*:dlt0:program operations conform to project specifications [13/13]
*:dlt0:code tracked in lab46 semester repo [7/7]
===Pertaining to the collaborative authoring of project documentation===
* each class member is to participate in the contribution of relevant information and formatting of the documentation
* minimal member contributions consist of:
* near the class average edits (a value of at least four productive edits)
* near the average class content change average (a value of at least 256 bytes (absolute value of data content change))
* near the class content contribution average (a value of at least 1kiB)
* no adding in one commit then later removing in its entirety for the sake of satisfying edit requirements
* adding and formatting data in an organized fashion, aiming to create an informative and readable document that anyone in the class can reference
* content contributions will be factored into a documentation coefficient, a value multiplied against your actual project submission to influence the end result:
* no contributions, co-efficient is 0.50
* less than minimum contributions is 0.75
* met minimum contribution threshold is 1.00
===Additionally===
* Solutions not abiding by spirit of project will be subject to a 50% overall deduction
* Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
* Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
* Solutions not organized and easy to read (assume a terminal at least 90 characters wide, 40 characters tall) are subject to a 25% overall deduction