Final Project Briefing#

Looking Ahead - Final Assessed Project#

As you hopefully know, this module is assessed by a final Python coding project. The idea is that you pick one of suggested possible projects from the list below and spend the remaining time until the final session to build it using Python and other tools that have been discussed previously (IDEs, debuggers) and that will be discussed in the remaining sessions (notably, AI).

You may also suggest your own ideas for the final project, but these need to be discussed and agreed with module contributors, to ensure their feasibility. The intended length of your final project code is around 200 lines of code. However, this is just a guide on the intended complexity of the project - you will not be assessed on the length at all.

You will be assessed on:

  1. How well you have achieved your chosen project objective (30%);

  2. How well you understand how your code works (50%);

  3. How well your code follows good coding practices (its readability and maintainability) (20%).

Final Assessed Project Ideas#

1. Numerical Simulation of Reaction Kinetics and Visualization of the Results#

Develop a program that simulates chemical reaction kinetics using differential equations to model the rate laws. Implement numerical methods like Euler’s method or the Runge-Kutta method to solve these equations over time. Allow users to input different reaction orders, rate constants, and initial concentrations. Visualize the concentration changes of reactants and products graphically, providing insights into how reaction conditions affect the kinetics.

2. Graphical Simulation/Demonstration of the Relationship Between Gas Temperature, Volume, and Pressure, and How This Arises from the Speed of Gas Molecules#

Create an interactive simulation that demonstrates the Ideal Gas Law (PV = nRT) by modeling gas molecules in a container. Use animations to show how changes in temperature affect molecular speeds and, consequently, pressure and volume. Allow users to adjust variables like temperature or volume and observe real-time changes in pressure, helping to visualize kinetic molecular theory principles.

3. Numerical Simulation of Orbital Mechanics with Three or More Masses#

Write a program that simulates the gravitational interactions between three or more celestial bodies (the n-body problem). Use Newton’s law of universal gravitation and numerical integration methods to compute the trajectories over time. Visualize the orbits in a graphical interface, and let users modify initial positions, velocities, and masses to see how these factors influence orbital dynamics.

4. Minimal Force Field Calculation of Molecule Energy and Geometry#

Develop a program that calculates the potential energy of a molecule using a simple force field model, such as the Lennard-Jones potential for non-bonded interactions and harmonic potentials for bonds and angles. Implement an optimization algorithm to find the molecular geometry that minimizes the total energy. Provide a way for users to input molecular structures and visualize the optimized geometries in 3D.

5. Simple Interface for a Public Chemical Database, Allowing Downloading Molecules Matching User-Selected Property or Structure Criteria#

Create an application that connects to a public chemical database like PubChem. Implement search functionality where users can input criteria such as molecular weight range, chemical formula, or substructure queries. Allow users to download molecular data files (e.g., in SMILES or SDF format) and display key properties and images of the molecules retrieved.

6. An arcade game with a Pharmacy or Chemistry Twist#

Design a classic arcade game with an educational intent. For example, create a “Molecule Invaders” game where the player controls a character that shoots photons at unstable isotopes descending from the top of the screen. Incorporate educational elements by including facts about the molecules or reactions involved. Implement game mechanics, scoring systems, and increasing difficulty levels.

7. Train a Simple Machine Learning Method to Recognize Handwritten Digits or Letters in Image Files#

Build a machine learning model using algorithms like k-nearest neighbors, support vector machines, or simple neural networks to recognize handwritten digits or letters. Use datasets such as the MNIST dataset for training and testing. Develop a user interface where users can input an image of a handwritten character, and the program predicts and displays the recognized digit or letter.

8. Balancing Chemical Equations Automatically#

Develop a script that can take an unbalanced chemical equation as input and output the balanced equation. Implement algorithms to balance atoms and charge, handling various types of reactions, including redox reactions in both acidic and basic conditions. Include a user-friendly interface where users can input equations and receive step-by-step explanations of the balancing process.

9. Periodic Table Explorer#

Create an interactive periodic table application that provides detailed information about each element. When users click on an element, display properties such as atomic number, atomic mass, electron configuration, oxidation states, and common uses. Include features like searching for elements by property, highlighting element groups, and visualizing trends across periods and groups.

10. Your Idea Here#

If you would like to develop a different project based on your own ideas, please run it by one of the course contributors. You will need to get approval for the project to be accepted.