<commit_before># 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](milestone1-editor)
  1. [Testing Syntax Analysis](milestone1-editor/day1.md) (due to ~~22 September~~ **24 September**)
  2. [Syntax Definition](milestone1-editor/day2.md) (due to ~~29 September~~ **01 October**)
  3. [Syntactic Editor Services](milestone1-editor/day3.md) (due to 08 October)
  4. [Simple Term Rewriting](milestone1-editor/day4.md) (due to 15 October)
* [Milestone 2: Semantic Analysis](milestone2-analysis)
  5. [Testing Name Analysis](milestone2-analysis/day5.md) (due to 22 October)
  6. [Name Analysis](milestone2-analysis/day6.md) (due to 12 November)
  7. [Testing Type Analysis](milestone2-analysis/day7.md) (due to 19 November)
  8. [Basic Type Analysis](milestone2-analysis/day8.md) (due to 26 November)
  9. [Inheritance and Subtyping](milestone2-analysis/day9.md) (due to 3 December)
* [Milestone 3: Code Generation](milestone3-codegen)
  10. [Compiling Minimal Programs](milestone3-codegen/day10.md) (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:
<commit_msg>Add link to assignment 11.<commit_after># 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](milestone1-editor)
  1. [Testing Syntax Analysis](milestone1-editor/day1.md) (due to ~~22 September~~ **24 September**)
  2. [Syntax Definition](milestone1-editor/day2.md) (due to ~~29 September~~ **01 October**)
  3. [Syntactic Editor Services](milestone1-editor/day3.md) (due to 08 October)
  4. [Simple Term Rewriting](milestone1-editor/day4.md) (due to 15 October)
* [Milestone 2: Semantic Analysis](milestone2-analysis)
  5. [Testing Name Analysis](milestone2-analysis/day5.md) (due to 22 October)
  6. [Name Analysis](milestone2-analysis/day6.md) (due to 12 November)
  7. [Testing Type Analysis](milestone2-analysis/day7.md) (due to 19 November)
  8. [Basic Type Analysis](milestone2-analysis/day8.md) (due to 26 November)
  9. [Inheritance and Subtyping](milestone2-analysis/day9.md) (due to 3 December)
* [Milestone 3: Code Generation](milestone3-codegen)
  10. [Compiling Minimal Programs](milestone3-codegen/day10.md) (due to 10 December)
  11. [Compiling Expressions and Statements](milestone3-codegen/day11.md) (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:

{'fraction_non_alphanumeric': 0.06907894736842106, 'fraction_numerical': 0.024835526315789475, 'mean_word_length': 4.955925563173359, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7498631', 'n_tokens_mistral': 1677, 'n_tokens_neox': 1562, 'n_words': 810}