Project Report Guide ==================== Collaboration -------------- You are free to discuss projects with your classmates. However, each project report must be solely your own work: it must be written by you in its entirety, including all computer code. Plagiarism will result in the zero score on a report, and possibly in additional sanctions (an F grade, an academic disciplinary action etc.). Using external resources ------------------------ There are two types of resources that may be relevant. First, there are plenty of books and websites devoted to Python programming. You should take advantage of this. If you have a programming question then in most cases a quick google search will get you an answer. Second, most of the projects you will be working on are based on mathematical problems and ideas that are described somewhere. However, you should not start your work on a project by doing a web or library search. The goal of each project is for you to explore a problem on your own. Description of your explorations and experimentation must be the main part of your project report. It is fine to include some background information on the project (properly referencing books and websites it comes from) but it is not necessary, and you can get a perfect score without it. Moreover, projects are open-ended so there is no "complete solution" you should be looking for. Have fun, explore, and put in the report what you came up with. Additional Python features -------------------------- We will not be able to cover all features of Python in this course. You are free (and encouraged!) to explore additional Python tools on your own and use them in your code. The only condition is that you must understand your own code and be able to explain it in detail if asked. You must not copy code snippets that you found somewhere and that somehow seem to be doing what you need. Report grading rubrics ---------------------- Project reports will be graded as follows. Each element listed in the table below will be graded on the A-F scale. These letter grades will be then converted into numerical scores (A = 4.0, A- = 3.67 etc.), multiplied by the corresponding weights, and added together. The resulting score will give the letter grade for the whole report. Bonus (if any) will be indicated by either 'X' or 'XX'. The 'X' bonus will increase the overall report grade to the next higher grade (from B to B+, from B+ to A- etc.). The 'XX' bonus will increase the report grade by two grades (e.g from B to A-). A report grade with a bonus may be higher than A, and will be indicated by either A+ or A++. +----------------------+-----------+--------------------------------------------+ | Element | Weight | What will be graded | +======================++==========+============================================+ | Introduction Section | 10% | |Intro| | +----------------------+-----------+--------------------------------------------+ | Conclusions Section | 10% | |Conclusions| | +----------------------+-----------+--------------------------------------------+ | Report Content | 30% | |Content| | +----------------------+-----------+--------------------------------------------+ | Python Code | 30% | |Code| | +----------------------+-----------+--------------------------------------------+ | Presentation | 20% | |Presentation| | +----------------------+-----------+--------------------------------------------+ | Bonus | | |Bonus| | +----------------------+-----------+--------------------------------------------+ .. |Intro| replace:: Quality of the narrative. .. |Conclusions| replace:: Quality of the narrative. .. |Content| replace:: Work done on developing the project. Your analysis, insights, observations, and interpretations. Quality of the narrative of the report. .. |Code| replace:: Quality of the Python code included in the report. Relevance of the code to the project. Code organization. Documentation of code by code comments. .. |Presentation| replace:: Organization of the report. Text formatting. Use of LaTeX to typeset mathematics. Formatting of code output. Quality of graphs and plots. .. |Bonus| replace:: Extra credit for excellent work that exceeds expectations. Report Style Guide ------------------ Report introduction ~~~~~~~~~~~~~~~~~~~ A report must begin with an introduction section. It should explain the project and the goals of the report in a way which is engaging and understandable to a student who has some math background, but does not take this course. Introduction should not be limited to a list of tasks you want to accomplish. While explaining the project use your own words, do not copy the project description. .. toctree:: :maxdepth: 0 Example <./Report_guide/report6> Report conclusions ~~~~~~~~~~~~~~~~~~ The final section of the report must summarize your results and conclusions. Report organization ~~~~~~~~~~~~~~~~~~~ Beside the sections with introduction and conclusions the body of the report should be logically organized into sections reflecting its content. References ~~~~~~~~~~ If you used books, articles, websites etc. while preparing the report they should be listed at the end of the report. Math formatting ~~~~~~~~~~~~~~~ Use LaTeX to format all mathematical symbols and formulas. .. toctree:: :maxdepth: 0 Example <./Report_guide/report4> Code structure ~~~~~~~~~~~~~~ Python code should be split into possibly short code cells that accomplish a single, well defined task. In particular you should not define several functions in one cell or define a function and execute it in the same cell. You should explain (even if very briefly) the purpose of each piece of code. As a rule, you should not have in a report two consecutive code cells without any text between them. .. toctree:: :maxdepth: 0 Example <./Report_guide/report7> Code sequencing ~~~~~~~~~~~~~~~ All Python code in the report must be entered in such order that it can be read and executed sequentially, from the beginning to the end of the report. For example, you should not use a Python function in your report prior to defining this function. .. toctree:: :maxdepth: 0 Example <./Report_guide/report5> Code comments ~~~~~~~~~~~~~ Code comments should be used to explain workings of the code. .. toctree:: :maxdepth: 0 Example <./Report_guide/report9> Execution errors ~~~~~~~~~~~~~~~~ All code included in your report must work. Do not submit reports with execution errors. .. toctree:: :maxdepth: 0 Example <./Report_guide/report8> Output size ~~~~~~~~~~~ Your report should contain only code output that serves some purpose and that you expect someone to read. As a general rule, do not print more than 30 lines of output unless you have a good reason for it. .. toctree:: :maxdepth: 0 Example <./Report_guide/report1> Output formatting ~~~~~~~~~~~~~~~~~ Format code output in a way that makes it easy to read. .. toctree:: :maxdepth: 0 Example <./Report_guide/report3> Graphs and plots ~~~~~~~~~~~~~~~~ Graphs and plots must be well formatted. They should have titles and, if appropriate, axis labels, a legend etc. .. toctree:: :maxdepth: 0 Example <./Report_guide/report2>