MolSSI Education Resources

MolSSI offers 1-2 day workshops as well as online tutorial materials. Most tutorials are hosted on GitHub in the MolSSI Education GitHub organization. Workshops and materials here may still be under development. Outside contribution is welcomed and encouraged!

Python Data and Scripting Workshop

Description: The MolSSI Python Data and Scripting workshop is designed for students who are currently involved in, or planning to start computational chemistry research. This workshop is designed to help students develop practical programming skills that will benefit their undergraduate research, and will take students through introductory programming and scripting with Python to version control and sharing their code with others. NO prior programming experience is required.

Workshop Topics
  • Basic Python syntax and control structures
  • Reading and writing files
  • File manipulation and parsing
  • Analyzing and graphing data
  • Writing functions
  • Creating command line programs from Python scripts
  • Basic testing using PyTest
  • Version control with git
  • Sharing code on GitHub
  • View Workshop Materials | View GitHub Repository| View Workshop Recording

    Python Data and Scripting for Biochemists and Molecular Biologists

    Description: The Python Scripting for Biochemistry and Molecular Biology Workshop is designed for students and faculty who are interested in getting started with coding as part of their teaching and research. The workshop provides hands-on python coding experience using examples relevant to biochemists. It includes parsing PDB files, data analysis, linear regression, nonlinear regression, and plotting data. No prior programming experience is necessary.

    Workshop Topics
  • Basic Python syntax and control structures
  • Reading and writing files
  • File manipulation and parsing
  • Analyzing and graphing data
  • Pandas dataframes
  • Linear fitting.
  • View Workshop Materials | View GitHub Repository

    Data Analysis using Python

    Description: The Python Data Analysis Tutorials are short stand-alone tutorials, which build on and expand the Python Scripting Workshop. These lessons include introductions to specific libraries including NumPy and pandas.

    Workshop Topics
  • Features of NumPy Arrays
  • Introduction to Data Analysis using Pandas
  • View Workshop Materials | View GitHub Repository

    Scientific Data Visualization Using Python

    Description: This workshop covers scientific data visualization using the Python programming language.

    Workshop Topics
  • Creating plots using matplotlib
  • Plot customization
  • Creating interactive plots using plotly
  • View Workshop Materials | View GitHub Repository| View Workshop Recording

    Best Practices Workshop

    Description: Our best practices workshops introduce and promote MolSSI best practices to workshop attendees. This workshop is designed for graduate students, post docs, or advanced undergraduate students. In this course, students create a Python package using best practices and the MolSSI CookieCutter, and host this project on GitHub. Although this workshop is taught using a Python example, the concepts are broadly applicable to software projects in other languages.

    Workshop Topics
  • Conda and Python environments
  • Structuring a Python project using the MolSSI CookieCutter.
  • Version control using git
  • Python Coding Style
  • Online code repositories such as GitHub
  • GitHub collaboration
  • Unit testing and the PyTest testing framework
  • Code coverage
  • Continuous integration tools
  • Documentation for Python packages using Sphinx.
  • View Workshop Materials | View GitHub Repository

    Object Oriented Programming and Design Patterns

    Description: The Object Oriented Programming (OOP) and Design Patterns tutorials provide a brief introduction to good software design principles. These tutorials are designed for graduate students, post docs, or advanced undergraduate students. Students will develop python modules using OOP principles and software design patterns.

    Workshop Topics
  • Encapsulation
  • Data Abstraction
  • Inheritance
  • Polymorphism
  • Factory Design Pattern
  • Adapter Design Pattern
  • Facade Design Pattern
  • Observer Design Pattern
  • View Workshop Materials | View GitHub Repository

    Python Type Hints, Dataclasses, and Pydantic

    Description: Do more with structured and named data than putting everything into a Dictionary. Learn about Python type hints for arguments and variables to tell users what to expect. Structure data into Dataclasses for functional named data handlers. Leverage validation and the powerful third party tool pydantic to handle complex schema and automatic validation.

    Workshop Topics
  • Type hints in native Python
  • Python Dataclasses for structured data organization
  • Data validation fundamentals
  • Data validation with Pydantic
  • Nested data models in Pydantic
  • View Workshop Materials | View GitHub Repository| View Workshop Recording

    Parallel Programming

    Description: These lessons introduce basic parallelization techniques and best practices. There are several examples that cover the topic of distributed-memory parallelization using the Message Passing Interface (MPI) and shared-memory parallelization using OpenMP. Examples are provided both in C++ and in Python using the mpi4py wrapper. Both the MPI and OpenMP tutorials begin with simple “Hello World!” codes and culminate in the parallelization of a simple molecular dynamics code.

    View Workshop Materials | View GitHub Repository

    Fundamentals of Heterogeneous Parallel Programming with CUDA C/C++

    Description: The Fundamentals of Heterogeneous Parallel Programming with CUDA C/C++ course overviews the basic principles of CUDA platform and focuses on the interrelation between various aspects of Graphics Processing Unit (GPU) architecture and software design. The course features numerous examples and exercises and is designed for the audience at the beginner level with minimum background in C and C++ programming, bash and command-line interface.

    View Workshop Materials | View GitHub Repository

    Getting Started in Computational Chemistry

    Description: A curated list of tutorials for common computational skills that students need to get started in computational chemistry research such as use of the terminal, text editors, and remote computing resources.

    View Workshop Materials | View GitHub Repository

    Quantum Mechanics Tools

    Description: The qm-tools workshop introduces several types of quantum chemistry calculations a student might use, including geometry optimizations, inter- and intra-molecular potential energy scans, and energy calculations. Some basic file parsing and data analysis is also discussed.

    View Workshop Materials | View GitHub Repository

    Molecular Mechanics Tools

    Description: The mm-tools workshop introduces molecular dynamics simulations using the software OpenMM, and analysis of simulation results using MDTraj. The theoretical background of MD simulations are discussed, and students simulate and analyze alkane and a simple protein system. This workshop also covers putting code on GitHub and includes an exercise where students implement a new software feature and submit a pull request.

    View Workshop Materials | View GitHub Repository| View Workshop Recording

    ab initio MD

    Description: The ab initio MD workshop provides a hands-on introduction to concepts and techniques in computational molecular science through the development of a simple molecular dynamics program using forces derived from ab initio calculations. Students compute potential energy surfaces for a simple diatomic molecule using the electronic structure package psi4, implement and validate a velocity Verlet algorithm, then simulate and analyze the vibrational motion of their diatomic system for several different levels of theory. The workshop concludes with small group projects and presentations.

    View Workshop Materials | View GitHub Repository
    Here are a number of educational resources that are external to the MolSSI, though many of these have been developed by MolSSI Software Scientists, MolSSI Associates, and other partners.

    Q-Chem for Teaching

    Description: Instructions how to use Q-Chem for teaching via the IQmol interface, as well as a selection of computational assignments that can be given to students as homework or in-class exercises. The list of labs includes 10 labs covering different types of quantum-chemical calculations. We hope that this list will continue to grow and would like to encourage the community to submit new computational labs for sharing.

    For low-volume users, we offer a free service: such users can submit short Q-Chem jobs (up to 5 min) to the Q-Chem server without purchasing a license (IQmol is automatically configured for the submission to the Q-Chem server).

    View Workshop Materials

    Psi4 Education

    Description: Computational Labs Using Free Software Computational chemistry is an increasingly important part of modern research, and yet it is often not part of the typical undergraduate or graduate curriculum. Fortunately, the availability of free software like PSI4 and WebMO lowers the barrier to introducing computational chemistry laboratory modules. The labs below were created using only free software and are available for use in your classes.

    View Workshop Materials

    Deep Learning for Molecules and Materials

    Description: This textbooks covers deep learning for molecules and materials with code examples and theory. It starts from ML and works up to modern methods in deep learning

    View Workshop Materials

    ChemCompute

    Description: Computational chemistry software for undergraduate teaching and research. Instructors can request allocations and access a range of computational chemistry software for their classes

    View Workshop Materials