Info
The applications must:
- use the 2024 edition on a stable compiler
- compile without compiler warnings (
cargo check) - compile without clippy warnings (
cargo clippy) - resolve warnings properly, and not just hide them (eg. no underscore to hide an unused variable)
- propagate errors to main correctly (where it makes sense)
- not use
unsafeunless otherwise specified - pass a run through miri (
cargo miri run) if the project is usingunsafe - respond to command line arguments that changes its behavior including a help command that prints the available commands
The project will be put in the project folder in the repository used for laboratories.
Grading
C projects
- 30 Points
- Full Functionality
- Git Support
- Presented until week 11
- 25 points
- Full Functionality
- Git Support
- Presented in week 12
B projects
- 40 Points
- Full Functionality
- Git Support
- Git Features Updates
- Presented until week 12
- 35 points
- Full Functionality
- Git Support
- Git Features Updates
- Presented in week 13
A projects
- 50 points
- Full Functionality
- Git Support
- Git Features Updates
- Presented until week 13
- 45 points
- Full Functionality
- Git Support
- Git Features Updates
- Presented until week 14
Glossary
Full Functionality = Means that every requirement described for the project has to be addressed in its implementation
Git Support = The project has to be uploaded to a GIT account (github) that is shared with the teaching assistant
Git Features Updates = If a project has multiple features (e.g. for the Total Commander Browser this will be the ability to copy file, the ability to delete files, etc), every feature has to be committed to Git in a separate commit (with a clear name) so that we can track the evolution of the project.
Final observations
Announce your teaching assistant that you are ready to present a project with 1-2 days before the presentation.
We will only grade if the previous described conditions are achieved (e.g. if you chose a project of type A you can only receive either 50 or 45 points - a partial project will NOT BE GRADED). Please keep this in mind when you are choosing the project category.
We encourage you to try to present before the final moment when your type of project can be presented. If during a presentation, we find problems with a project and there is still time until the last moment your project can be presented, you will be able to re-present again (as long as we respect the final week when that project can be presented).
Before the presentation we will ask you to identify yourself (using an identity act).
The grades that you received are not FINAL. In Week 14 - 15 we will check for plagiarism among the submitted project. If this case, the final grade for the lab exam will be adjusted accordingly.
Choosing the project
You will be registering your preferences for the project using the following link using a Google Form that will be posted on the Discord server. On this form, in addition to your Name/Surname and Faculty Number, you must indicate your preferences for ALL PROJECTS from the project list for types A, B, and C. The format is simple: <Project ID>, <Project ID>, .... For example: 10,1,5,6,7,... for category A means that you would most like to receive project 10, then if not possible, project 1, then if not possible, project 5, and so on.
If you provide an incomplete list or do not complete a list at all (for example, someone who does not want type A projects), a series of preferences will be automatically generated to assist the system.
For instance, if no one wants problem 7 and someone does not complete their preferences (either partially or not at all), problem 7 will be added to the list. In the case of partially completed preferences, it will be added to the end of the preferences list. Our recommendation is that those who do not want a project of a certain type should NOT COMPLETE THE PREFERENCES LIST. This will help the algorithm assign projects that some people desire much more easily.
Other things to note - please adhere to the format --> only integers separated by commas will be accepted. In case of an invalid format, we will attempt to correct where possible. However, if correction is not possible, the field will be considered EMPTY, and values will be assigned to assist the algorithm. Another observation is that if you enter incorrect values (for example, preferring problem 105 which does not exist), these will be ignored in order (so be careful how you fill them out).
VERY IMPORTANT --> Those who do not register on this form WILL NOT RECEIVE PROBLEMS and therefore cannot pass the Rust course. Everyone should register (even if they have no preferences)!
After this, you will receive 3 projects each (one from category A, one from category B, and one from category C). In the following week, please inform your assistant which of the assigned problems you want to work on (notification can be made in the lab or on Discord).
You are NOT allowed to exchange the assigned problem with another colleague (the assistant will only monitor what the algorithm has assigned to you). Also, once you have opted for a problem, you cannot change it (for example, suppose the algorithm assigns you: problem 3 (category A), problem 7 (category B), and problem 2 (category C)). If you tell the assistant that you are working on problem 3 (category A), then you cannot later say that you no longer want to work on that problem and opt for problem 7 (category B).