👩💻 Software Development for Self-driving Labs
Elevate your software development skills in the context of self-driving laboratories. This asynchronous, remote course introduces software development concepts and best practices and productivity tools such as integrated development environments (IDEs) with VS Code, unit testing with pytest, continuous integration via GitHub actions, and documentation creation using Sphinx and Read the Docs. You’ll also learn to deploy materials discovery campaigns on cloud servers or dedicated hardware and run offline simulations using cloud hosting.
🔑 Recommended Prerequisites
The recommended prerequisite for this course is Introduction to AI for Discovery using Self-driving Labs
🎯 Learning Outcomes
Enumerate and explain software development best practices along with their corresponding benefits, demonstrating understanding and recall
Identify and evaluate various productivity tools for developers, highlighting how they enhance efficiency, to demonstrate analytical and selection skill
Compose and execute unit tests using pytest to validate code functionality, demonstrating application and analysis skills in software testing
Generate comprehensive Python documentation utilizing Sphinx and Read The Docs, illustrating proficiency in documentation practices and tools
Design and deploy a continuous integration (CI) pipeline using GitHub Actions, showcasing the ability to integrate and automate software development processes
Construct a reusable project template using PyScaffold, demonstrating skills in enhancing project setup efficiency and standardization
Initiate and manage a cloud or local hardware server to execute a materials discovery campaign, demonstrating capabilities in server management and deployment for scientific computing
Set up and execute an offline simulation on a cloud hosting service, illustrating the ability to leverage cloud resources for complex computational tasks
🛠️ Competencies/Skills
Software development literacy
Version control
Unit testing
Documentation
Compute hardware
Cloud computing
🧩 Modules
Each module is intended to take approximately 3-4 hours, assuming that the recommended prerequisites have been met.
Module Name |
Topics |
Learning Outcomes |
---|---|---|
Deep dive into Git and GitHub |
|
|
Setting up VS Code |
|
|
Debugging in VS Code |
|
|
Unit testing |
|
|
Automated documentation |
|
|
Continuous integration (CI) |
|
|
Project templates |
|
|
Launching a free cloud server |
|
|
On-demand cloud simulations |
|
|
⚖️ Course Assessments and Grading Schema
Each student is required to complete various quizzes and GitHub Classroom assignments. The course is structured into an orientation module followed by six subsequent modules. The course is graded on a pass/fail basis with 70% as the threshold for passing. Here is the breakdown of the points for each part of the course:
- 🧭 Orientation Module: Worth 15 points.
- 📚 Modules 1-6: Each includes:
- 🧭 A guided notebook tutorial (ungraded)
- 📓 A knowledge check (graded, 5 points)
- 🛠️ A GitHub Classroom assignment (graded, 10 points*)
*The final module's GitHub Classroom assignment is worth 30 points.
Note that partial points are available on certain assignments.
👤 Course developer(s)
Sterling Baird, PhD Materials Science and Engineering (Acceleration Consortium)