Add final submission evaluation scheme

This commit is contained in:
Alex Hirsch 2019-03-01 20:55:14 +01:00
parent 116e0c5c49
commit 2ee4a7f933
2 changed files with 117 additions and 1 deletions

View File

@ -33,7 +33,7 @@ Apart from this, there will be one *required* submission near the beginning of t
You have to submit an additional example input, which may be added to the set of example inputs — this way the number of integration tests is extended.
Furthermore, there are five *optional* milestones.
They provide a golden thread and enable you to receive feedback, plus you get a feel for my reviewing scheme.
They provide a golden thread and enable you to receive feedback.
You may work together in teams of 13 people.
Teams may span across pro-seminar groups.
@ -46,6 +46,7 @@ Both of these parts as well as the majority of QA session grades must be positiv
Other submissions are not graded.
Be sure to adhere to the specification, deviating from it (without stating a proper reason) will negatively impact your grade.
See [Final Submission Evaluation Scheme](evaluation_scheme.md) for more details.
### Evaluation System

115
evaluation_scheme.md Normal file
View File

@ -0,0 +1,115 @@
# Final Submission Evaluation Scheme
Each checkbox represents 1 point to score.
The following key is used for calculating the resulting grade:
- **1:** ≥ 92%
- **2:** (92%, 84%]
- **3:** (84%, 76%]
- **4:** (76%, 68%]
- **5:** < 68%
It is required that for at least one test input, featuring input and output, a respective executable can be obtained and run successfully.
Points *may* be subtracted for shortcomings not explicitly listed in this form.
This includes things like:
- Encountered issues not mentioned or justified in the *Known Issues* section
- Executables *segfaulting*
- Faulty code that is not even tested
- Overcomplicated build system setups
- Intermixing interfaces and implementation details
- Misuse of assertions
- Unnecessary waste of time or space (memory leaks)
- Inconsistently formatted or unreadable source code
- …
## Boundary Conditions
- [ ] Correct submission
- Subject is correct
- Attached file has correct name and structure
- [ ] README is present
- Contains instructions
- Contains dependencies
- Contains *Known Issues*
- [ ] Code builds successfully
- Warnings are enabled
- No unjustified warnings of any kind
- [ ] All unit tests succeed
- [ ] All integration tests succeed
- provided test inputs must be included
- [ ] Additional integration tests used for evaluation succeed
- [ ] Architecture consists of shared library + executables
- [ ] All symbols exported by the library are prefixed with `mcc_`
## Front-end
Errors need to come with a meaningful error message and source location information (filename, start line, and start column).
- Syntactic checks:
- [ ] Syntactically invalid mC programs are rejected with an error
- [ ] AST data structure is present and instantiated by the parser
- [ ] AST can be visualised using `mc_ast_to_dot`
- Semantic checks:
- [ ] Shadowing is supported correctly
- [ ] Error on use of undeclared variable
- [ ] Error on conflicting variable declaration
- [ ] Error on use of unknown function
- [ ] Error on missing `main` function
- [ ] Error on conflicting function names
- includes built-in functions
- [ ] Error on missing return-statement for non-void functions
- [ ] Correct type checking on scalars
- [ ] Correct type checking on arrays
- [ ] Error on invalid call-expressions
- Mismatching argument count
- Mismatching argument types
- Return type is taken into account by the type checker
- [ ] Symbol table data structure is present
- [ ] Symbol table can be visualised using `mc_symbol_table`
- [ ] Type checking can be traced using `mc_type_check_trace`
## Core
- [ ] TAC data structure is present
- [ ] TAC can be visualised using `mc_ir`
- [ ] CFG data structure is present
- [ ] CFG can be visualised using `mc_cfg_to_dot`
## Back-end
- [ ] Assembly code can be obtained using `mc_asm`
- [ ] GCC is invoked to generate the final executable
## Driver
- [ ] `mcc` executable supports the requested command-line flags
- [ ] Multiple input files are supported