This course will satisfy ACE Learning Outcome 3: Use computational and formal reasoning (including reasoning based on principles of logic) to solve problems, draw inferences, and determine reasonableness. Students have opportunities to acquire the knowledge and skills necessary to achieve these learning outcomes in the lectures, problem sets, and weekly seminar discussions for the course. The problem sets, which constitute the only graded work for this course, are the main way in which fulfillment of this outcome is assessed.
Students will learn and practice computational methods while solving complex problems that involve computational thinking and formal reasoning. By developing facility with a programming language, students will be introduced to a variety of software design concepts (including control structures, data structures, algorithms, exception handling, structured programming, object-oriented design, and the general principles of software engineering).
Through a series of increasingly complex and sophisticated programming exercises, students will demonstrate proficiency in programming and software design.