Giter Site home page Giter Site logo

assignments's Introduction

Assignments

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:

  1. MiniJava editor (syntax analysis, pretty-printing, code templates, syntax highlighting, outline view)
  2. MiniJava analyser (name analysis, type analysis, constraint checking, code completion)
  3. MiniJava compiler (Java bytecode generation)

All assignments are publicly available on GitHub:

  • Milestone 1: Syntax Analysis
    1. Testing Syntax Analysis (due to 22 September 24 September)
    2. Syntax Definition (due to 29 September 01 October)
    3. Syntactic Editor Services (due to 08 October)
    4. Simple Term Rewriting (due to 15 October)
  • Milestone 2 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 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 11 January)

Submitting Assignments

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.

Grading

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:

  1. You completed each assignment with a grade of 4.0 or better.
  2. You completed the assignments of each milestone with an average grade of 5.0 or better.
  3. 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.

Deadlines

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.

Academic Misconduct

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.

Redoing the Assignments

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.

assignments's People

Contributors

apanatshka avatar arian avatar calavoow avatar dhoepelman avatar gohla avatar mickvangelderen avatar mrhug avatar passalaqua avatar rogierslag avatar snorberhuis avatar udesou avatar virtlink avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.