Course Offerings
Course Offerings Course Offerings Course Offerings

This page contains a catalogue of the courses that have been offered under the Mathematical, Computational and Statistical Sciences (MCS) major/minor in recent years. It also provides a short description of the core courses that all MCS majors are required to take as part of their degree requirements.

Core Courses

YSC1212 Introduction to Computer Science

Computer science has improved human life dramatically in the last 50 years. This course explains how computational tasks are solved and computers are programmed. You will learn how to be a more careful and methodical thinker. Moreover, millions of people around the world enjoy programming and you can too!

YSC2209 Proof

Mathematicians and computer scientists write proofs: convincing arguments, combining clear and concise language, computations and symbolic manipulation, illustrations and tables. By reading, writing, and revising proofs, students will be prepared for modern topics in analysis, algebra, geometry, and theoretical computer science. Students will write proofs that utilise direct deduction and proof by contradiction, complicated logical structures with cases, and mathematical induction. Students will acquire a thorough knowledge of naïve set theory, including sets and functions, equivalence relations and classes, cardinal and ordinal arithmetic. Topics in discrete mathematics will include the combinatorics of finite structures such as graphs and trees.

YSC2239 Introduction to Data Science

Data science has revolutionised modern life and technology using a broad spectrum of methods from mathematics, statistics and computer science. Intrinsically, mathematical and statistical techniques are married to modern computing power to provide accurate and complex tools to capture real life phenomena. In this course we develop an introduction to methods used in data science, at a level requiring basic mathematics and statistics.

Sample Electives

This is a small subset of electives offered by the MCS major.

YSC2232 Linear Algebra

A first course in linear algebra of finite-dimensional real and complex vector spaces, balancing theoretical and computational material. The course covers vectors and linear transformations, building geometric intuition, algebraic aptitude, and computational proficiency. Topics include spaces and subspaces, linear maps, linear independence and spanning, basis, and representations by coordinates and matrices. The theory of linear operators is developed, including eigenvalues and eigenvectors, self-adjoint operators, the spectral theorem, and the singular value decomposition. Some topics from numerical linear algebra, especially implementation of algorithms and assessment of their efficiency are included. Applications to statistics, economics, engineering, and science are presented.

YSC2244 Programming for Data Science

With the growing influence of data science, the Statistics and Mathematics domains now require specific skills in programming, using domain-specific systems and libraries. This course introduces common tools for data science programming. This includes a high-level language (i.e. Python), several statistics/AI libraries (i.e. numpy, sklearn), and database systems (i.e. SQL). In addition, we will create awareness of best practices in programming such as control versioning, testing, and continuous integration.

YSC2252 Multivariable Calculus

Calculus is the study of rates of changes and provides a framework for modelling systems and to find the effect of changing conditions of the systems being investigated. However, some of the most interesting systems cannot be modelled using just one variable. The aim of this course is to extend the knowledge of calculus (YSC1216) to more complex systems, studying the rate of change, volumes and optimisation for functions in more than one variable. This course gives the needed tools to apply knowledge of advanced calculus in Physical Sciences, Life Science, Economics and Statistics.

YSC3232 Software Engineering

This course will teach principles of software engineering and object-oriented programming as well as User Interfaces (UI) and Android. In this course, students will first learn about the Java language and the object paradigm (field encapsulation, object, polymorphism), as well as useful tools for software development (e.g, version control, debugging). The next part of the course will focus on how to write code properly and work on larger scale projects using MVC framework. Finally, the last part of the course will cover UI in Java, Threads, synchronisation, and Android Programming.

YSC4216 Machine Learning

Machine learning is a collection of techniques where computers can learn from data without being explicitly programmed. For instance, when we train a programme using human-face image data, it should be able to locate faces in an image; yet, if we train the same programme using flower data, it should be able to locate flowers in an image, without explicitly changing the programme itself. This course particularly will focus on statistical machine learning, which relies heavily on probabilistic and statistical analysis. Programming skill in python is compulsory.

YSC4231 Parallel, Concurrent and Distributed Programming

This course will cover main concepts and programming paradigms for developing parallel concurrent and distributed systems, which is vital for implementing high-performance applications in areas such as machine learning, cloud computing, and databases—areas with an extremely high demand for well-trained software engineers. The course contents will include both practical (about 70%) as well as a theoretical component, giving the students the basis to design concurrent algorithms, reason about their correctness, as well as to be able to design experiments for estimating the performance of the designed algorithms.

Skip to content