One of the most common activities that professional scientists do, regardless of field, is write computer simulations. They use these simulations to predict the behavior of new systems, to figure out the mechanism behind a system they don’t understand, and to verify (or disprove) predictions made by other people. In previous semesters of your physics courses, you have been asked to write programs to simulate the behavior of physical systems. However, most of these assignments have likely been very structured, with step-by-step instructions on how to write the simulation. This project will give you the opportunity to use the techniques you’ve learned to do something closer to what actual scientists do: to use a simulation to answer a question that is interesting to you, without the steps specified in advance.
In this project, you will be provided with several simulations of systems that involve the physics principles you have been learning about. These simulations will include some of the basic physics involved and a description of what the code does, but not much else; they are meant for you to build on.
The examples can be found in the FYS2130 folder here: https://jupyterhub.uio.no/hub/login
You can choose to use one of these simulations, or use another simulation you’ve worked on (like an oblig), or write a new simulation if none of these seem especially interesting to you. You will then modify your chosen simulation to answer a specific question about the system.
In order to be successful in this project, you will have to do the following things:
- Choose one of the offered simulations and familiarize yourself with how it works; use another existing simulation; or write a new simulation yourself.
- Choose a question that you find interesting, which can be answered with that simulation
- Identify which assumptions you have to make or values you will need in order to answer the question, and look up information from articles or websites to justify those assumptions or values (Wikipedia is a useful source here).
- Play around with the simulation to answer the question. Here, you will need to substantively expand on the provided code (adding new physics, like forces or objects, for example); it’s not enough to just change a few of the variables but leave most of the code untouched. As a minimum, you need to implement a numerical method of higher order than currently used in the examples.
- Write up a short report, within the Jupyter Notebook, that includes a description of your problem, the code you used to investigate it (including descriptions of what the code does), and what you concluded from the investigation. You should also include 1-2 diagrams or pictures in order to show what the real example of the system looks like, and/or what the variables in your code actually mean.
Note that the goal of this project isn’t necessarily to generate a perfect simulation - every simulation makes assumptions and ignores things that are actually very important in real life. Instead, the goal is to add enough new physics to one of these simulations that you can use it to learn something that you didn’t understand before.
You are encouraged to do this project with a partner or in a small group, but can do it yourself if you wish. Note, however, that everyone must submit their own project report, and that no two project reports can be 100% the same. Therefore we encourage you to work together on finding and phrasing the research question, writing the code, and discussing the results; however, the actual writing of the report you should do on your own. Once you have completed your project, you will upload your project (in the form of a Jupyter notebook) to the designated area of Canvas.
The project will be graded pass/fail; a passing grade is needed in order to be able to take the final exam. The project will be evaluated based on a rubric. You must achieve at least 70% (14/20 points) on this rubric to have the project approved. You can also use this rubric as a baseline for the elements that must be present in your computational essay to pass.
You can expect to spend roughly 10 hours on this project, though you are welcome to spend more if you find the topic interesting (many students do!).
The deadline for submission is Thursday, 23.04., kl 12.
Two weeks before the deadline we will offer help sessions instead of the tutorial sessions (gruppetimer). We will only provide help to those students that bring along with them a short preliminary description of their anticipated project. This description does not need to be longer that half a page of written text, stating the problem that you plan to investigate, and how you plan to investigate it. All preliminary project descriptions will be reviewed and feedback will be provided.
There are five requirements, and each requirement is worth 4 points; therefore, you can receive up to 20 points in total.
|Requirement||Novice Competence||Developing Competence||Mastering competence|
|0 points <----------------------------------------------------------------> 4 points|
|Investigation question||There is no question for the investigation, or the question could be answered using the example code as given (without modification)||There is an investigation question, but it is not physical and/or is answerable by only tweaking variables in the example code||There is an investigation question, it is physically meaningful, and it requires significant additions to the example simulation to answer|
|Coding||The code either doesn’t work, is just the unmodified example, or does not implement a higher order numerical method||The code works, but (apart from the higher order numerical method) only small changes have been made (i.e., only some variables have been changed)||The code works and there are significant additions to the code (on top of the higher order numerical method), i.e., several new steps or blocks added to the simulation|
|Physics in the simulation||No additional physics has been added to the given simulation||Physics principles have been used to augment the simulation, but they are not clearly explained and/or they are not correct within the context of the simulation||Physics principles have been used to augment the simulation, it is clear how they were derived and applied in the code, and they are correct within the context of the simulation|
|Conclusion||There is no conclusion||There is a conclusion, but it only states the results and does not justify their meaning or reasonability||There is a conclusion which describes the results, interprets their meaning, uses them to answer the original question, and justifies their reasonability|
|Written report||There is no report, or report is uninformative and/or does not change the given notebook.||There is a report but it is sparse, does not adequately explain the code or steps of the investigation, and/or includes no pictures or diagrams||There is a report which clearly explains the steps of the investigation, fleshed out with at least 1 picture or diagram (beyond the pictures/diagrams given in the original simulation)|