MolSSI Education Resources

MolSSI offers 1-2 day workshops as well as online tutorial materials. All 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

    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.

    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

    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

    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

    Getting Started in Computational Chemistry

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

    View Materials | View GitHub Repository

    Parrallel 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 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 Materials | View GitHub Repository