Programme at a Glance

PROGRAMME

Master

 

SLQF LEVEL

SLQF 9/10
2

Years

Note: This description applies to the MCS student intake from Batch 2024/25 onward (By-Laws 2025). Click on these links (MCS, MSc in CS) to view the descriptions for previous intakes.

Please note that this information is for general reference only and may not fully reflect the official By-Laws and Regulations. Candidates seeking detailed information about the program are advised to review the relevant By-Laws and Regulations and contact the appropriate authority if necessary.

Introduction

The first ever Computer Science Masters programme in Sri Lanka was launched by the University of Colombo in 1990, while Computing was taught at Undergraduate level by the University of Colombo since 1967. The Masters level teaching grew ever since to the current state, and has evolved into multiple masters programs today.

The Master of Computer Science (MCS) programme is aimed at expanding the theoretical foundation and technical skills of professionals who are in the software industry and academia. The programme consists of both the course work and a dissertation spanning into 2 years. The students who excel in the first two semesters of the MCS programme are provided an opportunity to upgrade themselves to the Master of Science in Computer Science (MSc in CS) which includes an advanced research-focused dissertation work.

Lectures and Practicals

Weekends 8.30 am – 5.45 pm.

Duration

Two academic years, part-time, consists of four semesters (up to 15 weeks per semester).

Entry Qualifications

  1. A Bachelor’s Degree in Computing from a University or Institution recognized by the University Grants Commission and/or the University of Colombo; or
  2. A Bachelor’s Degree in Science with Computing as a major subject from a University or Institution recognized by the University Grants Commission and/or the University of Colombo; or
  3. A Bachelor’s Degree in Electronics Engineering or Telecommunications Engineering from a University or Institution recognized by the University Grants Commission and/or the University of Colombo; or
  4. Any other academic or professional qualification deemed equivalent to a Bachelor’s Degree in Computing by the Senate of the University of Colombo on the recommendation of the relevant board of studies of the School. Each application under this category shall be considered on a case-by-case basis; and
  5. Attaining the minimum performance score in a selection test, such as General Computing Competency Test (GCCT); and
  6. Fulfilling additional prerequisites such as an interview, availability of vacancies, and payment of the requisite fees.

Admission

