MolSSI’s education techniques and practices are modeled after The Software Carpentries style to teaching novice software best practices. This approach teaches subjects that not only increase a student’s scientific capability and efficiency, but also his/her future marketability in both scientific and non-scientific fields. The MolSSI promotes SWC-style lessons by combining open-classroom and cognitive-map learning. We engage large portions of the CMS community (and beyond) through demographically and geographically diverse workshops aimed at both novice and intermediate learners.
MolSSI instructors introduce students to the Open Source Initiatives description of open-source software along with the open-source software lifecycle best practices to ensure code is reliable and reproducible while decreasing long-term maintenance requirements and increasing viability. The majority of these best practices come from observing other successful organization such as the diverse NumFocus projects. We encourage interoperable designs both within a given programming language and across programming languages. This includes language binding and language agnostic data abstractions (JSON, XML, HDF5, NetCDF, etc).
MolSSI offers a number of education workshops for students and post docs in the computational molecular sciences. These workshops cover a range of material, from basic scripting to writing programs which use MolSSI Best Practices.
See below for an explanation of each workshop type, as well as links to workshop materials.
Long Workshops
MolSSI Software Summer Schools are large 50-60 student educational schools that last for two weeks. The curriculum focuses on best practices in software engineering – version control, continuous integration, data management, programming paradigms, and more – to promote reproducibility and reliability in research as well as aspects of modern high-performance computing architectures and code optimization.
The software summer school takes place biennially, with the next occurring in summer of 2019. For more information, check our Software Summer School page.
One to Two Day Workshops
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.
The workshop covers the following topics:
- 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
Materials for this workshop can be completed in person, or online in our self paced modules.
Note: Online workshop lessons are under development and not necessarily complete.
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 host this project on GitHub.
This course includes the following topics:
- Conda and Python environments
- Structuring a Python project
- Version control using git
- Online code repositories such as GitHub
- Unit testing and the PyTest testing framework
- Code coverage
- Continuous integration tools
- Documentation tools
Materials for this workshop can be completed in person, or online in our self paced modules.
Note: Online workshop lessons are under development and not necessarily complete.
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.
These tutorials include the following topics:
- Encapsulation
- Data Abstraction
- Inheritance
- Polymorphism
- Factory Design Pattern
- Adapter Design Pattern
- Facade Design Pattern
- Observer Design Pattern
Materials for this workshop can be completed in person, or online in our self paced modules.
Note: Online workshop lessons are under development and not necessarily complete.