|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.
|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.
|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.