Appendix 4: Final Project Briefing#
Looking Ahead - Final Assessed Project#
As you 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 workshop to build it using Python and other tools that have been discussed previously (IDEs, debuggers) and that will have been discussed in the remaining topics (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-500 lines of code. However, this is just a guide on the intended complexity of the project - we are not aiming to asses you on the length.
Refer to the assessment rubrics on the Moodle page for definitive guidance.
Important
Your final project should be your own work and demonstrate independent ambition and creativity; simply copying or closely mimicking existing code or projects will not be viewed favorably.
Final Assessed Project Ideas#
1. Numerical Simulation of Reaction Kinetics#
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 of Ideal Gases#
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. Interface for a Public Chemical Database#
Create an application that connects to a public chemical database like PubChem or PDB. 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. Incorporate educational elements, for example by including facts about the molecules or reactions involved. Implement relevant game mechanics such as scoring systems and increasing difficulty levels.
7. Train a Simple Machine Learning Model#
Build a machine learning model using algorithms like k-nearest neighbors, support vector machines, or simple neural networks to recognize handwritten numbers 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 number or letter. An example stretch could be to add recognition of sentences or equations.
8. A Curve Fitting Tool for Scientific Data#
Create a program that allows users to input experimental data points and fit them to various types of curves (linear, polynomial, exponential, etc.). Implement optimization techniques to find the best fit parameters and provide visualizations of the data points along with the fitted curve. Include functionality for users to evaluate the goodness of fit using metrics like R-squared or mean squared error.
9. Chemistry Virtual Library Helper#
From the Moodle site for this module you can download a CSV file with data on nearly 8000 compounds that are stored in the University of Nottingham’s Chemical Compound Collection. Users can request samples from this library for in vitro screening, but most users only want a subset of the molecules, as testing all 8000 would be too expensive. Build a Python tool that can help users choose a subset of these molecules. The most important requirement is that the tool can select a diverse subset of the molecules, in which no two have very similar predicted chemical characteristics. The similarity between two molecules can be defined by their Tanimoto score which can be calculated from the fingerprint data that is included in the data file. In addition, aim to provide additional filtering characteristics that users can apply to control the list of recommended molecules. For example, you may add fuctionality so they can filter molecules by molecular weight range, presence or absence of certain elements, etc.
10. Protein Word Search#
This is largely a fun project. Protein sequences are often specified using the 1-letter codes for the amino acids. This features every letter of the alphabet, except for B, J, O, Q, U, X, and Z. This means that there is a chance that, if you scan the sequence of a protein, you will find a legitimate English word embedded in it (or indeed, a legitimate word in some other language). Your task will be to build a Python tool that can scan a protein sequence for valid words in a language of your choice. You will need to obtain a suitable list of known words for this. Then your task will be to apply this tool to a collection of about 573,000 protein sequences in a file that you can download from the Moodle site for the module, and identify the longest words you can find in this collection. A major challenge in this project will be to design the code to be as efficient as possible.
11. Nanoparticle Image Analysis#
The aim of this project is to build a Python tool that can scan microscope images of tissue sections and count the number of drug nanoparticles that are present (they show up as small, very dark, dots). From the Moodle site for the module you can download a folder with test images where the true number of nanoparticles present is known. You can use any Python image-processing package of your choice for this project. It is imperative that you make your Python tool as accurate as possible.
12. Drug Selection Aid#
From the Moodle site for this module you can doewnload a drug performance dataset, which includes data on the properties of 470 different drugs for the treatment of 37 different conditions. For each condition/drug pair, there is data regarding a variety of performance indicators, such as cost, effectiveness, ease of use, form (tablet, capsule, etc.). Build a Python tool that can help with the process of selecting the most appropriate drug for a given patient, according to their preferred balance of performance measures. For example, for one patient cost may be more important than anything else, wheras for another patient ease of use might be equally important as cost, and they really would perfer a capsule if possible.
13. NMR Signal Predictor for Simple Molecules#
Design a rule-based tool that predicts approximate ¹H NMR chemical shift regions, splitting patterns, and integration for simple organic molecules entered as a simplified structure or fragment list. It does not need to be fully realistic; even a basic version that handles alkyl, aromatic, alcohol, aldehyde, and neighboring proton effects would be very educational. Students would practice representing molecules and translating chemical rules into code. Example stretch goal: also predict peak splitting from H-H coupling based on the submitted structure.
14. Crystal Lattice or Unit Cell Builder and Visualizer#
Develop a program that constructs and displays simple crystal lattices or unit cells in 2D and/or 3D. Users could choose lattice types, adjust unit cell dimensions, and place atoms or ions at defined positions, then visualize the repeating structure. More advanced versions might calculate coordination numbers, packing efficiency, or interatomic distances (and bulk density!). This adds a materials chemistry angle and requires geometry, visualization, and user interaction.
15. 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.