2019-03-01 20:55:14 +01:00
|
|
|
# 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%
|
|
|
|
|
2019-03-03 12:06:56 +01:00
|
|
|
It is required that for the *mandelbrot* test input, a respective executable can be built and run successfully.
|
2019-03-01 20:55:14 +01:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2019-03-01 22:20:44 +01:00
|
|
|
- [ ] Additional integration tests (provided by the instructor) succeed
|
2019-03-01 20:55:14 +01:00
|
|
|
|
|
|
|
- [ ] 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
|