This course offers a foundational understanding of essential programming methods, with a focus on their practical applications. The objective is to facilitate fluency in programming and the ability to switch between various programming languages. The course introduces fundamental algorithms and data structures, and how they can be used to solve computational problems, and cleaning up and extracting information from data tables using programming.
The Discrete Mathematics course will provide students with their first glimpse of how to think rigorously about discrete and finite phenomena. The course will begin by introducing students to the language and grammar of mathematics. It will then proceed to an axiomatic construction of the natural numbers, and introduce the fundamental mathematical notions of sets, relations, and functions. The remainder of the course will be organised around three distinct modules: number theory, permutations and counting, and graph theory.
Mathematically reasoning, in absence of certainty, is fundamental to questions of computing. Whether it is to arrive at classification tasks based on naive bayes, calculating pathways for data packets across networks, writing probabilistic algorithms and reasoning about probabilistic computing machines, or reasoning about security protocols. This course provides an introduction to fundamentals of probability and statistics, with a view towards applications in computer science.