# Extra assignments

*Have the mandatory assignments left you with a burning desire for more socket programming? Do you just have abundant free time that you can't find a use for? Are you a perfectionist who simply needs to collect all the points there are?*

Well, look no further; you have arrived at the solution to all your problems: **Extra assignments.**

***

These assignments are intended for those who have completed the mandatory assignments and feel like they want to continue on the journey to more complex programs and challenges. The extra assignments take the concepts introduced in the mandatory part of the Lab as their baseline and introduce more complexity but also more interesting and engaging tasks.

{% hint style="warning" %}
You can **arbitrarily pick and choose** from the extra assignments (after you have completed all mandatory assignments). The order of the assignments roughly follows the perceived difficulty and complexity.&#x20;

We strongly recommend following the order of the assignments. Knowledge gained in some of the earlier assignments will greatly benefit the development of the last assignments.
{% endhint %}

***

Note that you will **need to create a new group on CodeGrade** **for each extra assignment** if you are working with a partner. As you are allowed to work in a different group than before, the CodeGrade group set used for the mandatory assignments does not apply to the extra assignments.

***

## Bonus points for code quality

{% hint style="success" %}
You may obtain a total of **250 bonus points** for the code quality bonus across the extra assignments A3, A5, A6, A7, and A8.
{% endhint %}

For the five bonus assignments that imply coding in Python, we offer **50 bonus points** for the highest-quality submissions that do not generate any errors when run through the [Flake8](https://flake8.pycqa.org/en/latest/) linter.&#x20;

Additionally, the grading TA will evaluate the style of your implementation and reward submissions that use multiple files to organize code, solutions that exceed the passing criteria in terms of performance, and elegant code.

Note that passing the linter test in CodeGrade is not enough to qualify you for the 50 bonus points for code quality. Your grading TA will have the final say whether you are rewarded. You may, of course, fix issues pointed out by the TA to qualify for the bonus points.
