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:

  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. Analyze 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.