Tasks and grading¶
There is no exam. You pass the course by completing five homework assignments and a small project.
Each homework is worth 12 points and the project is worth 40 points, for a total of 100 points. In addition, completing the course feedback will give you a couple of extra points. You pass the course at 50 points and every additional 10 points gives you a higher grade. To score the top grade, you will need 90 points.

Homework assignments¶
Each lessons is followed by a homework assignment. You have a couple of days to work on the task, after which you must submit your code and report as a single zip, gz or tar archive via Ville.
The assignments are:
Grading¶
For every assignment, you get a simulation template, which is missing features. Your task is to implement the missing features, run the required simulations, and report your results.
Your code must
be a single .py file (not .ipynb etc.)
only contain ascii characters (no Finnish letters, just in case)
obey the specifications given in the template
be easily readable and well commented.
The requirements are strict because the code is evaluated using automated tests. These tests will fail if your code does not perform exactly as described in the documentation, so make sure it does! Read the instructions carefully and test your code. When in doubt, ask the teacher for advice. The computer will not show mercy if your program does not work.
Your report should
be short
answer the given questions
justify the answers with simulation results or theory.
The assignments are graded according to the following rubric.

Solutions are explained at the beginning of the next lesson. If your code did not work properly, it is possible to resubmit a new version even after the deadline has passed. The resubmission window is 48 h past the original deadline. Note however, that resubmissions are evaluated only using the automated tester. Report and style will always be evaluated based on the original submission. This means that a late submission is at maximum worth 6 points.
Tips¶
The assignments get more difficult as the course goes on. Make sure you get lots of points from the first couple of tasks.
You must always critically analyse how your program works. For instance in a dynamic simulation, you should draw an animation of your system to see how it behaves. Your program may execute and do something, but if that something turns out to be complete nonsense, you will not get many points.
You can start working on the homework directly after the lesson. The teacher will be available and you can ask for advice.
If you need advice on other days, send a message to the teacher. He’s nice.
Start early and schedule more time than you think you’ll need. Sometimes it is not obvious what works, and you need to try different things. Usually debugging takes a lot longer than actual coding. And in some cases, just running the simulation takes a while. None of these are valid reasons for missing a deadline.
All answers must be backed by simulation results or theory. Do not expect full marks from correct statements if it is not clear how they relate to your simulation results.
You can resubmit new code after the deadline. If your code didn’t fully work, ask the teacher for advice on how to fix it.
No extensions will be allowed on reports, because example solutions will be made available. If you know you cannot work before a certain deadline, ask for advice and complete the assignment early.
Even if your program fails, you may score points for your report. If you know your program doesn’t work, report how and why you know your code fails and what steps have you taken in trying to fix it. Report resubmissions are not accepted, so you need to show thought in your original report.
Everyone must complete their own assignments themselves. It is ok to discuss, ask for help, or use lecture examples as a starting point, but directly copy-pasting extended segments of someone else’s code is not allowed. To learn, you need to write your own code, run your own simulations and interpret them. Direct copying of code or data is regarded as academic dishonesty and will result in zero points for the assignment in question.
Project¶
By the time the last assignment is submitted, everyone should have picked a project topic. The topic can be pretty much anything, as long as it involves a physical simulation. However, some topics are much simpler than others. If you pick a very easy project, you are not eligible for full points. On the other hand, it is also easy to be too ambitious. Therefore everyone should discuss their choice of topic with the teacher before starting the project! You are allowed to use pre-existing libraries, but the project must contain substantial coding effort from yourself as well.
Here are some nice topics:
Execution¶
The most important part of the project is implementing a meaningful simulation and producing results with it. This part is evaluated based on your program, programming style and analysis of results according to the following rubric.

Reporting¶
The project must be reported in three parts: a plan, a written report and a presentation.
The plan is written to demonstrate you know what you will do. It also allows the teacher to intervene, if the suggested methods are insufficient or if the topic seems too easy or too difficult. The plan should
be short, about 1 page long
state the physical system or problem you wish to study
state the methods you plan to use
state the results you expect, including what kind of data you gather and how you analyse it
state the score you aim at
The report is a written document adhering to normal academic writing standards. Think of it as similar to a lab report. In the report, you should explain your results and demonstrate your understanding of the chosen simulation and analysis methods. The report should
be elaborate, 3-10 pages
be written for the teacher, i.e., at expert level
thoroughly explain the theoretical background of the studied physics, mathematics and algorithms
cite sources according to academic reporting standards
explain the most important results produced by the simulations
Finally, in the presentation you should explain to your fellow students what you have done and learned. Don’t make your presentation technical, make it interesting. Also think about what you learned during the project and try to convey that to others. The presentation should
be short, about 5-10 min
be aimed at other students, i.e., at beginner level
explain why your topic is interesting
describe the methods you use and the results you obtain at a general level
contain one or two simple take-home-messages for the audience
We will have a project fair at the end of the course and the presentations will be given there. If you cannot participate, you must prepare something to be shown at the fair, such as a video.
The report is evaluated according to the following rubric. Note that all parts are mandatory. You will get 0 points for the whole reporting task if you skip any of the parts.

Tips¶
The program is scored based both on correctness and scope. A full simulation of the Ising model is inherently more interesting and more challenging than the simulation of a pair of dice. When choosing a topic, you should also discuss the scope of your project with the teacher.
The project can fail. If you know that your program does not work, you can gain compensating points by clearly reporting how the program fails, how you know it and what steps you have taken in trying to fix it.
Only producing a simulation is not enough. You also need to analyse the results in some meaningful way. It is not always obvious how this should be done, so ask the teacher for advice if you are unsure.