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

Object Oriented Programming and Design Patterns

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. Introduction What are Design Patterns?
00:00 2. Object Oriented Programming What is Object Oriented Programming?
Why should I use Object Oriented Programming?
00:00 3. Encapsulation What is encapsulation?
Why should I use encapsulation in my code?
00:00 4. Data Abstraction What is Data Abstraction?
Why should I care about Data Abstraction?
00:00 5. Inheritance What is Inheritance?
Why should I use Inheritance in my code?
00:00 6. Abstract Classes What are Abstract Classes?
Why should I use Abstract Classes?
00:00 7. Polymorphism What is Polymorphism?
00:00 8. Adapter Design Pattern How can we utilize pre-existing code without modifying it?
00:30 9. Factory Design Pattern How can a method or class defer instantiation to subclasses?
01:00 10. Visitor Design Pattern How to separate the methods from the objects that use them?
01:30 11. Factory Design Pattern Second Example How can a method or class defer instantiation to subclasses?
02:00 12. Facade Design Pattern How can we simplify the interface to a subsystem?
02:30 13. Observer Design Pattern How can an object notify its own state to an open-ended number of objects?
03:00 14. Composite Design Pattern How to compose objects into tree structures?
How to define a common interface for branches and leaves within a tree?
03:30 Finish

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