Course Description




Computer science is the study of software. It is both theoretical, as it studies the structure of algorithms and programs, and practical, in its effort to apply algorithms and programs to solve technological problems; it is at once analytical, diagnostic, and creative, as it attempts not only to solve these problems but to understand them better. As such, it requires deep familiarity with mathematics, proof theory, and logic. It also involves the learning of a range of different programming languages, and the ability to acquire such languages quickly. The aim of computer science is to understand and apply formal systems, to create new, safe, and useful technologies.

Core Curriculum

The core topics introduce the field of computer science and give students the skills and understanding to choose and pursue their interests in the specialized topics. On completing the core, students will be able to independently read the historical and academic literature. The core topics are:

  • Calculus
  • Algorithms
  • Digital Systems
  • Discrete Mathematics
  • Functional Programming
  • Imperative Programming
  • Formal Logic and Proof Theory
  • Linear Algebra
  • Probability
  • Compilers
  • Concurrent Programming
  • Models of Computation
  • Ethics


Specializations should be discussed with the Director of Studies. On completing specializations, students will be able to independently read advanced literature and conduct a final project in that topic. Some suggested specializations are:

  • Computer Architecture
  • Computer Graphics
  • Computational Game Theory
  • Computer Networks
  • Databases
  • Lambda Calculus
  • Computational Learning Theory
  • Artificial Intelligence
  • Computational Complexity
  • Machine Learning
  • Computer Security
  • Formal Verification
  • Geometric Modeling
  • Fundamentals of Programming Languages
  • Category Theory
  • Quantum Computing
  • Information Theory
  • Probability Theory
  • Robotics
  • Cryptography
  • Blockchain and Cryptocurrency
  • User Interface Design
  • Embedded Systems
  • Natural Language Processing

Schedule a Free Consultation

We'd love to get to know you and help you get pointed in the right direction.