This course provides an in-depth understanding of the principles and practices involved in designing, developing, testing, and maintaining complex software systems within the context of space mission objectives. The curriculum covers a wide range of topics including spacecraft software, instrument software, ground system software and ground test software, as well as software tools for science, navigation, and software simulation. The course will cover post launch problem investigation/debugging and post launch software updates. Students will gain hands-on experience through real-world case studies, and group projects that focus on the software lifecycle, software interfaces and protocols, data systems and data budgets, and specialized software functionality such as autonomous software decision-making.