====== Course Objectives and Learning Outcomes ====== ===== Objectives ===== The course introduces students to the principles of computational thinking. Programming methods and computational principles are introduced in a problem-driven way using Python and making extensive use of Python libraries. Upon completion of the course, students: * will have an understanding of the role computation plays in solving scientific problems * will value computation as foundational tool in scientific discovery * will have explored the impact of different algorithms on efficiency and performance * will have understood and applied basic programming principles * will have a basic understanding of programming allowing the exploration of other programming languages ===== Learning Outcomes ===== Students will be able to: * Analyze and abstract a problem * Design and implement an effective software solution for scientific problems * Effectively use modules of software libraries described by functional specifications * Understand the use and functionality of basic data structures * Write programs that accomplish useful goals; and visualize the results appropriately * Read and adapt existing programs * Have a basic understanding about the limits of computation and intractible problems