Corning Community College
CSCS2330 Discrete Structures
======PROJECT: Logical Math Routines (LMR1)======
=====OBJECTIVE=====
To take a first-principles, deep dive into the various math functionality often used but not dwelled upon: here we use the basic logical operations we implemented in the prior project and build up further routines from those basic parts. And of course, collaboratively documenting the process.
=====OVERVIEW=====
Using the basic logical operations implemented in lmr0, we are seeking to implement the following math routines all upon our 12-bit (or more) custom array:
* addition
* subtraction
* multiplication
* integer division
* integer remainder
* exponent (power)
* some additional math operation of your choice (square root, sine, etc.)
=====GRABIT=====
To assist with consistency across all implementations, data files for use with this project are available on lab46 via the **grabit** tool. Be sure to obtain it and ensure your implementation properly works with the provided data.
lab46:~/src/SEMESTER/DESIG$ grabit DESIG PROJECT
=====EDIT=====
You will want to go [[/notes/discrete/fall2022/projects/lmr1|here]] to edit and fill in the various sections of the document:
* [[/notes/discrete/fall2022/projects/lmr1|https://lab46.g7n.org/notes/discrete/fall2022/projects/lmr1]]
{{page>notes:discrete:fall2022:projects:lmr1&nouser&nodate&nomdate&editbtn}}
=====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 (assuming you have a program called
uom0.c):
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:
117:lmr1:final tally of results (117/117)
*:lmr1:used grabit to obtain project by the Sunday prior to duedate [13/13]
*:lmr1:clean compile, no compiler messages [13/13]
*:lmr1:implementation passes verification tests [26/26]
*:lmr1:adequate modifications to code from template [26/26]
*:lmr1:program operations conform to project specifications [26/26]
*:lmr1:code tracked in lab46 semester repo [13/13]
===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