# Multimediaprojekt SoSe 2025

## General Information
- All assignments build on each other
- You will be rewarded points for the assignments
- Your grades will be calculated from the achieved points
- You submit by uploading to this git repository

## Plagiarism
Please make sure to read the following carefully:
	
Assignments are **individual** implementation tasks. This means that you will have to code by yourself. Like every programmer, you may use the internet to find solutions to the various problems that you will encounter throughout this course. However, we will not tolerate plagiarism and license violations. Plagiarism can have serious consequences that go beyond failing this course. Therefore, make sure you are allowed to use the code and properly mark code that you did not write yourselves. Note that we cannot award points for code that you simply copied from any third parties including any of your fellow students.

## Assignment Submission
You can find the submission date on top of each assignment. However, we might deviate from this, so check your e-mails regularly.

You must use this git repository to submit your solutions. For each assignment, we have prepared template code that you must use for your submission. You must not change the function signatures or move them to other files. This may seem a little strict, but it allows for a more thorough correction which will hopefully assist you for future assignments.


When an assignment is due, we will use the last commit before the deadline as your submission.
Your code must contain all necessary files to run your submission.

#### Your repository must include

- Source code files (`*.py`)
- Supplementary files (`*.jpg`, `*.png`, `*.txt`, ...)
- If you are asked to answer a question, explain, report, plot, or visualize something, you are required to submit a report document in pdf format containing the requested details. 
- Capsule the code that is executed in a main method (`if __name__ == '__main__':`), so that it is not executed if a method is imported from your codefile

#### Your repository must exclude

- Jupyter notebooks (`*.ipynb`)
- Do not submit your Python Environment or the dataset
- Larger files. Upload them to https://megastore.uni-augsburg.de instead. Save the download link to a text file and add it to the repository. Do **not** use any other cloud storage or filesharing service than Megastore.

Points will be deducted if any of the above requirements are violated.

## Automatic Tests

When you push your local changes to the git server, the server will check if your code is in the right format. On the website, you will see a green checkmark if the check is successful. However, the server only tests some basic structure of your code and the points will be awarded later. In theory, you could have a green checkmark and 0 points.

**IMPORTANT:** If this basic test fails and your last commit before the deadline has a red cross, you will loose a lot of points!

Do not modify `.gitlab-ci.yml` or the contents of the `tests` folder.

## Assignment Preparation

Set up your environment by installing the following software.

### Python 3
Downloads available at https://www.python.org/. Choose to install pip (package installer for python) during the installation.

### Virtual Environment
Make yourself familiar to the concept of virtual environments. If you don't know what a virtual environment is, see this [Tutorial on Python Virtual Environments on Windows](https://www.youtube.com/watch?v=APOPm01BVrk) or [MAC/Linux](https://www.youtube.com/watch?v=Kg1Yvry_Ydk).
Create a virtual environment for your project.

### Packages
Install the packages from the `requirements.txt` file.

Your assignments will be tested in an environment where only these packages are installed. If your code does not run in this environment, you will lose points. Depending on your platform and if you have a nvidia GPU and want to use it, see https://pytorch.org for the right command to install PyTorch. The torchvision package is also part of PyTorch and provides some useful methods to handle images.

### Python IDE
We recommend the Pycharm Professional Edition available at https://www.jetbrains.com/pycharm/download/. You need to register a student account to get free access. Start Pycharm and create a new project that uses your recently created python environment. You can do this by changing the project interpreter to the python binary that resides inside your virtual environment. 

Windows: `venv\textbackslash Scripts\textbackslash python.exe`

Linux: `venv/bin/python`

We can help you with this IDE, but not with any other one.
