App. Challenge (15%)

Quick Summary
Type Weight When Deliverable
Group 15% Weeks 7 & 8 Jupyter Notebook with a solution to a problem.
Submitted to CANVAS.
Submit by the end of Week 8.

1 Applications Challenge

1.1 Applications segment of the course

In Week 6, I will release the second ‘Applications’ segment (Part 3) of the course material. This section will comprise of two things:

  1. Knowledge base: A comprehensive knowledge base comprising many diverse examples of how Python is applied in science. Some of the topics that will be covered in this knowledge base include:
  • Numerical methods
  • Random Numbers
  • Statistics
  • Numerical Modelling
  • Curve Fitting
  • Data Processing
  • Data Acquisition
  • Image Processing
  • Advanced Plotting
  1. Challenge Tasks: a curated assortment of challenges based on the topics in the knowledge base.

1.2 What is the Applications Challenge

In the Application Challenge, you will work as a group to:

  1. Select a Challenge Task: Choose one challenge from the provided list that resonates with your group’s interests or curiosities.
  2. Develop a Solution: By the end of Week 8, submit your group’s solution to the chosen challenge. This submission should be in the format of a Jupyter notebook.
  3. Utilise the Knowledge Base: Engage with the various topics in the knowledge base to inform and enhance your solution.

1.3 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

# Criterion Needs Improvement Satisfactory Good Accomplished Distinguished
1 Correctness of Scientific and Logical Conclusions
(30%)
Conclusions are inaccurate and demonstrate fundamental errors. Conclusions show limited accuracy and significant logical flaws. Conclusions are generally accurate, with some logical errors. Conclusions are mostly accurate with minor logical flaws. Conclusions are scientifically accurate and logically impeccable.
2 Organisation and Clarity
(language agnostic)
(30%)
Poor organisation, very unclear logic and structure.
– The rationale of the algorithm/solution used is missing or incomprehensible to the target audience.
– Ideas are disorganised to the point that it is extremely difficult to follow the thesis of the notebook.
– Explanation and code chunks are presented in a manner that is extremely difficult read and understand.
– Little to no attempt has been made to format the notebook. Formatting severely impedes comprehension.
Some organisation, but lacks clear logic and structure.
The rationale of the algorithm/solution used is presented but at a level that strains the target audience.
There is an attempt at organising ideas, but there are many leaps in logic, making it difficult to follow the thesis of the notebook.
Explanation and code chunks are incongruent, making the flow abrupt and the notebook difficult to read.
Overall formatting is inconsistent, messy or distracting thereby impeding comprehension.
Adequately organised, clarity and logic can be improved.
The rationale of the algorithm/solution used is elaborated at a level the target audience can follow with effort.
Clear organisation of ideas with some significant gaps in logic, making it a bit difficult to follow the thesis of the notebook.
Explanations and code are in large chunks, making the flow of the notebook abrupt at times.
Overall formatting is acceptable with minor impediments to comprehension.
Well-organised, clear concepts with minor logical flaws.
The rationale of the algorithm/solution used is elaborated at a level the target audience can follow and understand.
Clear organisation of ideas with some minor gaps in logic, but still easy to follow the thesis of the notebook.
Explanations and code is separated appropriately to enhance the flow of the notebook.
Overall formatting is mostly neat but still very comprehensible.
Exceptionally well-organised, ideas and concepts are clear and logically structured.
The rationale of the algorithm/solution used is elaborated at a level the target audience can follow and understand effortlessly.
Clear organisation of ideas with no gaps in logic, making it effortless to follow the thesis of the notebook.
Explanations and code is separated appropriately to enhance the flow of the notebook.
Overall formatting is neat and enhances comprehension.
3 Code Quality and Python Skills
(30%)
Code is poorly documented, hard to understand, and lacks Pythonic sense.
– Variables/functions are named arbitrarily (e.g. var1, var2 etc.) to the detriment of readability.
– The comments in the code are superficial or missing at strategic points, causing the target audience to struggle to comprehend the code.
– Little or superficial attempts at abstraction of code. Multiple copies of code chunks with obvious potential for abstracting.
– Unnecessary development of code is demonstrated instead of using a suitable Python package. Programming structures (e.g. list comprehension) are heavily under-utilized.
– Source code is borrowed and used indiscriminately, bordering on plagiarism.
Code is somewhat documented but has significant errors or lacks Pythonic practices.
Variables/functions names have some sort of consistency but does not enhance readability (e.g. empty_list, storage_list1, differential_equation_1).
Comments are mediocre, but an effort to enhance the comprehension of the target audience is evident.
An attempt at abstraction of code is evident however, many obvious lapses are present.
Unnecessary development of code is demonstrated instead of using a suitable Python package. Programming structures (e.g. list comprehension) are somewhat used but still under-utilized.
Any source code that is borrowed is highlighted.
Code is readable, but lacks some clarity or makes basic Python errors.
Variables/functions are aptly named (e.g. A_lst, dHdt, dXdt()). However, there are several inconsistencies, and the organisation of some variables are messy.
Comments in the code aid rather than hinder the organisation and understanding of the code by the target audience
Abstraction of code is mostly implemented.
Suitable packages and functions are appropriately used without reinventing the wheel. Suitable programming structures (e.g. list comprehension) are utilized but with some lapses.
Any source code that is borrowed is clearly highlighted and cited.
Code is clear and well-documented with good use of basic Python constructs (e.g., loops, conditions).
Variables/functions are aptly named (e.g. A_lst, dHdt, dXdt()) to maximise readability with minor lapses or inconsistencies. Variables are also grouped accordingly (i.e. constants are defined together, functions defined together etc.)
Comments in the code enhance the clarity of the code to the target audience.
Abstraction of code is implemented whenever possible with some lapses.
Suitable packages and functions are appropriately used without reinventing the wheel. Suitable programming structures (e.g. list comprehension) are utilized but with some lapses.
Any borrowed source code is clearly highlighted, cited, and somewhat explained.
Code is exceptionally clear, well-documented, and demonstrates advanced Python skills (e.g., list comprehensions, lambda functions).
Variables/functions are aptly and consistently named (e.g. A_lst, dHdt, dXdt()) to maximise readability. Variables are also grouped accordingly (i.e. constants are defined together, functions defined together etc.)
Comments in the code is strategically used to enhance the clarity of the code to the target audience. They also clearly demonstrate an understanding of the use of code by the authors.
Abstraction of code is implemented whenever possible with minimal/insignificant lapses.
Suitable packages and functions are appropriately used without reinventing the wheel. Suitable programming structures (e.g. list comprehension) are well utilized.
Any borrowed source code is clearly highlighted, cited, and well explained.
4 Creativity: Extending Beyond the Knowledge Base
(10%)
Lacks creativity, does not extend beyond basic examples provided. Minimal creativity, uses standard approaches with little innovation. Displays some creativity, using basic functions or data structures in slightly new contexts. Shows significant creativity, using Pythonic idioms (e.g., list comprehensions or dictionary expressions) and options (e.g., as Matplotlib customisation) for cleaner solutions. Shows exceptional creativity, using Pythonic idioms (e.g., list comprehensions or dictionary expressions) and options (e.g., as Matplotlib customisation) for cleaner and highly impactful solutions.

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.

4 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.
Back to top