Master of Science in Computer Science
Downloads
Master of Science in Computer Science
Downloads
About this degree
The course teaches students comprehensive and specialised subjects in computer science; it teaches students cutting edge engineering skills to solve real-world problems using computational thinking and tools, as well as soft skills in communication, collaboration, and project management that enable students to succeed in real-world business environments. Most of this program is case (or) project-based where students learn by solving real-world problems end to end. This program has core courses that focus on computational thinking and problems solving from first principles. The core courses are followed by specialization courses that teach various aspects of building real-world systems. This is followed by more advanced courses that focus on research level topics, which cover state of the art methods. The program also has a capstone project at the end, wherein students can either work on building end to end solutions to real world problems (or) work on a research topic. The program also focuses on teaching the students the “ability to learn” so that they can be lifelong learners constantly upgrading their skills. Students can choose from a spectrum of courses to specialize in a specific sub-area of Computer Science like Artificial Intelligence and Machine Learning, Cloud Computing, Software Engineering, or Data Science, etc.
Master of Science in Computer Science
Downloads
What you'll learn
- Develop advanced, innovative, and multi-disciplinary problem-solving skills
- Communicate computer science methods and tools clearly and unambiguously to specialised and non-specialised audiences
- Develop advanced abilities related to computer science operational procedures and implement them in response to changing environments
- Critically evaluate alternative approaches to solving real world engineering and technological problems using cutting edge techniques in computer science on the basis of academic scholarship and case studies, demonstrating reflection on social and ethical responsibilities
- Formulate technological judgments and plans despite incomplete information by integrating knowledge and approaches from various computer science domains including machine learning, distributed computing, and cloud computing.
- Enquire critically into the theoretical strategies for solving real-world problems using computational thinking and tools.
- Develop new skills in response to emerging knowledge and techniques and demonstrate leadership skills and innovation in complex and unpredictable contexts Apply their technological abilities to produce innovative solutions to real-world problems and implement techniques learned in the course
Master of Science in Computer Science
Downloads
Course Structure
About
This is a foundational and mandatory course which aims to build student’s ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
Teachers
Intended learning outcomes
- Develop a specialized knowledge of key strategies related to design and analysis of algorithms
- Critically evaluate diverse scholarly views on design and analysis of algorithms
- Acquire knowledge of various algorithmic design methods
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of design and analysis of algorithms
- Creatively apply various algorithmic design methods to develop critical and original solutions to computational problems
- Autonomously gather material and organize it into a coherent presentation or essay.
- Apply an in-depth domain-specific knowledge and understanding to design and analysis of algorithms
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Efficiently manage interdisciplinary issues that arise in connection to design and analysis of algorithms
- Solve problems and be prepared to take leadership decisions related to the methods and principles of design and analysis of algorithms
- Demonstrate self-direction in research and originality in solutions developed for design and analysis of algorithms
- Act autonomously in identifying research problems and solutions related to design and analysis of algorithms
- Create synthetic contextualized discussions of key issues related to design and analysis of algorithms to provide solutions to computational problems
- Apply a professional and scholarly approach to research problems pertaining to design and analysis of algorithms
About
This course is aimed to build a strong foundational knowledge of data structures (DS) used extensively in computing. The module starts with introducing time and space complexity notations and estimation for code snippets. This helps students be able to make trade-offs between various Data Structures while solving real world computational problems. The module introduces most widely used basic data structures like Dynamic arrays, multi-dimensional arrays, Lists, Strings, Hash Tables, Binary Trees, Balanced Binary Trees, Priority Queues and Graphs. The module discusses multiple implementation variations for each of the above data-structures along with trade-offs in space and time for each implementation. In this course, students implement these data-structures from scratch to gain a solid understanding of their inner workings. Students are also introduced to how to use the built-in data-structures available in various programming languages/libraries like Python/NumPy/C++ STL/Java/JavaScript. Students solve real-world problems where they must use an optimal DS to solve a computational problem at hand.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on data structures
- Develop a specialized knowledge of key strategies related to Data Structures and their usage in computer science
- Develop a critical knowledge of Data Structures and their implementation
- Acquire knowledge widely used basic data structures like Dynamic arrays, multi-dimensional arrays, Lists, Strings, Hash Tables, Binary Trees, Balanced Binary Trees, Priority Queues and Graphs
- Critically assess the relevance of theories for business applications in the domain of technology
- Apply an in-depth domain-specific knowledge and understanding of Data Structures
- Apply data structures in a creative way to develop original, critical solutions to real world problems.
- Autonomously gather material and organize it into coherent data structures
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Demonstrate self-direction in research and originality in solutions developed for Data Structures and their implementation
- Apply a professional and scholarly approach to research problems pertaining to Data Structures and their implementation
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Data Structures and their implementation
- Efficiently manage interdisciplinary issues that arise in connection to Data Structures and their implementation
- Act autonomously in identifying research problems and solutions related to Data Structures and their implementation
- Create synthetic contextualized discussions of key issues related to Data Structures and the different approaches to their implementation
About
This course helps students translate advanced mathematical/statistical/scientific concepts into code. This is a module for writing code to solve real-world problems. It introduces programming concepts (such as control structures, recursion, classes and objects) assuming no prior programming knowledge, to make this course accessible to advanced professionals from scientific fields like Biology, Physics, Medicine, Chemistry, Civil & Mechanical Engineering etc. After building a strong foundation for converting scientific knowledge into programming concepts, the course advances to dive deeply into Object-Oriented Programming and its methodologies. It also covers when and how to use inbuilt-data structures like 1-Dimensional and 2-Dimensional Arrays before introducing the concepts of computational complexity to help students write optimized code using appropriate data structures and algorithmic design methods.
The module can be taught to allow students to learn these concepts using a modern programming language such as Java or Python. The course offers students the ability to identify and solve computer programming problems in scientific fields at a graduate level.
The course prepares students to handle advanced data structures and algorithm design methods in the separate module, ‘Data Structures’.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to Object-Oriented Programming
- Acquire knowledge of various methods for structuring data
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical understanding of a modern programming language such as Java or Python
- Critically evaluate diverse scholarly views on computational complexity
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into a coherent presentation or essay
- Apply an in-depth domain-specific knowledge and understanding to computer programming
- Creatively apply various programming methods to develop critical and original solutions to computational problems
- Apply a professional and scholarly approach to research problems pertaining to computational complexity
- Efficiently manage interdisciplinary issues that arise in connection to data structured in 1- and 2-dimensional arrays
- Create synthetic contextualised discussions of key issues related to converting scientific knowledge into programming concepts, and how to instantiate these using Object-Oriented methods
- Demonstrate self-direction in research and originality in solutions developed for modern programming languages
- Act autonomously in identifying research problems and solutions related to Object-Oriented programming
- Solve problems and be prepared to take leadership decisions related to the methods and principles of computer programming
About
This course delves into current and emerging topics in cybersecurity, providing students with an understanding of the latest challenges and innovations in the field. Focus areas include Internet of Things (IoT) security, cloud security, and advanced threat detection techniques. The course is designed to keep students at the forefront of cybersecurity, equipping them with the knowledge and skills to address evolving threats and secure modern computing environments.
Teachers
Intended learning outcomes
- Explain how emerging technologies create new security risks and threat surfaces.
- Demonstrate a deep understanding of IoT and cloud security challenges and solutions.
- Analyze and respond to advanced cybersecurity threats with effective countermeasures.
- Stay informed on the latest trends and technologies in cybersecurity to proactively address new threats.
- Implement security strategies tailored to emerging technologies and modern computing architectures.
About
This core course equips the student with knowledge of database management systems, operating systems and computer networks. At the end of the course, students will have a critical understanding of the architecture of computers and networks, as well has how programs interact with these. Students begin with mapping data storage problems (as they had done in Relational Databases) to understand how data is stored in a distributed network, and related issues such as concurrency. Subsequently, students cover operating systems with an overview of process scheduling, process synchronisation and memory management techniques with disk scheduling. The module concludes with computer networks, where we will be discussing all of the computer network layers and their protocols in detail.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of optimising relational database performance in low-latency environments
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to memory management in operating systems
- Acquire knowledge of various methods for troubleshooting computer network layers
- Develop a critical understanding of relational database strategies, process and memory management in operating systems, and computer network protocols
- Critically assess the relevance of theories of database design for business applications in the domain of software engineering
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding of the importance of relational databases in modern software engineering
- Creatively apply various programming methods to most efficiently design databases that perform well under specified constraints
- Autonomously gather material and organise it into a coherent presentation or essay
- Apply a professional and scholarly approach to research problems pertaining to the design of databases in low-latency environments
- Demonstrate self-direction in research and originality in solutions developed for optimising performance of computer networks
- Solve problems and be prepared to take leadership decisions related to relational database design to solve computational and business problems
- Act autonomously in identifying research problems and solutions related to the real-world application of relational databases
- Efficiently manage interdisciplinary issues that arise in connection to process management in operating systems
- Create synthetic contextualised discussions of key issues related to the optimal design and use of databases, operating systems, and computer networks
About
This course provides an in-depth exploration of methods for assessing and managing cybersecurity risks within organizations. Students will learn to identify potential threats, evaluate their impact, and develop strategies to mitigate risks while ensuring business continuity. The course covers risk assessment frameworks, compliance requirements, and the role of cybersecurity in corporate governance. Emphasis is placed on applying theoretical concepts to real-world scenarios, enabling students to effectively manage cybersecurity risks in various organizational settings.
Teachers
Intended learning outcomes
- Analyze and comply with cybersecurity regulations and standards.
- Explain the relationship between cybersecurity threats and organizational risk.
- Demonstrate the ability to conduct comprehensive cybersecurity risk assessments.
- Communicate risk management strategies effectively to stakeholders.
- Design and implement risk management plans tailored to organizational needs.
About
A distributed system is an application that executes a collection of protocols to coordinate the actions of multiple processes on a network, such that all components cooperate together to perform a single or small set of related tasks. Goals of a Distributed System: ● Transparency -> End user does not know what lies behind and how the system is working internally. ● Scalability - > Refers to the growth of the system. ● Availability -> Refers to the system's uptime. The module will carefully examine three case studies, with attention to such topics as: ● Basics of High Level System Design and consistent Hashing ● Caching ● CAP Theorem ● Replication and Master-Slave ● NoSQL ● Differences between SQL and NoSQL ● Multi Master ● Apache Zookeeper & Apache Kafka ● Case Study on ElasticSearch ● AWS S3 and Quad Trees ● Design Distributed Crawler ● Microservices and Containerisation ● Hotstar & IRCTC System design
Teachers
Intended learning outcomes
- Acquire knowledge of various methods for optimising the tradeoffs between consistency and availability in the presence of partitions
- Develop a specialised knowledge of hashing and caching strategies in distributed systems
- Develop a critical understanding of software architecture design
- Critically evaluate diverse scholarly views on containerisation as a system architecture strategy
- Critically assess the relevance of theories of distributed system design for business applications in the realm of software engineering
- Creatively apply various visual and written methods for developing high-level system architecture designs
- Autonomously gather material and organise it into a coherent presentation or essay
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding of the importance of scalability in software engineering
- Create synthetic contextualised discussions of key issues related to designing system architecture that is capable of scaling
- Act autonomously in identifying research problems and solutions related to implementing SQL and NoSQL designs
- Demonstrate self-direction in research and originality in solutions developed for search across distributed environments
- Apply a professional and scholarly approach to research problems pertaining to tradeoffs between consistency and availability when distributed systems are partitioned
- Efficiently manage interdisciplinary issues that arise in connection to microservices and containerisation
- Solve problems and be prepared to take leadership decisions related to designing distributed systems that can scale
About
This course offers students hands-on experience with penetration testing and ethical hacking techniques. It covers various tools and methodologies used to identify and exploit vulnerabilities in computer systems and networks. Students will learn to think like an attacker to better protect organizational assets. The course emphasizes ethical considerations, legal implications, and the importance of responsible disclosure in the context of cybersecurity.
Teachers
Intended learning outcomes
- Understand the legal implications of penetration testing and responsible disclosure.
- Understand and apply ethical principles in the context of hacking.
- Identify and exploit common vulnerabilities using industry-standard tools.
- Develop strategies for securing systems against potential threats.
- Demonstrate the ability to conduct comprehensive penetration tests on various systems.
About
This is a course that focuses both on architectural design and practical hands-on learning of the most used cloud services. The module extensively uses Amazon Web services (AWS) to show real world code examples of various cloud services. It also covers the core concepts and architectures in a platform agnostic manner so that students can easily translate these learnings to other cloud platforms (like Azure, GCP etc.). The module starts with virtualization and how virtualized compute instances are created and configured. Students also learn how to auto-scale applications using load balancers and build fault tolerant applications across a geographically distributed cloud. As relational databases are widely used in most enterprises, students learn how to migrate and scale (both vertically and horizontally) these databases on the cloud while ensuring enterprise grade security. Virtual private clouds enable us to create a logically isolated virtual network of computer resources. Students learn to set up a VPC using virtualized-compute-servers on AWS. The course also covers the basics of networking while setting up a VPC. Students learn of the architecture and practical aspects of distributed object storage and how it enables low latency and high availability data storage on the cloud.
Teachers
Intended learning outcomes
- Acquire knowledge of virtualization and how virtualized compute instances are created and configured
- Develop a critical knowledge of cloud computing
- Develop a specialised knowledge of key strategies related to cloud computing
- Critically assess the relevance of theories for business applications in the domain of technology
- Critically evaluate diverse scholarly views on cloud computing
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Autonomously gather material and organise it into coherent problems sets or presentations
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
About
This course focuses on building basic classification and regression models and understanding these models rigorously both with a mathematical and an applicative focus. It opens with a basic introduction to high dimensional geometry of points, distance-metrics, hyperplanes and hyperspheres. Then, it introduces the mathematical formulation of logistic regression to find a separating hyperplane. Vector calculus and gradient descent (GD)-based algorithms are explored to learn to solve the optimization problem, including computational variations of GD like mini-batch and stochastic gradient descent. The course also covers other popular classification and regression methods like k-Nearest Neighbours, Naive Bayes, Decision Trees, Linear Regression etc, to show how each of these techniques performs under various real-world situations like the presence of outliers, imbalanced data, multi class classification etc. Lectures on bias and variance tradeoff and various techniques to avoid overfitting and underfitting are incorporated. Algorithms are taught from a Bayesian viewpoint along with geometric intuition. This course would be heavily hands-on where students apply all these classical techniques to real world problems.
Teachers
Intended learning outcomes
- Critically assess the relevance of theories of machine learning in the realm of software engineering
- Critically evaluate diverse scholarly views on Bayesian and geometric methods for evaluating algorithms
- Develop a critical understanding of classification and regression machine learning problems
- Acquire knowledge of various methods for solving both classification and regression problems, such as k-nearest neighbours, naïve Bayes, decision trees, and linear regression
- Develop a specialised knowledge of the use of gradient descent and related algorithms for optimising solutions
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Creatively apply various visual and written methods for explaining machine learning solutions to expert and, where possible, nontechnical audiences
- Apply an in-depth domain-specific knowledge and understanding of the use cases of machine learning algorithms in business
- Autonomously gather material and organise it into a coherent presentation or essay
- Efficiently manage interdisciplinary issues that arise in connection to over- and underfitting of data to models
- Apply a professional and scholarly approach to research problems pertaining to gradient descent-based algorithms
- Solve problems and be prepared to take leadership decisions related to selecting algorithms for machine learning problems
- Create synthetic contextualised discussions of key issues related to classification and regression problems
- Demonstrate self-direction in research and originality in solutions developed to account for imbalanced data
- Act autonomously in identifying research problems and solutions related to the classification problems in machine learning
About
This course explores the essential strategies and best practices for responding to and recovering from cybersecurity incidents. Students will learn how to develop and implement incident response plans, manage breaches effectively, and ensure rapid recovery to minimize damage. The course emphasizes the importance of preparation, quick response, and systematic recovery to protect organizational assets and maintain business continuity in the face of cybersecurity threats.
Teachers
Intended learning outcomes
- Explain the importance of preparation, quick response, and systematic recovery in incident handling.
- Conduct thorough post-incident investigations and produce detailed reports.
- Demonstrate proficiency in developing and executing incident response plans.
- Effectively manage a response team during a cybersecurity incident.
- Implement recovery strategies to minimize downtime and damage following an incident.
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen (Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to converting high-level or architectural software design to low-level, component-oriented design
- Develop a critical understanding of software design and refinement processes
- Acquire knowledge of various methods for specifying the logical and functional design of a system
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours
- Creatively apply various visual and written methods for converting architectural/high-level designs to component-oriented, low-level designs
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into a coherent presentation or essay
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components
- Act autonomously in identifying research problems and solutions related to refining software designs
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages
About
Advanced Applied Computer Science is a capstone project, an end-to-end deployable solution to a real-world computational problem that students build in the last phase of the programme. Its objective is to help students rigorously solve a technically challenging problem where they would apply all of the concepts, techniques and tools learned in the programme. Students typically pick a problem from their specialisation after discussing it with the course instructor(s). Students also have the option of working on a real-world problem in their company/organization/institution. They can be mentored by an expert supervisor from their organization along with an academic supervisor from Woolf. All external expert-supervisors and projects need to be approved by the instructor(s) to ensure that the project is technically challenging and the solution being built is rigorous and of high quality. Students start with identifying a technically challenging problem. Once approved by the instructor(s), they start the literature survey to read research papers and technical reports of prior related work. Then, they build the system design and write a design document to solve the problem. This would be followed by designing and implementing individual modules and testing them. This would be followed by deploying the solution and making it available to end users while satisfying the problem’s real-world constraints and objectives. Students then document their work into a detailed technical report
Teachers
Intended learning outcomes
- Critically assess the relevance of theories for business applications in the domain of technology
- Critically evaluate diverse scholarly views on modern computational applications
- Develop a critical knowledge of modern computational applications
- Acquire knowledge of an end-to-end deployable solution to a real-world computational problem
- Develop a specialised knowledge of key strategies related to modern computational applications
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into coherent problem sets or presentations
- Creatively apply computational applications to develop critical and original solutions for computational problems
- Apply an in-depth domain-specific knowledge and understanding of modern day computational applications
- Act autonomously in identifying research problems and solutions related to modern computational tools and methods
- Demonstrate self-direction in research and originality in solutions developed for robust and reliable systems using interacting modules
- Solve problems and be prepared to take leadership decisions related to the methods and principles of modern computational applications
- Create synthetic contextualised discussions of key issues related to real-world computational problems
- Apply a professional and scholarly approach to research problems pertaining to real-world modern computational complexities
- Efficiently manage interdisciplinary issues that arise in connection to modern day computational methods and principles
Master of Science in Computer Science
Downloads
Apply Now
Ready to start your journey? Apply for Master of Science in Computer Science today.