This lesson is still being designed and assembled (Pre-Alpha version)

Lesson Title

This lesson by the Molecular Sciences Software Institute(MolSSI) teaches users fundamentals of scientific programming used in computational molecular sciences. The material is designed for undergraduate students, or other early career students, who have no prior programming experience. To see the full MolSSI’s education mission statement, please see here.

This lesson is under development, please report issues to the GitHub repository


Students should be familiar with opening the Terminal window and creating and navigating files in bash.


Setup Download files required for the lesson
00:00 1. Object Oriented Programming What is Object Oriented Programming?
Why should I use Object Oriented Programming?
00:00 2. Introduction What are Design Patterns?
00:00 3. Adapter Design Pattern How can we utilize pre-existing code without modifying it?
00:30 4. Factory Design Pattern How can a method or class defer instantiation to subclasses?
01:00 5. Factory Design Pattern Second Example How can a method or class defer instantiation to subclasses?
01:30 6. Facade Design Pattern How can we simplify the interface to a subsystem?
02:00 7. Observer Design Pattern How can an object notify its own state to an open-ended number of objects?
02:30 8. Composite Design Pattern How to compose objects into tree structures?
How to define a common interface for branches and leaves within a tree?
03:00 9. Visitor Design Pattern How to separate the methods from the objects that use them?
03:30 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.