CMSE 802 serves graduate students, especially PhD students, who are not primarily trained as software engineers but who must build software to complete meaningful research.
This course should feel like a dissertation writing seminar, but for research software:
- grounded in each student’s own research context
- focused on sustained project progress
- structured around practical feedback, iteration, and reflection
The central commitment is that students leave the course with software that genuinely advances their research, not just with completed assignments.
New PhD Students, Masters Students and Advanced Undergraduate students that end up taking this course should work with the instructor to make sure they have an approriate, real world, software project that will help them meet the learning goals for the course. Ideally this project will be picked out BEFORE the first day of class.
Core Identity
This is a scientific software writing course with computational modeling as the conceptual lens.
In this course, we use Analytical, Physical, and Data-Driven as a practical component convention for discussing models. Many projects can be described as a mixture of these components, while some projects will not fit this framing cleanly at every stage.
The software mantra is:
Safe, Portable, Reproducible, Robust, and Literate
These values should be visible in all course artifacts: team exercises, individual project repositories, reflections, and final deliverables.
Expectations
Students are expected to attend class every day OR notify the instructor when they can not attend and make up any work in class. Class works better if you are there but the instructor understands that graduate students are busy. Please do not be lazy.
How to Use This Guide
Most students should start with the Syllabus, Weekly Routine, and Course Milestone Roadmap. The remaining pages are intended to be used as references when questions arise about communication, teamwork, project organization, technical practices, or course expectations.
Major In-Class Project Sequence
Most of the semester will center on four major in-class assignments. Each assignment is designed for approximately four class periods (about two weeks) and is organized around a dedicated repository.
- Modeling Intro Project
- Analytical Modeling Project
- Physical Modeling Project
- Data-Driven Modeling Project
Each project page gives a short overview and links to the repository where day-to-day work will happen.
Review and Reference Sections
- Peer Review (Section 20): The Peer Review Checklist and the one-page Quick Peer Review Form are used for in-class code review days and for checking your own repository for handoff readiness.
- Reference Material (Section 30): External Links and Getting to Know Git support the tools and workflow used throughout the semester.
This guide is organized to reduce duplication. Concepts are generally explained in one place and referenced elsewhere. If you find something that is unclear, outdated, inconsistent, or missing, please let the instructional team know or submit an issue through the course repository.
A Note About Professional Judgment
This guide contains many examples, recommendations, and expectations. Not every situation you encounter during the semester will have a perfectly detailed set of instructions.
When requirements are unclear, students are encouraged to use professional judgment, discuss options with their team, document important decisions, and focus on the goals of the project rather than searching for technical loopholes in the instructions.
Reasonable decisions made in good faith are generally viewed more favorably than passive waiting or excessive dependence on instructor direction.
Bottom Line
The goal of this course is not simply to complete assignments. The goal is to build a successful project while developing professional skills in communication, teamwork, project management, and technical practice.
Use this guide as a resource when you need it and contribute improvements when you find opportunities to make it better.