Getting Started

ENGR 570 - Software Development for Research

Kyle Niemeyer

Oregon State University

2025-01-06

Overview of class and introductions

What this class is for:

  • Learning computational skills to be successful in modern research
  • Developing a software package from scratch for your research

What this class isn’t for:

  • Learning how to program in Python
  • Those who aren’t comfortable doing open-ended, self-directed work.

Motivation

Nearly all research relies on software—even experimental—but researchers don’t get trained in best practices in the same way as experimental methods.

What are we going to learn about?

  • Computational environment management
  • Version control
  • Collaborative software development
  • Structuring programs
  • Working with files
  • Improving performance, parallelization
  • Reproducible research
  • Writing about software, documentation
  • Sharing software openly, copyright

Anything missing?

Introductions

Who are you? Quick introductions

  • Majors / research areas?
  • Experience level in Python / programming
  • Experience level with command line
  • Mac, Linux, or Windows?

Who am I?

Photo of Kyle Niemeyer

Dr. Kyle Niemeyer, Associate Professor of Mechanical Engineering

Background: computational combustion modeling, fluid dynamics

Languages: Matlab -> Fortran -> C/C++/CUDA -> Python

Course Resources

Online resources

Textbook

Effective Computation in Physics book

http://physics.codes/

Chapters 1–6 should be review

Project

Most of your work in the class will be centered around a project developing a new software package for your research.

Assignments will focus on development stages for your software package.

First assignment: project proposal, due January 17.