Getting Started
ENGR 570 - Software Development for Research
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?
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
- Syllabus: on Canvas
- GitHub organization: https://github.com/SoftwareDevEngResearch
- Other resources: linked on Canvas
- Slack chat room (linked on Canvas)
Textbook
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.