Description
A continuation of CSC110Y1 to extend principles of programming and mathematical analysis to further topics in computer science.
Topics include: object-oriented programming (design principles, encapsulation, composition and inheritance); binary representation of numbers; recursion and mathematical induction; abstract data types and data structures (stacks, queues, linked lists, trees, graphs); the
limitations of computation.
Course Goals
In this course, you will learn:
- 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.
- Analyze 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.