MAT-1011 Calculus (Extended) I

It provides students with a good foundation for more advanced courses in the MATH major. Topics include functions, sequences, limits and continuity, differentiation, and integration and their applications. MAT1011 and its continuation MAT1012 are for students who are strongly inclined to declare for MATH. The treatment in these classes is adapted to the future needs in the MATH programme and aligns the students to the recommended study scheme in the MATH programme.

DDA-2001 Introduction to Data Science

The course will introduce the various areas of Data Science. It will give students a tour of the enormous applications of data science in our society. Along the tour, the course will also introduce different tools in the data science which will enable those applications. It will introduce the courses offered in the school and the research areas of professors.

MAT-1002 Calculus II

This course is a continuation of Calculus I, covering series and multivariable calculus. It emphasizes intuitive and conceptual understanding of theory of series and multivariable calculus, as well as computation skills; it cultivates the ability to use Calculus to solve problems within mathematics and from other scientific disciplines.

MAT-2041 Linear Algebra and Applications

This course introduces the fundamental concepts and techniques of linear algebra, including: system of linear equations, matrices, vectors, vector spaces, determinants, linear transformations, orthogonality, eigen-theory, quadratic forms and singular value decomposition.

CSC-3001 Discrete Mathematics

This course introduces the relevant mathematical concepts and techniques in computer science with emphasis on proofs and rigorous reasoning. Topics include: logics, methods of proofs, recursion, elementary number theory, graph theory, counting.

STA-2001 Probability and Statistics I

This course is to study the basic concepts of probability and statistics. Topics include elementary probability theory, random variables, probability distributions, sampling distributions, convergence of random variables, laws of large numbers and central limit theorem.

CSC-1003 Introduction to Computer Science and Java Programming

The course introduces basic concepts in computer science and application development using Java language, not assuming the previous related background of the students. Topics include:

  1. elements of programming: variables; assignment statements; built-in types of data; conditionals and loops; arrays; and input/output.
  2. functions: highlights the idea of dividing a program into components that can be independently developed and maintained.
  3. object-oriented programming: emphasizes the concept of a data type and its implementation, using Java class mechanism.
  4. basic concepts in computer science: discusses a few essential algorithms, data structures, and notions in other popular languages such as Python.

CSC-3200 Data Structures and Advanced Programming

The course focuses on the introduction of C/C++ language and various commonly used data types. Topics include C/C++ language basics, function and library, string and stream, pointer and dynamic memory management, class and template. Abstract data types such as array, linked list, stack, queue, tree, set,hashtable, graph and their implementations using C++ will be introduced in this class.

CSC-4303 Network Programming

The course introduces basic network protocols and programming practices, such as TCP/IP, HTTP, socket programming, and RPC. It also presents the design and implementation of real-world networked systems, including distributed file systems and computation frameworks.

CSC-3060 Introduction to Computer Systems

The course provides a programmer’s view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, and operating systems, where a deeper understanding of systems-level issues is required. Topics include: digital logic design, machine-level code and its generation, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.