Description

An introduction to the field of computer science combining the tools and techniques of programming (using the Python programming language) with rigorous mathematical analysis and reasoning. Topics include: data representations; program control flow (conditionals, loops, exceptions, functions); mathematical logic and formal proof; representation of floating-point numbers and numerical computation; algorithms and running time analysis; software engineering principles (formal specification and design, testing and verification). Prior programming experience is not required to succeed in this course.

Course Goals

this course, you learn to:

  1. Analyze a problem domain written in English; represent key definitions and properties using mathematical logic; and design, implement, and evaluate computational solutions to solve a problem.
  2. Understand and write programs using standard features of the Python programming language.
  3. Understand and use a variety of professional software development skills, including: programming using an Integrated Development Environment (IDE); writing clear documentation; debugging and testing programs; reading technical documentation and source code to learn how to use an external program or library.
  4. Analyse the running time of a program.
  5. Define and implement common abstract data types and algorithms.
  6. Create a mathematical proof or disproof of a given statement in new and familiar domains, choosing from among different proof techniques to use. Apply proofs of mathematical statements to justify the correctness of algorithms