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:
- 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.
- Understand and write programs using standard features of the Python programming language.
- 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.
- Analyse the running time of a program.
- Define and implement common abstract data types and algorithms.
- 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