Learn the core principles of software engineering and design to make scientific software more robust and reproducible. This class targets quantitative scientists with programming skills (in any language) who want to use software in their research. We will cover the version control, testing, benchmarking, data structures, algorithms, and pipelines. This course opens computing to a variety of student disciplines, and is an advanced course in computing geared toward STEM. Instructor approval required for CS majors and CS minors. Previously offered as a special topics course. Recommended prerequisites: ASEN 1320 or CSCI 1200 or CSCI 1300 or CSCI 2275 or ECEN 1310 or INFO 1201, knowledge of a programming language, preferably Python, and upper division STEM course recommended. Degree credit not granted for this course and CSCI 4118.