Undergraduate Modules
First year
18139-113 | Computer Science for Actuarial Studies (CS113) | (1st Semester) | (First Year) |
Introduction to computer programming from a financial perspective. Basic financial problems are rephrased in terms of analytical problem solving. Standard imperative programming constructs including types of variables, assignments, if-then-else and loops, and recursive approaches are covered as needed in financial programming. Static data structures (in particular arrays) and declarative programming models such as spreadsheets are also covered.
18139-114 | Introductory Computer Science 1 (CS114) | (1st Semester) | (First Year) |
Introduction to basic computer programming; formulation and solution of problems by means of computer programming; data representation and variable types (including character strings, integers, floating point numbers and Boolean variables); assignment statements; conditional execution and iteration; static data structures (arrays and records); input and output (including graphics and sound); modular programming; recursion; testing and debugging; introduction to object-oriented programming (including abstraction, encapsulation and use of existing object implementations).
18139-144 | Introductory Computer Science 2 (CS144) | (2nd Semester) | (First Year) |
Further formulation and solution of problems by means of computer programming; introductory data structures and algorithms in an object-oriented set-up; key concepts in object orientation: inheritance and polymorphism; design patterns as abstractions for the creation of reusable objectoriented designs; searching and sorting algorithms; complexity theory for the analysis of algorithms; fundamental methods in the design of algorithms; dynamic data structures; regular expressions and finite automata.
Second year
59536-214 | Object-Oriented Programming (CSE214) | (1st Semester) | (Second Year) |
Formulation and solution of problems by means of computer programming in an object-oriented set-up; principles of testing and debugging; key concepts in object orientation: abstraction, encapsulation, inheritance and polymorphism; design patterns as abstractions for the creation of reusable object oriented designs; searching and sorting algorithms; complexity theory for the analysis of algorithms; fundamental methods in the design of algorithms; dynamic data structures.
18139-214 | Data Structures and Algorithms (CS214) | (1st Semester) | (Second Year) |
The classical data structures and algorithms in an object-oriented set-up. Advanced techniques for the analysis of algorithms.
18139-244 | Computer Architecture (CS244) | (2nd Semester) | (Second Year) |
Basic computer architecture. Programming in machine language and assembly language. Assemblers, binders and loaders. Basic concepts of operating systems; memory management, process management and file systems.
12263-272 | Scientific Computing (SC272) | (1st and 2nd Semester) | (Second Year) |
Introduction to Linux; Linux commands; Linux file systems; editors; process control. Introduction to programming in Python: variables, types, control structures, loop structures, functions, files and directories, strings, unit testing, basic data processing. Introduction to numerical computing using Numpy; plotting and curve fitting.
Third year
18139-314 | Concurrency (CS314) | (1st Semester) | (Third Year) |
Introduction to programming techniques and principles of concurrent systems, from operating systems to application programs.This includes communication, synchronisation, scheduling and load balancing. Several parallel and distributed architectures will be covered.
18139-315 | Machine Learning (CS315) | (1st Semester) | (Third Year) |
Dimension reduction techniques; machine-learning techniques based on maximum-likelihood, maximum-posterior and expectation-maximization estimates; modelling using logistic regression, Gaussian mixtures and hidden Markov models.
18139-334 | Databases and Web Centric Programming (CS334) | (1st Semester) | (Third Year) |
Introduction to relational databases. Mapping relational model onto object model. Implementing a database application in the context of the web. Web services. Server-side scalability. Virtualization. Cloud Computing.
18139-344 | Program Design (CS344) | (2nd Semester) | (Third Year) |
Program specifications as guidelines for program design; reusable frameworks for program design; testability of program designs; development of a medium-sized system to illustrate the practical application of the principles of program design.
18139-345 | Computability and Automata Theory (CS345) | (2nd Semester) | (Third Year) |
Introduction to automata theory and formal languages, computability and complexity. Regular languages, context-free languages and grammars. Turing machines. P vs NP problem and NP completeness.
18139-354 | Computer Networks (CS354) | (2nd Semester) | (Third Year) |
Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Network security. Applications.
12263-372 | Scientific Computing (SC372) | (1st and 2nd Semester) | (Third Year) |
Scientific-document construction and presentations in LaTeX. Regular expressions. Important algorithms including sorting, searching and random-number generation. Advanced computing in Python with Numpy and Scipy; applications including pattern searching, processing of large empirical data sets and constructing data-processing pipelines. Other scientific tools in Linux.