APC 524/MAE 506/AST 506/CSE 524: Software Engineering for Scientific ComputingThe goal of this course is to teach basic tools and principles of writing good code, in the context of scientific computing. Specific topics include an overview of relevant compiled and interpreted languages, build tools and source managers, design patterns, design of interfaces, debugging and testing, profiling and improving performance, portability, and an introduction to parallel computing in both shared memory and distributed memory environments. The focus is on writing code that is easy to maintain and share with others. Students develop these skills through a series of programming assignments and a group project.