Add final submission evaluation scheme
This commit is contained in:
parent
116e0c5c49
commit
2ee4a7f933
@ -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.
|
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.
|
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 1–3 people.
|
You may work together in teams of 1–3 people.
|
||||||
Teams may span across pro-seminar groups.
|
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.
|
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.
|
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
|
### Evaluation System
|
||||||
|
|
||||||
|
115
evaluation_scheme.md
Normal file
115
evaluation_scheme.md
Normal 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
|
Loading…
Reference in New Issue
Block a user