App. Challenge (15%)
1 Applications Challenge
1.1 Applications segment of the course
In Week 7, I will release details about the Applications Challenge. In this challenge, you will work in groups to develop a Pythonic solution to a problem in science. All groups will tackle the same challenge.
By the end of Week 8, submit your group’s solution as a Jupyter Notebook. Make good use of the many examples provided in the Applications section of the Python website. Explore the various topics in this knowledge base to help you shape, refine, and strengthen your solution.
1.2 Significance & value of the Applications Challenge
The Applications Challenge is designed to serve several key objectives:
Application of Fundamental Skills: This is your initial opportunity to apply the basic Python skills acquired in the first half of the semester.
Short Burst, Goal-Oriented Learning: The Applications Challenge is structured as a short project offering practical experience in problem-solving. With a clear objective (solving a specific problem), you can concentrate on applying your skills to develop a solution.
Collaboration and Warm-Up: It provides an excellent platform to familiarise yourself with your group members and develop effective collaboration strategies. You will also get to practice using GitHub for collaborative work.
Think of the Applications Challenge as a ‘Group Project with Training Wheels.’ Completing the Applications Challenge will equip you with the confidence and readiness to embark on your own Group Mini Project.
2 Working on the Applications Challenge
2.1 Practicalities
Each group will receive a new GitHub Group Repository from the Applications Challenge onwards. You must use this to develop and refine your solution to the challenge collaboratively.
2.2 You are not alone
Dedicated Group Mentor: For the duration of the Applications Challenge (and Mini Group Project), each group will be allocated a Group Mentor. This mentor is your go-to resource for guidance and support. You and your mentor can choose a communication method (such as Face-to-Face meetings, NBReview, WhatsApp, etc.) that best suits your schedules.
Support in Lectures & Tutorials: From Week 7 to Week 10, all instructors will be available during lectures and tutorials. While there won’t be conventional lectures, we will be present to provide advice and assistance with both the Applications Challenge and the Mini Group Project.
2.3 Additional Considerations
- Preparation for the Mini Group Project: Use the Applications Challenge as a training ground for the upcoming Mini Group Project. You must start discussing and thinking of the Mini Group Project with your group members while working on the Applications Challenge.
3 Grading
4 Application Challenge Notebook Rubrics
| Criterion | Needs Improvement | Satisfactory | Good | Accomplished | Distinguished |
|---|---|---|---|---|---|
| Correctness of Scientific and Logical Conclusions (30%) | ■ Conclusions are inaccurate ■ Conclusions have fundamental logical errors |
■ Conclusions are mostly inaccurate ■ Conclusions have significant logical errors |
■ Conclusions are generally accurate ■ Conclusions have some logical errors |
■ Conclusions are mostly accurate ■ Conclusions have minor logical errors |
■ Conclusions are accurate ■ Conclusions are logically impeccable |
| Organisation and Clarity of Notebook (30%) | ■ Ideas are disorganised ■ No context provided ■ Explanations are missing or incomprehensible ■ Rationale for the chosen solution is missing or incomprehensible ■ Little to no attempts at formatting |
■ Ideas are partially organised but with significant logical gaps ■ Insufficient context provided ■ Explanations are present but difficult to understand ■ Rationale for the chosen solution is presented but difficult to understand ■ Formatting is inconsistent or messy |
■ Ideas are mostly organised with some logical gaps ■ Some context provided ■ Explanations are present but require some effort to understand ■ Rationale for the chosen solution is elaborated but requires some effort to understand ■ Formatting is acceptable |
■ Ideas are clearly organised with minor logical gaps ■ Sufficient context provided ■ Explanations are present and can be understood ■ Rationale for the chosen solution is elaborated and can be understood ■ Formatting is mostly neat |
■ Ideas are clearly organised with no logical gaps ■ Sufficient and clear context provided ■ Explanations are clear and can be understood effortlessly ■ Rationale for the chosen solution is well elaborated and can be understood effortlessly ■ Formatting is neat and clean |
| Code Quality and Skills (30%) | ■ Variable/function names are arbitrary and inconsistent ■ Comments are missing or superficial ■ Abstraction is missing or superficial ■ Unnecessary code is written instead of using suitable packages ■ Programming structures are not used or are heavily under utilised ■ Referenced code is used without citation |
■ Variable/function names show some meaning and consistency ■ Comments are present but minimally aid in understanding ■ Some abstraction is implemented but with significant lapses ■ Some unnecessary code is written but suitable packages are used occasionally ■ Programming structures are used but still under utilised ■ Referenced code is highlighted but not cited |
■ Variable/function names are generally aptly named and consistent ■ Comments are generally present and aid understanding ■ Abstraction is implemented with some lapses ■ Suitable packages are used with some lapses ■ Suitable programming structures are used with some lapses ■ Referenced code is highlighted and cited appropriately |
■ Variable/function names are mostly aptly named and consistent ■ Comments are mostly present and support understanding ■ Abstraction is mostly implemented with minor lapses ■ Suitable packages are mostly used with minor lapses ■ Suitable programming structures are used with minor lapses ■ Referenced code is highlighted and cited appropriately with some explanations |
■ Variable/function names are aptly named and consistent ■ Comments are strategically used to enhance understanding ■ Abstraction is implemented effectively with no lapses ■ Suitable packages are used effectively with no lapses ■ Suitable programming structures are used effectively with no lapses ■ Referenced code is highlighted and cited appropriately with clear explanations |
| Creativity – Extending Beyond the Knowledge Base (10%) | ■ Replicates basic examples with no innovation | ■ Uses standard approaches with little innovation | ■ Applies standard approaches in new context | ■ Creates cleaner solutions using Pythonic idioms or options | ■ Creates cleaner and impactful solutions using Pythonic idioms or options |
■
Application Challenge Additional Recommendations
| ■ Use NumPy vectorised operations instead of loops | ■ Use list comprehensions or built-in functions over manual looping | ■ Abstract repeated code into functions or loops | ■ Handle potential edge cases in your code | ■ Cite and explain any external or borrowed code |
| ■ Import all packages/modules at the start of your notebook instead of scattering them throughout your code | ■ Avoid hard-coding values and paths | ■ Remove unused or unnecessary code and documentation | ■ Use error handling in your code | ■ Include concise docstring for every function you write |
| ■ Use descriptive and meaningful names for variables and functions | ■ Avoid excessive and unnecessary comments | ■ Proofread documentation for clarity and consistency | ■ Avoid redefining variables or functions unnecessarily | ■ Structure your submission folder by separating your code and placing data and output files in dedicated subfolders |
| ■ Choose appropriate plot types and axis scaling | ■ Label all axes, titles, and legends on your plots | ■ Include units in axis labels | ■ Avoid cluttered plots | ■ Add annotations to your plots to highlight key results |
| ■ Justify all key parameter choices | ■ Discuss assumptions and limitations | ■ Provide scientific insights into your results | ■ Discuss interpretation and implications of your results | ■ Specify and document random seeds for scientific reproducibility |
Note: Please be careful not to over-enthusiastically ‘creative’ by borrowing code or using chatGPT. Remember, anything you submit can be brought up in the individual viva.
5 Submitting work
- You must submit a working Jupyter Notebook by the deadline to the relevant folder on CANVAS.
- Your notebook should be in a state that anyone can run it. This means that you must not hardcode any paths and that the paths should be OS agnostic.
- Please also submit any additional files necessary to run the notebook.