In-Class Software Projects

Throughout the semester, we will complete a series of guided in-class software projects.

These projects are designed to provide hands-on experience with the software engineering concepts, modeling techniques, and computational tools discussed in class.

Unlike the semester project, these activities are intentionally structured and provide a common starting point for everyone in the course.

Each project will be distributed as a Git repository.

Purpose

The primary purpose of the in-class projects is to help you learn new tools and techniques in a low-risk environment before applying them to your own project.

These repositories provide:

The projects are intentionally smaller and more focused than your semester project.

General Workflow

For each in-class project, you should:

  1. Obtain a copy of the project repository.
  2. Read the README and project overview.
  3. Run the provided examples.
  4. Work through the exercises.
  5. Discuss your observations with your teammates.
  6. Commit your changes as you progress.
  7. Reflect on how the ideas apply to your own project.

Most projects will build on a combination of:

Working in Class

Class time is reserved specifically for these activities.

You are encouraged to:

Many exercises are deliberately open-ended and may have more than one reasonable solution.

The goal is not simply to finish the exercise. The goal is to understand the software concepts being demonstrated.

Repository Ownership

Whenever possible, create your own fork of each repository.

Working in your own copy allows you to:

Think of these repositories as part of your growing software portfolio.

Using AI Tools

AI tools may be useful during these activities.

Examples include:

However, you remain responsible for:

Always review and verify AI-generated output before accepting it.

Software Engineering Focus

Each repository will emphasize one or more of the following themes:

As you work through the exercises, consider how each activity contributes to one or more of these goals.

Planned Project Sequence

Project 1: Modeling Components and Software Foundations

This project introduces:

Students will begin with a working example and gradually transform it into a reusable software component.

Project 2: Analytical Modeling

This project explores:

Students will investigate how software can help us understand and work with analytical models.

Project 3: Physical Modeling

This project explores:

Students will learn how physical processes can be represented and investigated through computation.

Project 4: Data-Driven Modeling

This project explores:

Students will examine how software can learn from observations and data.

Relationship to the Semester Project

The in-class projects and semester project are closely connected.

The in-class projects provide:

Your semester project provides:

As you complete each in-class project, consider how the ideas might improve your own work.

Expectations

You are not expected to understand every detail immediately.

You are expected to:

The in-class projects are an opportunity to practice new skills while receiving guidance and support from your classmates and instructor.

Final Thought

The purpose of these repositories is not to produce perfect software.

The purpose is to practice the process of improving software over time.

Small improvements, repeated consistently, are often what transform an idea into a useful research tool.