In the practical part of the course, you build an IDE for MiniJava, a small subset of Java. We split this task into three milestones of weekly individual assignments:
- MiniJava editor (syntax analysis, pretty-printing, code templates, syntax highlighting, outline view)
- MiniJava analyser (name analysis, type analysis, constraint checking, code completion)
- MiniJava compiler (Java bytecode generation)
All assignments are publicly available on GitHub:
- Milestone 1: Syntax Analysis
- Testing Syntax Analysis (due to
22 September24 September) - Syntax Definition (due to
29 September01 October) - Syntactic Editor Services (due to 08 October)
- Simple Term Rewriting (due to 15 October)
- Testing Syntax Analysis (due to
- Milestone 2: Semantic Analysis 5. Testing Name Analysis (due to 22 October) 6. Name Analysis (due to 12 November) 7. Testing Type Analysis (due to 19 November) 8. Basic Type Analysis (due to 26 November) 9. Inheritance and Subtyping (due to 3 December)
- Milestone 3: Code Generation 10. Compiling Minimal Programs (due to 10 December) 11. Compiling Expressions and Statements (due to 17 December) 12. Compiling, Fields, Parameters, and Variables (due to 7 January)
We rely on GitHub for assignment submissions. We assign a private GitHub repository to each student and encourage students to commit and push their work frequently. To submit your assignment, you need to file a pull request. There are two kinds of submissions.
To check your progress on an assignment, you can submit a prelimanary solution. We will provide limited feedback on preliminary solutions. This feedback typically comes with a tentative grade and points out areas where your solution is incomplete or insufficient, without giving any details on the reasons.
To submit your solution for grading, you need to submit a final solution. As the name suggests, you cannot submit another final solution for the same assignment. We will provide a detailed grading report on final solutions. To ensure fairness and equal chances for all students, grading reports will not be published before 5 days after the submission deadline. We do our best to hand out grading reports as quick as possible, but manual grading can be tedious and might result in longer waiting times for some assignments.
We grade the first final solution of each of your assignments. Grades reflect on correctness, clarity, shown programming skills, and readability of your submission. To pass the practical part of the course, you need to meet all of the following criteria:
- You completed each assignment with a grade of 4.0 or better.
- You completed the assignments of each milestone with an average grade of 5.0 or better.
- You completed all the assignments with an average grade of 6.0 better.
These rules allow you to compensate for lower grades in single assignments, but ensure a minimal quality in all your milestones as well as in your overall practical work.
Assignments must be submitted weekly until Monday, 17:59. Each student has 5 late days to use at his or her discretion. Each late day constitutes a 24-hour extension; you cannot split late days into smaller increments. Once a student runs out of late days, any late submission is penalised at a rate of 0.1 grading points per day. No submission may be handed in more than 5 days late.
Please reserve your late days for legitimate emergencies. If you think you cannot meet deadlines due to special circumstances, you should contact the academic counsellor. Together we will try to find an individual solution for you. Remember to contact the academic counsellor as soon as possible, once you become aware of your situation. Otherwise, you might lose your chance for a deadline extension.
All actual, detailed work on assignments must be individual work. You are encouraged to discuss assignments, programming languages used to solve the assignments, their libraries, and general solution techniques in these languages with each other. If you do so, then you must acknowledge the people with whom you discussed at the top of your submission. You should not look for assignment solutions elsewhere; but if material is taken from elsewhere, then you must acknowledge its source. You are not permitted to provide or receive any kind of solutions of assignments. This includes partial, incomplete, or erroneous solutions. You are also not permitted to provide or receive programming help from people other than the teaching assistants, PhD students associated with this course, or the course manager. Any violation of these rules will be reported as a suspected case of fraud to the Board of Examiners and handled according to the EEMCS Faculty's fraud procedure. If the case is proven, a penalty will be imposed: a minimum of exclusion from the course for the duration of one academic year up to a maximum of a one-year exclusion form all courses at TU Delft. For details on the procedure, see Section 2.1.26 in the faculty's Study Guide for MSc Programmes.
To ensure fairness and equal chances for all students, you are not allowed to take the same practical assignments in another edition of this course. In case you participated in previous editions of the course, please contact the course manager to discuss an individual assignment.