The applicants who possess the eligibility requirements shall sit for a selection test (GCCT, https://gcct.ucsc.cmb.ac.lk/), and the short-listed candidates from the selection test shall face an interview in order to be selected to the programme.

Fee Structure

The fee for MCS is categorized into 3 types as local, foreign SAARC countries, and foreign non-SAARC countries.

In addition to the registration fee, the fee includes a Non-Refundable Library Fee of Rs. 15,000/=. The non-refundable library fee should only be paid once and is valid for the whole duration of the degree programme. The value of the library fee is same for both local and foreign students.

Note: Non-Refundable Library fee is NOT included in the registration fee for degree programme.

Master students must pay 100% of the course fee for the degree at the time of initial registration for the first year degree programme. The students who wish to get upgraded to the MSc in CS degree programme must pay the excess amount at the time of the upgrade.

Course Fee:

MCS Degree Programme

Local Students:

Full Amount Rs. 510,000.00

Foreign SAARC Students:

Full Amount US$ 3850

Foreign Non-SAARC Students:

Full Amount US$ 4400

 

MSc in CS Degree Programme

Local Students:

Full Amount Rs. 565,000.00

Foreign SAARC Students:

Full Amount US$ 4000

Foreign Non-SAARC Students:

Full Amount US$ 4550

Course Overview

The programme is a part time course which consists of four semesters that span over a duration of 2 years. Each semester is 15 weeks long.

Course work includes both theory and practical components which may include continuous assessments. Each semester has an end semester examination. Medium of instruction is in English.

Lectures/Practical will be held on weekends.

First Semester Courses

 

Code Title Credits Compulsory
/ Optional
MCS1301 Advanced Algorithms 03 C
MCS1302 Research Methods 03 C
MCS1303 Advanced Database Systems 02 C
MCS1304 Advanced Data Communications Networks 03 C
MCS1305 Advanced Software Engineering 02 C

 

Second Semester Courses

 

Code Title Credits Compulsory
/ Optional
MCS2301 Principles of Programming Languages 02 C
MCS2302 Information Systems Security 02 C
MCS2303 Machine Learning 03 C
MCS2304 Advanced Operating Systems 03 C
MCS2305 High Performance Computing 02 C

 

Third Semester Courses

 

Code Title Credits Compulsory

/ Optional

MCS3301 Data Warehousing and Mining 03 O
MCS3302 Computer Graphics and Image Processing 03 O
MCS3303 Theoretical Computing 02 O
MCS3304 Natural Language Processing 02 O
MCS3305 Human Computer Interaction 02 O
MCS3306* Individual Research Project 07 C*
MCS3307** Individual Project 02 C**

 

Fourth Semester Courses

 

Code Title Credits Compulsory

/ Optional

MCS4301 Systems Modelling & Simulation 03 O
MCS4302 Mobile Computing 03 O
MCS4303 Distributed Systems 02 O
MCS4304 Computer Vision 02 O
MCS4305 Embedded Systems 02 O
MCS4306 Selected Topics in Computer Science 02 O
MCS3306* Individual Research Project 08 C*
MCS3307** Individual Project 03 C**

 

* MCS3306 is compulsory and offered only to the Master of Science Degree Programme. It spans two semesters with a total credit value of 15.

** MCS3307 is compulsory and offered only to the Masters Degree Programme. It spans two semesters with a total credit value of 5.

Credit Requirements

Course/Subject Description

Credit Value

Direct Staff-Student

Contact Hours

Notional Hours (direct staff-student

contact hours and independent learning)

Lecture course

1

15

50

Laboratory course

1

30

50

Individual project

5

variable

500

Individual research

project

15

variable

1500

One credit is considered equivalent to 50 notional learning hours for a taught course and laboratory course. In the case of project work/ Independent Studies, one credit is considered equivalent to a minimum of 100 notional hours.

Below is a brief description of each course.

Semester 1

This course module explores key techniques for solving complex computational problems. Topics include asymptotic analysis, time complexity, and solving recurrences, along with tractable and intractable problems. Students will study string matching algorithms (Naïve, Boyer-Moore, KMP, Rabin-Karp), dynamic programming, greedy strategies, and graph algorithms such as shortest paths, minimum spanning trees, and vertex cover problems. The course also covers randomized algorithms, including Monte Carlo and Las Vegas approaches. Through theoretical analysis and hands-on implementation, students will develop a deep understanding of algorithmic efficiency and optimization.

This course module provides a comprehensive foundation in conducting rigorous academic research. It covers the scientific method, research philosophies (e.g., positivism, interpretivism, pragmatism), and approaches to theory development (induction, deduction, abduction). Students will learn to define research problems, formulate research aims and questions, and conduct systematic literature reviews using proper referencing styles. The course explores research strategies such as experiments, case studies, surveys, and ethnography, along with method choices, time horizons, and ensuring credibility. Ethical considerations, research integrity, and the process of publishing are also emphasized, equipping students with essential skills for high-quality academic and professional research.

This course module explores core principles and emerging trends in modern database management. Topics include database integrity, transaction management, recovery, concurrency control, and distributed databases. Students will examine query processing techniques, optimistic concurrency control, and advanced data models such as object-relational databases. The course also covers emerging technologies, including data warehousing, XML and internet databases, and evolving trends in database systems. Through theoretical analysis and hands-on implementation, students will develop expertise in designing, optimizing, and managing complex database environments for diverse applications.

This course module provides an in-depth exploration of modern networking principles, protocols, and emerging technologies. It covers channel characterization, the TCP/IP stack, IP addressing, and support protocols. Students will examine multi-access protocols (CSMA, FDMA, TDMA), routing strategies (IPv6, OSPF, BGP, MPLS, multicast, DHT), and end-to-end issues such as TCP congestion control and QoS. The course also delves into data center design, virtualization, SDN concepts, and advanced networking paradigms, including CDMA, MANETs, IoT, and vehicular networks. Practical experience with network simulation tools (NS, Mininet) and discussions on emerging trends prepare students for cutting-edge network research and development.

This course module explores modern software development challenges, methodologies, and best practices. It covers the evolution of software development models, requirement engineering, and industry-standard unified process models. Students will study object-oriented modeling, software architecture, refactoring, and design patterns, along with software reuse and component-based engineering. The course also delves into code quality, empirical and open-source software engineering, and the impact of social and agile practices. Advanced tools such as code analyzers, clone detectors, and static/dynamic analysis techniques are explored. Emerging trends prepare students for cutting-edge research and innovation in software engineering.

Semester 2

This course module provides a comprehensive study of programming language design, implementation, and evaluation. It covers language implementation methods, syntax and semantics, lexical and syntax analysis, and key concepts such as data types, bindings, type checking, and scope. Students will explore expressions, control statements, subprograms, and object-oriented language features, along with exception handling and event-driven programming. The course introduces lambda calculus and functional programming fundamentals while examining emerging trends in language design. Through theoretical analysis and practical exploration, students will gain a deep understanding of language paradigms and their impact on software development.

This course module provides a comprehensive understanding of security principles, cryptographic techniques, and system protection mechanisms. It covers hash algorithms, symmetric and asymmetric encryption systems, key management protocols, and Java cryptography. Students will explore network, web, and email security, along with secure operating systems, databases, and software applications. The course also examines legal aspects of cybersecurity and emerging trends in information security. Through theoretical foundations and practical implementations, students will develop the skills to analyze, design, and implement secure information systems.

This course module provides a comprehensive introduction to fundamental concepts, algorithms, and applications of machine learning. It covers supervised and unsupervised learning, model evaluation, feature selection, and optimization techniques. Students will explore key algorithms such as decision trees, support vector machines, neural networks, and clustering methods, along with deep learning fundamentals. The course also addresses practical challenges, including overfitting, bias-variance tradeoff, and scalability. Through hands-on implementation and real-world case studies, students will develop the skills to design, train, and evaluate machine learning models for various applications. Emerging trends in AI and ML research are also discussed.

The Advanced Operating Systems module explores the design, implementation, and optimization of modern operating systems. Topics include process synchronization, concurrency control, memory management, file systems, and advanced scheduling techniques. Students will study distributed and real-time operating systems, virtualization, security mechanisms, and fault tolerance. The course also covers system performance analysis, resource allocation strategies, and emerging trends in OS research. Through theoretical concepts and hands-on projects, students will develop a deep understanding of complex OS architectures and their role in high-performance computing environments.

This course module focuses on the principles and techniques used to achieve high computational performance in complex applications. Topics include parallel programming, multi-core and distributed computing, cluster and grid computing, GPU programming, and performance optimization strategies. Students will explore algorithms and data structures tailored for high-performance environments, along with techniques for load balancing, memory hierarchy optimization, and scalable computing. The course also covers emerging trends in exascale computing and computational resource management. Through hands-on exercises and case studies, students will gain practical experience in designing and implementing high-performance computing solutions for scientific and engineering problems.

Semester 3

This course module provides a deep dive into the concepts, techniques, and tools used to extract valuable insights from large datasets. It covers data warehousing concepts, including data modeling, ETL processes, and the design of data warehouses. Students will explore data mining algorithms for classification, clustering, regression, and association rule mining, along with techniques for pattern recognition and anomaly detection. The course also addresses data preprocessing, dimensionality reduction, and the application of mining techniques to real-world problems. Through practical implementations and case studies, students will develop the skills to design, build, and analyze data warehousing and mining systems for business intelligence and decision-making.

This course module explores the principles and techniques used to create, manipulate, and analyze digital images and graphics. Topics include 2D and 3D graphics rendering, geometric transformations, raster and vector graphics, and animation techniques. Students will study image processing techniques such as filtering, enhancement, compression, and segmentation, as well as computer vision fundamentals. The course also covers algorithms for object recognition, feature extraction, and image-based rendering. Through hands-on projects and case studies, students will gain practical experience in developing and optimizing graphics and image processing applications for various fields such as entertainment, healthcare, and engineering.

This course module provides a rigorous foundation in the mathematical and conceptual aspects of computation. It covers key topics such as formal languages, recursive definitions, regular sets, regular expressions, and finite state automata (DFA and NFA), along with their equivalence and minimization techniques. Students will explore context-free grammars (CFG), pushdown automata (PDA), and the complexities of ambiguity and normal forms in CFGs. The course also delves into Turing machines, decidability, and the Church-Turing thesis, addressing decision problems, the halting problem, and reducibility. Through these topics, students will gain an in-depth understanding of computational theory, including the decidability of language problems and the foundational limits of computation.

This course module explores the computational techniques used to process and analyze human language. Topics include text preprocessing, tokenization, part-of-speech tagging, syntactic parsing, and named entity recognition. Students will study advanced NLP methods such as word embeddings, topic modeling, machine translation, and sentiment analysis. The course also covers machine learning approaches for NLP tasks, including supervised and unsupervised learning, as well as deep learning models like recurrent neural networks (RNNs) and transformers. Through practical projects and case studies, students will develop the skills to build and evaluate NLP systems for real-world applications in areas such as search engines, chatbots, and automated translation.

This course module focuses on the design, evaluation, and implementation of user-friendly interfaces between humans and computers. Topics include usability principles, user-centered design, and methods for conducting user research and testing. Students will explore interaction techniques, such as graphical user interfaces (GUIs), voice recognition, and gesture-based controls, along with the impact of design on user experience (UX). The course also covers accessibility, cognitive load, and designing for diverse user groups. Through hands-on projects and case studies, students will gain practical experience in creating effective, intuitive, and inclusive interfaces for a wide range of devices and applications.

This course unit aims to enhance the capacity of candidates to advance their knowledge, investigative skills and other skills to explore new knowledge within the field of computer science which in turn form the basis for academic advancement and technological development. A candidate specializes an area within the field of computer science and hence, should demonstrate a critical awareness of current issues and recent developments within the area of specialization. This course requires a high level of theoretical engagement, critical analysis and evaluation with respect to the research work carry out. The major expectations of this course unit are: conduct a comprehensive research work in the field of computer science with a substantial research contribution; construct hypotheses in the area of specialization and test them in a scientific manner; conduct a relevant background study with a critical analysis of related scientific work and evaluate current research in the area of specialization to clearly demonstrate the awareness of the broader context of the problem; formalize arguments logically and, employ these arguments to make sound judgements and to conclude a research solution scientifically; conduct a critical evaluation of the research which clearly demonstrates the technical quality and research merit; by following proper academic writing standards, submit a dissertation and a research paper based on the research outcome which is evaluated and accepted; demonstrate the work at the oral examination.

The aim of this course unit is to enhance the intellectual capacity of candidates to advance their knowledge and investigative skills, and other abilities relevant to computer science, forming the basis for academic advancement and technological capacity. This includes the development of an innovative software application with a research component. The major expectations of this course unit are: conduct a relevant background study with a critical analysis of similar systems and applications to clearly demonstrate a comprehensive level of knowledge and understandability of the broader context of the problem; critically analyze data, make judgments to evaluate the system to clearly demonstrate the technical quality and innovativeness; demonstrate the findings in a dissertation which will be evaluated and accepted; demonstrate the work at the oral examination.

Semester 4

This course module introduces students to the theory and practical techniques for modeling and simulating complex systems. Topics include deterministic systems, focusing on the use of difference and differential equations and their numerical solutions, as well as stochastic systems involving probability distributions, random variables, and Markov chains. Students will explore Monte Carlo simulations, discrete-time vs. discrete event simulations, and cellular automata as tools for system analysis. The course also covers the use of simulation software to model real-world systems and analyze their behavior. Through hands-on projects, students will develop the skills to design, implement, and evaluate simulations for a variety of applications in engineering, business, and science.

This course module focuses on the development and implementation of mobile applications for wireless devices. Topics include mobile operating systems, with an emphasis on Android, and the anatomy of mobile apps, including the app lifecycle. Students will learn to develop applications using Android Studio, covering the Android user interface, intents, persistence, WebView, and web services. The course also explores 2D graphics, location-based apps, and mobile sensors. Additionally, students will gain experience in hybrid mobile app development (Ionic), native mobile app development (React Native), and mobile testing. Mobile security concepts, including tools like Bouncy Castle and Spongycastle, and emerging trends in mobile computing are also addressed. Through practical projects, students will gain hands-on experience in creating secure, high-performance mobile applications.

This course module provides an in-depth exploration of the design, implementation, and analysis of distributed systems. Topics include fundamental concepts such as coordination, agreement, and fault tolerance, with a focus on leader election, consensus algorithms, Byzantine Fault Tolerance (BFT), and blockchain as a ledger consensus mechanism. Students will study atomic commit protocols, logical and vector clocks, as well as broadcasting methods like RBCAST, URBCAST, and ABCAST. The course also covers specialized middleware systems, including Cassandra, Zookeeper, and Spanner, and streaming technologies like Pub/Sub. Additionally, students will learn about parallel computing models such as SIMD, MIMD, Amdahl’s Law, MPI, OpenMP, and GPU computing. Through practical projects and case studies, students will develop the skills to design, optimize, and evaluate scalable, fault-tolerant distributed systems, with a focus on emerging trends in the field.

This course module focuses on the computational techniques used to enable machines to interpret and understand visual data from the world. Topics include image processing, feature extraction, edge detection, and object recognition. Students will explore machine learning and deep learning methods, such as convolutional neural networks (CNNs), for image classification, segmentation, and detection tasks. The course also covers 3D vision, motion analysis, camera calibration, and tracking. Additionally, students will study applications of computer vision in real-world domains like autonomous vehicles, facial recognition, and medical imaging. Through hands-on projects and case studies, students will gain practical experience in implementing and evaluating computer vision algorithms and models.

This course module provides an in-depth study of designing and programming embedded systems, with a focus on AVR microcontrollers. Topics include low-level programming techniques, on-board communication protocols like UART, SPI, and I2C, and their application in real-world systems. Students will also explore low-power wireless communication protocols, such as IEEE 802.15.4 and LoRa, and how to integrate these into embedded applications. The course covers the design and development of embedded software, hardware interfacing, and optimization techniques for energy efficiency and real-time performance. Through hands-on projects, students will gain practical experience in developing embedded systems for applications in IoT, robotics, and other fields.

This course module provides a focused exploration of advanced and emerging areas in the field of computer science. The course offers flexibility in its content, covering topics such as machine learning, artificial intelligence, quantum computing, cybersecurity, and advanced algorithms, depending on current trends and research interests. Students will engage with cutting-edge theories, technologies, and applications, and will have opportunities to explore specific areas in depth through readings, and discussions. This course is designed to encourage critical thinking, foster research skills, and equip students with the knowledge needed to tackle complex challenges in the rapidly evolving landscape of computer science.