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 specialisation 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.
Target Audience
- Ages 19-30, 31-65, 65+
Target Group
This course is designed for individuals who wish to enhance their knowledge of computer science and its various applications used in different fields of employment. It is designed for those that will have responsibility for planning, organizing, and directing technological operations. In all cases, the target group should be prepared to pursue substantial academic studies. Students must qualify for the course of study by entrance application. A prior computer science degree is not required; however the course does assume technical aptitude; and it targets students with finance, engineering, or STEM training or professional experience.
Mode of attendance
Online/Blended Learning
Structure of the programme - Please note that this structure may be subject to change based on faculty expertise and evolving academic best practices. This flexibility ensures we can provide the most up-to-date and effective learning experience for our students.The Master of Science in Computer Science combines asynchronous components (lecture videos, readings, and assignments) and synchronous meetings attended by students and a teacher during a video call. Asynchronous components support the schedule of students from diverse work-life situations, and synchronous meetings provide accountability and motivation for students. Students have direct access to their teacher and their peers at all times through the use of direct message and group chat; teachers are also able to initiate voice and video calls with students outside the regularly scheduled synchronous sessions. Modules are offered continuously on a publicly advertised schedule consisting of cohort sequences designed to accommodate adult students at different paces. Although there are few formal prerequisites identified throughout the programme, enrollment in courses depends on advisement from Woolf faculty and staff.The degree has 3 tiers: The first tier is required for all students, who must take 15 ECTS. In the second tier, students must select 45 ECTS from elective tiers. Under the guidance of the Academic Staff at Woolf, students may either select exclusively from one specialization track (in which case they will earn that specialization), or they may mix tracks (in which case they will finish without a specialization). Tier Three may be completed in two different ways: a) by completing a 30ECTS Advanced Applied Computer Science capstone project, or b) by completing a 10 ECTS Applied Computer Science project and 20 ECTS of electives from the program.
Grading System
Scale: 0-100 points
Components: 60% of the mark derives from the average of the assignments, and 40% of the mark derives from the cumulative examination
Passing requirement: minimum of 60% overall
Dates of Next Intake
Rolling admission
Pass rates
2023 pass rates will be publicised in the next cycle, contingent upon ensuring sufficient student data for anonymization.
Identity Malta’s VISA requirement for third country nationals: https://www.identitymalta.com/unit/central-visa-unit/
Passing requirement: minimum of 60% overall
Dates of Next Intake
Rolling admission
Pass rates
2023 pass rates will be publicised in the next cycle, contingent upon ensuring sufficient student data for anonymization. Identity Malta’s VISA requirement for third country nationals: https://www.identitymalta.com/unit/central-visa-unit/
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
Master of Science in Computer Science
Downloads
Course Structure
Tiers
Tier 1
375 hours | 15 ECTS
Tier 1
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
- Develop a specialised knowledge of key strategies related to Data Structures and their usage in computer science
- Critically evaluate diverse scholarly views on data structures
- Critically assess the relevance of theories for business applications in the domain of technology
- 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
- Develop a critical knowledge of Data Structures and their implementation
- Autonomously gather material and organise it into coherent data structures
- Apply data structures in a creative way to develop original, critical solutions to real world problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding of Data Structures
- Create synthetic contextualised discussions of key issues related to Data Structures and the different approached to their implementation
- Demonstrate self-direction in research and originality in solutions developed for Data Structures and their implementation
- Act autonomously in identifying research problems and solutions related to Data Structures and their implementation
- Efficiently manage interdisciplinary issues that arise in connection to 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
About
The ability to solve problems is a skill, and just like any other skill, the more one
practices, the better one gets. So how exactly does one practice problem solving?
Learning about different problem-solving strategies and when to use them will give a good start. Problem solving is a process. Most strategies provide steps that help you identify the problem and choose the best solution.
Building a toolbox of problem-solving strategies will improve problem solving skills. With practice, students will be able to recognize and choose among multiple
strategies to find the most appropriate one to solve complex problems. The course will focus on developing problem-solving strategies such as abstraction, modularity, recursion, iteration, bisection, and exhaustive enumeration.
The course will also introduce arrays and some of their real-world applications,
such as prefix sum, carry forward, subarrays, and 2-dimensional matrices. Examples will include industry-relevant problems and dive deeply into building their solutions with various approaches, recognizing each’s limitations (i.e when to use a data structure and when not to use a data structure).
By the end of this course a student can come up with the best strategy which can
optimize both time and space complexities by choosing the best data structure
suitable for a given problem
Teachers
Intended learning outcomes
- Critically assess the relevance of theories of problem-solving for business applications in the domain of software development
- Develop a critical understanding of problem-solving strategies in computing
- Critically evaluate diverse scholarly views on the appropriateness of various problem-solving strategies
- Acquire knowledge of various methods for structuring data in arrays
- Develop a specialised knowledge of key strategies related to structuring data
- Autonomously gather material and organise it into a coherent presentation or essay
- Apply an in-depth domain-specific knowledge and understanding to problem solving
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- 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 data structures
- Act autonomously in identifying research problems and solutions related to arrays and their real-world applications
- Create synthetic contextualised discussions of key issues related to problem-solving, and moving from algorithmic to heuristic problem-solving strategies.
- Demonstrate self-direction in research and originality in solutions developed for solving problems related to data structures
- Solve problems and be prepared to take leadership decisions related to applying problem-solving heuristics
- Efficiently manage interdisciplinary issues that arise in connection to problem solving
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
- Acquire knowledge of various methods for structuring data
- Critically evaluate diverse scholarly views on computational complexity
- Develop a specialised knowledge of key strategies related to Object-Oriented Programming
- 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
- 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
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Solve problems and be prepared to take leadership decisions related to the methods and principles of computer programming
- 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
- Apply a professional and scholarly approach to research problems pertaining to computational complexity
- 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
Tier 2
1125 hours | 45 ECTS
Tier 2
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
- Acquire knowledge of various methods for specifying the logical and functional design of a system
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours
- Develop a critical understanding of software design and refinement processes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering
- 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
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes
- Creatively apply various visual and written methods for converting architectural/high-level designs to component-oriented, low-level design
- 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
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
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
- Acquire knowledge of various methods for troubleshooting computer network layers.
- Critically assess the relevance of theories of database design for business applications in the domain of software engineering.
- Develop a critical understanding of relational database strategies, process and memory management in operating systems, and computer network protocols.
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to memory management in operating systems.
- Develop a specialised knowledge of optimising relational database performance in low-latency environments.
- Apply an in-depth domain-specific knowledge and understanding of the importance of relational databases in modern software engineering.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- 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.
- Act autonomously in identifying research problems and solutions related to the real-world application of relational databases.
- Apply a professional and scholarly approach to research problems pertaining to the design of databases in low-latency environments.
- Create synthetic contextualised discussions of key issues related to the optimal design and use of databases, operating systems, and computer networks.
- Solve problems and be prepared to take leadership decisions related to relational database design to solve computational and business problems.
- Efficiently manage interdisciplinary issues that arise in connection to process management in operating systems.
- Demonstrate self-direction in research and originality in solutions developed for optimising performance of computer networks.
About
This course focuses on building basic classification and regression models and
understanding these models rigorously both with a mathematical and an
applicative focus. The module starts with a basic introduction to high dimensional
geometry of points, distance-metrics, hyperplanes and hyperspheres. We build on
top this to introduce the mathematical formulation of logistic regression to find a
separating hyperplane. Students learn to solve the optimization problem using
vector calculus and gradient descent (GD) based algorithms. The module introduces computational variations of GD like mini-batch and stochastic gradient descent.
Students also learn other popular classification and regression methods like k-
Nearest Neighbours, NaiveI Bayes, Decision Trees, Linear Regression etc. Students
Teachers
Intended learning outcomes
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to machine learning.
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting.
- Critically evaluate diverse scholarly views on machine learning.
- Develop a critical knowledge of machine learning.
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions.
- Autonomously gather material and organise it into coherent problem sets and presentation.
- Creatively apply regression models to develop critical and original solutions for computational issues.
- 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 machine learning.
- Act autonomously in identifying research problems and solutions related to machine learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of machine learning.
- Create synthetic contextualised discussions of key issues related to machine learning.
- Apply a professional and scholarly approach to research problems pertaining to machine learning.
- Efficiently manage interdisciplinary issues that arise in connection to machine learning.
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 evaluate diverse scholarly views on cloud computing
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Autonomously gather material and organise it into coherent problems sets or presentations
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Act autonomously in identifying research problems and solutions related to cloud computing
- Solve problems and be prepared to take leadership decisions related to the methods and principles of cloud computing
- Apply a professional and scholarly approach to research problems pertaining to cloud computing
- Create synthetic contextualised discussions of key issues related to cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to cloud computing
About
This course introduces more advanced ML techniques like ensembles: bagging,
boosting, cascading and stacking classifiers and regressors. It covers both the
theoretical foundations and applicative details of these techniques along with
popular implementations of boosting like LightGBM, CatBoost and XGBoost.
Students also delve into kernel methods with specific focus on SVMs for
classification and regression. Students will study state of the art model agnostic
feature importance and model-interpretability techniques like LIME and SHAP.
Students also study classical NLP based text encoding methods like Bag-of-words, TF-IDF etc. The module teaches various classical methods in time series analysis and forecasting like ARMA, ARIMA etc. Students also learn how to pose time series forecasting problems as regression and classification problems to leverage well studied ML techniques. This is followed by various domain and problem specific Feature engineering techniques that are often helpful in real world problem solving. Students will study methods like error analysis, ablative analysis etc., to debug and understand why and where a model is performing well and where it is not performing well. This will further help us in designing appropriate features. Students study model calibration techniques like Platt Scaling, Isotonic Regression etc. Later in this course, we cover how to build recommender systems using content-based and collaborative filtering methods. The module also teaches the detailed solution of the Netflix prize (2009) and various recent advances in RecSys
Teachers
Intended learning outcomes
- Acquire knowledge of model calibration techniques like Platt Scaling, Isotonic Regression.
- Critically evaluate diverse scholarly views on Advanced Machine Learning.
- Develop a critical knowledge of Advanced Machine Learning.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Advanced Machine Learning.
- Apply an in-depth domain-specific knowledge and understanding to Advanced Machine Learning.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Creatively apply Advanced Machine Learning techniques to develop critical and original solutions for computation problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply a professional and scholarly approach to research problems pertaining to Advanced Machine Learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Advanced Machine Learning.
- Create synthetic contextualised discussions of key issues related to Advanced Machine Learning.
- Demonstrate self-direction in research and originality in solutions developed for Advanced Machine Learning.
- Act autonomously in identifying research problems and solutions related to Advanced Machine Learning.
- Efficiently manage interdisciplinary issues that arise in connection to Advanced Machine Learning.
About
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The
module teaches various aspects of Node.js like setup, package manager, client-
server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Back end Development.
- Develop a specialised knowledge of key strategies related to Back end Development.
- Acquire knowledge of key aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Critically evaluate diverse scholarly views on Back end Development.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Creatively apply Back end Development tools to develop critical and original solutions for computational problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to Back end Development applications.
- Create synthetic contextualised discussions of key issues related to Back end Development.
- Demonstrate self-direction in research and originality in solutions developed for Back end Development.
- Act autonomously in identifying research problems and solutions related to Back end Development.
- Efficiently manage interdisciplinary issues that arise in connection to Back end Development.
- Apply a professional and scholarly approach to research problems pertaining to Back end Development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Back end Development.
About
This course provides a dive deep into more advanced concepts in server-side
programming using Node.js to enable initiative, real-time and scalable web
applications. We dive into threading and thread pools in Node.js and how they can
be leveraged to build more responsive web apps. We learn socket programming
using socket.io and Node.js for instant messaging, document collaboration, real
time analytics and streaming applications. Students also learn to use Caching using distributed in-memory key-value stores (like Redis) to rescue latency while serving web-apps. Students also learn how to use Node.js with popular NoSQL data stores like MongoDB for storing unstructured data. We also cover GraphQL which is an open source data query and manipulation language for APIs, which is gaining popularity more recently. We learn popular protocols like OAuth to enable cross platform logins. Students also learn the architecture and practical aspects of Web-RTC to enable multimedia applications like video-chat, live-streaming, music-streaming etc.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on Advanced Back End Development
- Develop a specialised knowledge of key strategies related to Advanced Back End Development applications
- Acquire knowledge of threading and thread pools in Node.js and how they can be leveraged to build more responsive web apps
- Develop a critical knowledge of Advanced Back End Development
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to Advanced Back End Development solutions
- Creatively utilize Advanced Back End Development applications to develop critical and original solutions for computational problems
- Autonomously gather material and organise it into coherent problems sets or presentations
- Efficiently manage interdisciplinary issues that arise in connection to Advanced Back End Development
- Create synthetic contextualised discussions of key issues related to Advanced Back End Developmen
- Apply a professional and scholarly approach to research problems pertaining to Advanced Back End Development
- Demonstrate self-direction in research and originality in solutions developed for Advanced Back End Development
- Act autonomously in identifying research problems and solutions related to Advanced Back End Development
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Advanced Back End Development
About
This course provides a practical and detailed understanding of popular
programming paradigms and data storage types. Students learning this will be able to write and solve programming problems. The course starts from the basics about functions, various built in functions and how to code user defined functions. Then students will learn about various data type storages and learn about lists and how various manipulations can be done lists like list slicing and also go through examples of 2D Lists.
While learning how to create functions students have to learn how various results
and inputs can be stored using different data types after the introduction and
discussion on Lists, students will go through sets, tuples, Dictionaries and Strings.
The student should be well prepared to apply these concepts and build algorithms
and software using what they learnt in this course.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of the various uses and forms of lists in programming, including 2D lists.
- Critically evaluate diverse scholarly views on functions and algorithms.
- Critically assess the relevance of theories of data storage for programming.
- Acquire knowledge of various methods for storing data in modern programming languages.
- Develop a critical knowledge of product design and development.
- Creatively apply various visual, written, and code-based methods for manipulating tuples, strings, lists, and similar structures.
- Apply an in-depth domain-specific knowledge and understanding of computer programming and data management.
- 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.
- Solve problems and be prepared to take leadership decisions related to programming concepts such as lists, sets, tuples, dictionaries, and strings.
- Efficiently manage interdisciplinary issues that arise in connection to choosing the best data type for a particular programming need.
- Apply a professional and scholarly approach to research problems pertaining to functions and data types.
- Create synthetic contextualised discussions of key issues related to data storage and how popular programming languages handle this
- Demonstrate self-direction in research and originality in handling data in lists.
- Act autonomously in identifying research problems and solutions related to data storage.
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
- Critically assess the relevance of theories of distributed system design for business applications in the realm of software engineering
- 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
- Apply an in-depth domain-specific knowledge and understanding of the importance of scalability in software engineering
- Autonomously gather material and organise it into a coherent presentation or essay
- Creatively apply various visual and written methods for developing high-level system architecture designs
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- 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
- Solve problems and be prepared to take leadership decisions related to designing distributed systems that can scale
- Apply a professional and scholarly approach to research problems pertaining to tradeoffs between consistency and availability when distributed systems are partitioned
- Create synthetic contextualised discussions of key issues related to designing system architecture that is capable of scaling
- Efficiently manage interdisciplinary issues that arise in connection to micro services and containerisation
About
Gain a seamless transition into professional roles by refining interview skills and providing structured job search guidance. The program focuses on building career assets, mastering behavioral and technical interviews, and initiating a structured job search process. Progressing through program stages empowers individuals to confidently pursue and secure desired roles in the dynamic tech industry.
Teachers
Intended learning outcomes
- Learners will understand what employers in the tech industry are looking for in candidates, including both technical and soft skills.
- Learners will gain knowledge about different career paths in the tech industry, including roles, responsibilities, and typical career progression.
- Learners will gain an in-depth understanding of the various formats and types of technical interviews, including coding interviews, system design interviews, and behavioral interviews.
- Learners will understand the key elements that make a strong technical resume and portfolio, and how these documents are used in the job search process.
- Learners will develop strong written and verbal communication skills for networking, interviews, and workplace interactions.
- Learners will develop the skills to effectively prepare for and perform in various types of technical interviews, including problem-solving, coding, and system design.
- Learners will become proficient in researching companies and roles to tailor their application materials and interview preparation.
- Learners will acquire the skills to create compelling resumes and portfolios that effectively showcase their skills and experiences.
- Learners will demonstrate a commitment to ongoing professional development, including the ability to identify skill gaps and seek opportunities for growth.
- Learners will demonstrate the ability to effectively market themselves through resumes, portfolios, and personal narratives.
- Learners will demonstrate competence in managing the job search process, including tracking applications, following up, and negotiating offers.
- Learners will be able to effectively prepare for and perform in technical interviews, demonstrating both technical proficiency and interpersonal skills.
About
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on three very
popular frameworks/libraries in use: React.js, jQuery and AngularJS. We start with React.js, one of the most popular and advanced ones amongst the three. students learn various components and data flow to learn to architect real world front end using React.js. This would be achieved via multiple code examples and code-walkthroughs from scratch. We would also dive into React Native which is a cross platform Framework to build native mobile and smart-TV apps using JavaScript. This helps students to build applications for various platforms using only JavaScript. jQuery is one of the oldest and most widely used JavaScript libraries, which students cover in detail. Students specifically focus on how jQuery can simplify event handling, AJAX, HTML DOM tree manipulation and create CSS animations. We also provide a hands-on introduction to AngularJS to architect model-view-controller (MVC) based dynamic web pages.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to front end development.
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Critically evaluate diverse scholarly views on front end development.
- Apply an in-depth domain-specific knowledge and understanding to front end development solutions.
- Creatively apply front end development applications to develop critical and original solutions for computational problems.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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 front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
- Efficiently manage interdisciplinary issues that arise in connection to front end development.
- Apply a professional and scholarly approach to research problems pertaining to front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Act autonomously in identifying research problems and solutions related to front end development.
About
This is a hands-on course on designing responsive, modern, and lightweight UI for
web, mobile, and desktop applications using HTML5, CSS, and Frameworks like
Bootstrap 4. This course starts with an introduction to how web browsers, mobile
apps, and web servers work. We then dive into each of the nitty-gritty details of
HTML5 to build webpages. We would start with simple web pages and then
graduate to more complex layouts and features in HTML like forms, iFrames,
multimedia playback, and using web APIs. We then go on to learn stylesheets based on CSS 4 and how browsers interpret CSS files to render web pages. Once again, we use multiple real-world example web pages to learn the internals of CSS4. We learn popular good practices for writing responsive HTML and CSS code, which is also interoperable on mobile browsers, apps, and desktop apps. We would introduce students to building desktop apps using HTML and CSS using toolkits like Electron. We would also study popular frameworks for front end development like Bootstrap 4, which can speed up UI development significantly.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to Front end UI/UX development
- Develop a critical knowledge of Front end UI/UX development
- Critically evaluate diverse scholarly views on Front end UI/UX development
- Acquire knowledge of HTML5, CSS and Frameworks like Bootstrap 4
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise into a coherent problem sets or presentation
- Creatively apply Front end UI/UX development applications to develop critical and original solutions for computational problems.
- Apply an in-depth domain-specific knowledge and understanding to technology
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Front end UI/UX developmen
- Create synthetic contextualised discussions of key issues related to Front end UI/UX development
- Apply a professional and scholarly approach to research problems pertaining to Front end UI/UX development
- Act autonomously in identifying research problems and solutions related to Front end UI/UX development
- Demonstrate self-direction in research and originality in solutions developed for Front end UI/UX development
- Efficiently manage interdisciplinary issues that arise in connection to Front end UI/UX development
About
This course is aimed to help learners understand various techniques and algorithms
to visualize, analyse and understand high dimensional data which is very common
in Data Science and ML. The module starts with linear algebraic methods like
Principal Component Analysis (PCA) and SVD (Singular Value Decomposition) for
obtaining linear projection of high dimensional data. This is followed by more
advanced nonlinear and state of the art techniques like t-SNE and UMAP for
visualizing high dimensional data. Each of these techniques would be covered in full mathematical detail from first principles along with applying them to real world datasets in NLP, Genomics and internet-datasets. Students will also study how PCA and SVD are related to general Matrix Factorization techniques. To analyse and understand high dimensional un-labelled data, students learn clustering techniques like K-Means, Gaussian Mixture models, Hierarchical Clustering and DBSCAN. The modules show how some of the techniques are mathematically related to Matrix Factorization. Students study various outlier detection techniques based on density, proximity, factorization and cluster analysis.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Data Analysis.
- Develop a specialised knowledge of key strategies related to Data Analysis.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Critically evaluate diverse scholarly views on Data Analysis.
- Acquire knowledge of clustering techniques like K-Means, Gaussian Mixture models, Hierarchical Clustering and DBSCAN.
- Apply an in-depth domain-specific knowledge and understanding to Data Analysis techniques.
- Creatively apply various techniques to develop critical and original solutions for computational problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problems sets or presentation.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Data Analysis.
- Efficiently manage interdisciplinary issues that arise in connection to Data Analysis.
- Act autonomously in identifying research problems and solutions related to Data Analysis.
- Apply a professional and scholarly approach to research problems pertaining to Data Analysis.
- Demonstrate self-direction in research and originality in solutions developed for data analysis.
- Create synthetic contextualised discussions of key issues related to Data Analysis.
About
This is a core and foundational course which aims to equip the student with the
ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create,
modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the opensource MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Teachers
Intended learning outcomes
- Develop a critical knowledge of relational databases.
- Critically evaluate diverse scholarly views on relational databases.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Acquire knowledge of SQL as tool to create, modify, append, delete, query and manipulate data in a relational database.
- Develop a specialised knowledge of key strategies related to Relational Databases.
- Apply an in-depth domain-specific knowledge and understanding to Relational Databases.
- Creatively apply Relational Databases methods to develop critical and original solutions for computational problems.
- 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.
- Act autonomously in identifying research problems and solutions related to Relational Databases.
- Apply a professional and scholarly approach to research problems pertaining to Relational Databases.
- Demonstrate self-direction in research and originality in solutions developed for Relational Databases.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Relational Databases.
- Create synthetic contextualised discussions of key issues related to Relational Databases.
- Efficiently manage interdisciplinary issues that arise in connection to implementation and query of relational databases.
About
This course provides a strong mathematical and applicative introduction to Deep
Learning. The module starts with the perceptron model as an over simplified
approximation to a biological neuron. We motivate the need for a network of
neurons and how they can be connected to form a Multi Layered Perceptron
(MLPs). This is followed by a rigorous understanding of back-propagation
algorithms and its limitations from the 1980s. Students study how modern deep
learning took off with improved computational tools and data sets. We teach more modern activation units (like ReLU and SeLU) and how they overcome problems with the more classical Sigmoid and Tanh units. Students learn weight initialization methods, regularization by dropouts, batch normalization etc., to ensure that deep MLPs can be successfully trained. The module teaches variants of Gradient Descent that have been specifically designed to work well for deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec as unsupervised, encoding deep-learning architectures. We apply all of the foundational theory learned to various real world problems using TensorFlow 2 and Keras. Students also understand how TensorFlow 2 works internally with specific focus on computational graph processing.
Teachers
Intended learning outcomes
- Acquire knowledge of deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec.
- Critically evaluate diverse scholarly views on Deep Learning.
- Develop a critical knowledge of Deep Learning.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Deep Learning.
- Creatively apply Deep Learning techniques to develop critical and original solutions for computational problems.
- Apply an in-depth domain-specific knowledge and understanding to Deep Learning.
- Autonomously gather material and organise it into coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Create synthetic contextualized discussions of key issues related to Deep Learning.
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning.
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning.
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning.
- Act autonomously in identifying research problems and solutions related to Deep Learning.
About
Embark on a journey into the vibrant world of open source software with our course, "Open Source Ecosystem." Participants will explore foundational principles and community-driven development models through interactive lectures and projects. Gain practical skills in contributing to existing projects and initiating new ones, and gain a deep understanding of open source's impact on technology and innovation.
Teachers
Intended learning outcomes
- Learners will gain an in-depth understanding of the history, philosophy, and key principles that underlie open-source ecosystems.
- Learnerswill be able to identify and describe the roles of key players in open-source ecosystems, including developers, maintainers, users, and organizations.
- Learners will understand the various types of open-source licenses, their implications, and the legal frameworks surrounding open-source projects.
- Learners will understand the typical lifecycle of open-source projects and the governance models that guide decision-making and contributions.
- Learners will acquire the skills to effectively contribute to open-source projects, including coding, documentation, and community engagement.
- Learners will be able to critically evaluate the quality, sustainability, and relevance of an open-source project for various use-cases.
- Learners will be able to apply their understanding of open-source licenses to choose appropriate licenses for new projects and to comply with the licenses of existing projects.
- Learners will become proficient in using tools and platforms commonly used in open-source ecosystems, such as Git, GitHub, and issue trackers.
- Learners will be competent in engaging with the community, including effective communication through mailing lists, forums, and code reviews.
- Learners will be competent in managing aspects of an open-source project, including planning, coordination, and execution.
- Learners will be able to recognize and address ethical considerations in open-source ecosystems, such as inclusivity, accessibility, and the responsible use of code.
- Learners will demonstrate the ability to work effectively in a collaborative, distributed environment, typical of open-source projects.
About
Dive into theoretical frameworks and practical methodologies independently, tackling complex computational challenges. Engage in hands-on research projects and experimental design to advance your understanding of modern computer science methodologies.
Teachers
Intended learning outcomes
- Learners will acquire a deep understanding of the fundamental principles and methodologies used in computer science research, including both qualitative and quantitative approaches.
- Learners will understand the statistical methods and analytical tools commonly used in computer science research for data collection and interpretation.
- Learners will gain knowledge of the ethical considerations and guidelines that govern research in computer science, including issues related to data privacy, informed consent, and academic integrity.
- Learners will understand the importance of literature review in framing a research question and will be familiar with the conventions of academic writing in computer science.
- Learners will develop the skills to write clear, concise, and well-structured research papers and reports, adhering to academic standards and guidelines.
- Learners will develop the skills to design and conduct independent research projects, including problem identification, hypothesis formulation, and experimental design.
- Learners will acquire the skills to analyze and interpret research data, utilizing appropriate statistical and computational methods.
- Learners will become proficient in using specialized software and tools commonly used in computer science research, such as data analysis software, simulation tools, and version control systems.
- Learners will demonstrate competence in managing a research project from inception to completion, including planning, resource allocation, and timeline management.
- Learners will demonstrate the ability to critically evaluate existing research, including the assessment of validity, reliability, and relevance.
- Learners will demonstrate competence in communicating their research findings effectively, both in written form and through oral presentations, to academic and non-academic audiences.
- Learners will demonstrate the ability to conduct research in an ethical manner, adhering to institutional and international guidelines.
About
Low-Level Design & Design Patterns focuses on modularity and reusability in
software design, common design vocabularies, refactoring and how to reduce it,
and how to incorporate design patterns into iterative development processes. The course pays significant attention to the interaction between system architecture and components, including data organisation.
The course begins with Object-Oriented Analysis (OOA), which is a problems-solving technique that includes: modelling an information design; representing behaviour; describing functions; dividing data, functional, and behavioural models to uncover detail; moving from abstraction to implementation details. The course then turns to Object-Oriented Design (OOD), which reduces the analysis model into a modular design for software creation, with subsystems, components, and objects.
The iteration of analysis and implementation will be covered in detail with real-
world industry examples..
Teachers
Intended learning outcomes
- Develop a critical understanding of object-oriented analysis and design
- Critically assess the relevance of theories of reusable design for business applications in the domain of software engineering
- Develop a specialised knowledge of modelling data, behaviour, and function in software
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to design patterns for object-oriented design
- Acquire knowledge of various methods for specifying modular elements in a software subsystem
- 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 object-oriented design in software engineering
- Creatively apply various design patterns to most efficiently design software that meets specified criteria
- 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 designing reusable software elements
- Create synthetic contextualised discussions of key issues related to Object- Oriented Analysis and Design
- Apply a professional and scholarly approach to research problems pertaining to building software with reusable elements
- Act autonomously in identifying research problems and solutions related to the modular, procedural software design
- Efficiently manage interdisciplinary issues that arise in connection to modelling data, behaviour, and function
- Solve problems and be prepared to take leadership decisions related to developing design patterns to solve problems in software design
About
This course introduces basic probability theory , statistical methods and
computational algorithms to perform mathematically rigorous data analysis. The
course starts with basic foundational concepts of random variables, histograms,
and various plots (PMF, PDF and CDF). Students learn various popular discrete and continuous distributions like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, log-normal etc., both mathematically and from an applicative perspective.
Students learn various measures like mean, median, percentiles, quantiles, variance and interquartile-range. Students learn the pros and cons of each metric and understand when and how to use them in practice. Students will learn conditional probability and Bayes theorem in the applied context of real-world problems in medicine and healthcare. The module teaches the foundations of non-parametric statistics and applies them to solve problems using computational tools. Students learn various methods to determine correlations rigorously in data. This is followed by applied and mathematical understanding of the statistics underlying control- treatment (A/B) experiments and hypothesis testing. The module engages computation tools in modern statics like Bootstrapping, Monte-Carlo methods, RANSAC etc.
Teachers
Intended learning outcomes
- Acquire knowledge of popular discrete and continuous distributions (like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, and log-normal).
- Critically evaluate diverse scholarly views on Applied Statistics.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of Applied Statistics.
- Develop a specialised knowledge of key strategies related to Applied Statistics.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding of applied statistics.
- Creatively apply basic probability theory to develop critical and original solutions for computational problems.
- Autonomously gather material and organise it into a coherent problem set or presentation.
- Apply a professional and scholarly approach to research problems pertaining to probability theory to perform mathematically rigorous data analysis.
- Demonstrate self-direction in research and originality in solutions developed for Applied Statistics.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Applied Statistics.
- Act autonomously in identifying research problems and solutions related to Applied Statistics.
- Create synthetic contextualised discussions of key issues related to Applied Statistics.
- Efficiently manage interdisciplinary issues that arise in connection to Applied Statistics.
About
This course helps students translate mathematical/statistical/scientific concepts
into code. This is a foundational course for writing code to solve Data Science ML & AI problems. It introduces basic programming concepts (like control structures,
recursion, classes and objects) from scratch, assuming no prerequisites, to make
this course accessible to students from non-computational scientific fields like
Biology, Physics, Medicine, Chemistry, Civil & Mechanical Engineering etc. After
building a strong foundation, the course advances to dive deep into core
Mathematical libraries like NumPy, Scipy and Pandas. Students also learn when and how to use inbuilt-data structures like Lists, Dicts, Sets and Tuples. The module introduces the concepts of computational complexity to help students write optimized code using appropriate data structures and algorithmic design methods. The module does not dive deep into the data structures and algorithm design methods in this course – that is available in the ‘Data Structures and Algorithms’ module. This course is valuable for all students specializing in mathematical sub- areas of CS like ML, Data Science, Scientific Computing etc.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Numerical programming in Python.
- Critically evaluate diverse scholarly views on Numerical programming in Python.
- Acquire knowledge of core Mathematical libraries like NumPy, Scipy and Pandas.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Numerical programming in Python.
- Create new solutions that are critical to solving computational problems through creatively applying code writing.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organize it into a coherent problem sets or presentation.
- Apply an in-depth domain-specific knowledge and understanding to numerical programming in Python.
- Demonstrate self-direction in research and originality in solutions developed for Numerical programming in Python.
- Act autonomously in identifying research problems and solutions related to Numerical programming in Python.
- Create synthetic contextualised discussions of key issues related to Numerical programming in Python.
- Apply a professional and scholarly approach to research problems pertaining to Numerical programming in Python.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Numerical programming in Python.
- Efficiently manage interdisciplinary issues that arise in connection to Numerical programming in Python.
About
Engage in hands-on exploration of fundamental algorithms, data structures, and advanced algorithmic techniques. Through real-world projects and collaborative problem-solving, students develop expertise in designing, analyzing, and optimizing algorithms. Get equipped with the practical skills and theoretical understanding to tackle complex computational challenges in modern technology environments.
Teachers
Intended learning outcomes
- Acquire knowledge of various algorithmic design methods
- Develop a critical knowledge of design and analysis of algorithms
- Critically evaluate diverse scholarly views on design and analysis of algorithms
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised knowledge of key strategies related to design and analysis of algorithms
- Apply an in-depth domain-specific knowledge and understanding to design and analysis of algorithms
- Creatively apply various algorithmic design methods to develop critical and original solutions to computational problems
- 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
- Efficiently manage interdisciplinary issues that arise in connection to design and analysis of algorithms
- Demonstrate self-direction in research and originality in solutions developed for design and analysis of algorithms
- Apply a professional and scholarly approach to research problems pertaining 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
- Act autonomously in identifying research problems and solutions related to design and analysis of algorithms
- Create synthetic contextualised discussions of key issues related to design and analysis of algorithms to provide solutions to computational problems
Tier 3
750 hours | 30 ECTS
Tier 3
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
- Develop a specialised knowledge of key strategies related to modern computational applications
- Develop a critical knowledge of modern computational applications
- Critically evaluate diverse scholarly views on modern computational applications
- Acquire knowledge of an end-to-end deployable solution to a real-world computational problem
- Creatively apply computational applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding of modern day computational applications
- Autonomously gather material and organise it into coherent problem sets or presentations
- Create synthetic contextualised discussions of key issues related to real-world computational problems
- Demonstrate self-direction in research and originality in solutions developed for robust and reliable systems using interacting modules
- Efficiently manage interdisciplinary issues that arise in connection to modern day computational methods and principles
- Act autonomously in identifying research problems and solutions related to modern computational tools and methods
- Apply a professional and scholarly approach to research problems pertaining to real-world modern computational complexities
- Solve problems and be prepared to take leadership decisions related to the methods and principles of modern computational applications
Specializations
Specialization certificate in Full Stack Development
1125 hours | 45 ECTS
Specialization certificate in Full Stack Development
About
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on three very
popular frameworks/libraries in use: React.js, jQuery and AngularJS. We start with React.js, one of the most popular and advanced ones amongst the three. students learn various components and data flow to learn to architect real world front end using React.js. This would be achieved via multiple code examples and code-walkthroughs from scratch. We would also dive into React Native which is a cross platform Framework to build native mobile and smart-TV apps using JavaScript. This helps students to build applications for various platforms using only JavaScript. jQuery is one of the oldest and most widely used JavaScript libraries, which students cover in detail. Students specifically focus on how jQuery can simplify event handling, AJAX, HTML DOM tree manipulation and create CSS animations. We also provide a hands-on introduction to AngularJS to architect model-view-controller (MVC) based dynamic web pages.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to front end development.
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Critically evaluate diverse scholarly views on front end development.
- Apply an in-depth domain-specific knowledge and understanding to front end development solutions.
- Creatively apply front end development applications to develop critical and original solutions for computational problems.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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 front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
- Efficiently manage interdisciplinary issues that arise in connection to front end development.
- Apply a professional and scholarly approach to research problems pertaining to front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Act autonomously in identifying research problems and solutions related to front end development.
About
This is a hands-on course on designing responsive, modern, and lightweight UI for
web, mobile, and desktop applications using HTML5, CSS, and Frameworks like
Bootstrap 4. This course starts with an introduction to how web browsers, mobile
apps, and web servers work. We then dive into each of the nitty-gritty details of
HTML5 to build webpages. We would start with simple web pages and then
graduate to more complex layouts and features in HTML like forms, iFrames,
multimedia playback, and using web APIs. We then go on to learn stylesheets based on CSS 4 and how browsers interpret CSS files to render web pages. Once again, we use multiple real-world example web pages to learn the internals of CSS4. We learn popular good practices for writing responsive HTML and CSS code, which is also interoperable on mobile browsers, apps, and desktop apps. We would introduce students to building desktop apps using HTML and CSS using toolkits like Electron. We would also study popular frameworks for front end development like Bootstrap 4, which can speed up UI development significantly.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to Front end UI/UX development
- Develop a critical knowledge of Front end UI/UX development
- Critically evaluate diverse scholarly views on Front end UI/UX development
- Acquire knowledge of HTML5, CSS and Frameworks like Bootstrap 4
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise into a coherent problem sets or presentation
- Creatively apply Front end UI/UX development applications to develop critical and original solutions for computational problems.
- Apply an in-depth domain-specific knowledge and understanding to technology
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Front end UI/UX developmen
- Create synthetic contextualised discussions of key issues related to Front end UI/UX development
- Apply a professional and scholarly approach to research problems pertaining to Front end UI/UX development
- Act autonomously in identifying research problems and solutions related to Front end UI/UX development
- Demonstrate self-direction in research and originality in solutions developed for Front end UI/UX development
- Efficiently manage interdisciplinary issues that arise in connection to Front end UI/UX development
About
This is a core and foundational course which aims to equip the student with the
ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create,
modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the opensource MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Teachers
Intended learning outcomes
- Develop a critical knowledge of relational databases.
- Critically evaluate diverse scholarly views on relational databases.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Acquire knowledge of SQL as tool to create, modify, append, delete, query and manipulate data in a relational database.
- Develop a specialised knowledge of key strategies related to Relational Databases.
- Apply an in-depth domain-specific knowledge and understanding to Relational Databases.
- Creatively apply Relational Databases methods to develop critical and original solutions for computational problems.
- 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.
- Act autonomously in identifying research problems and solutions related to Relational Databases.
- Apply a professional and scholarly approach to research problems pertaining to Relational Databases.
- Demonstrate self-direction in research and originality in solutions developed for Relational Databases.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Relational Databases.
- Create synthetic contextualised discussions of key issues related to Relational Databases.
- Efficiently manage interdisciplinary issues that arise in connection to implementation and query of relational databases.
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
- Acquire knowledge of various methods for specifying the logical and functional design of a system
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours
- Develop a critical understanding of software design and refinement processes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering
- 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
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes
- Creatively apply various visual and written methods for converting architectural/high-level designs to component-oriented, low-level design
- 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
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
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 evaluate diverse scholarly views on cloud computing
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Autonomously gather material and organise it into coherent problems sets or presentations
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Act autonomously in identifying research problems and solutions related to cloud computing
- Solve problems and be prepared to take leadership decisions related to the methods and principles of cloud computing
- Apply a professional and scholarly approach to research problems pertaining to cloud computing
- Create synthetic contextualised discussions of key issues related to cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to cloud computing
About
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The
module teaches various aspects of Node.js like setup, package manager, client-
server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Back end Development.
- Develop a specialised knowledge of key strategies related to Back end Development.
- Acquire knowledge of key aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Critically evaluate diverse scholarly views on Back end Development.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Creatively apply Back end Development tools to develop critical and original solutions for computational problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to Back end Development applications.
- Create synthetic contextualised discussions of key issues related to Back end Development.
- Demonstrate self-direction in research and originality in solutions developed for Back end Development.
- Act autonomously in identifying research problems and solutions related to Back end Development.
- Efficiently manage interdisciplinary issues that arise in connection to Back end Development.
- Apply a professional and scholarly approach to research problems pertaining to Back end Development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Back end Development.
About
This course provides a dive deep into more advanced concepts in server-side
programming using Node.js to enable initiative, real-time and scalable web
applications. We dive into threading and thread pools in Node.js and how they can
be leveraged to build more responsive web apps. We learn socket programming
using socket.io and Node.js for instant messaging, document collaboration, real
time analytics and streaming applications. Students also learn to use Caching using distributed in-memory key-value stores (like Redis) to rescue latency while serving web-apps. Students also learn how to use Node.js with popular NoSQL data stores like MongoDB for storing unstructured data. We also cover GraphQL which is an open source data query and manipulation language for APIs, which is gaining popularity more recently. We learn popular protocols like OAuth to enable cross platform logins. Students also learn the architecture and practical aspects of Web-RTC to enable multimedia applications like video-chat, live-streaming, music-streaming etc.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on Advanced Back End Development
- Develop a specialised knowledge of key strategies related to Advanced Back End Development applications
- Acquire knowledge of threading and thread pools in Node.js and how they can be leveraged to build more responsive web apps
- Develop a critical knowledge of Advanced Back End Development
- Critically assess the relevance of theories for business applications in the domain of technology
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to Advanced Back End Development solutions
- Creatively utilize Advanced Back End Development applications to develop critical and original solutions for computational problems
- Autonomously gather material and organise it into coherent problems sets or presentations
- Efficiently manage interdisciplinary issues that arise in connection to Advanced Back End Development
- Create synthetic contextualised discussions of key issues related to Advanced Back End Developmen
- Apply a professional and scholarly approach to research problems pertaining to Advanced Back End Development
- Demonstrate self-direction in research and originality in solutions developed for Advanced Back End Development
- Act autonomously in identifying research problems and solutions related to Advanced Back End Development
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Advanced Back End Development
About
Engage in hands-on exploration of fundamental algorithms, data structures, and advanced algorithmic techniques. Through real-world projects and collaborative problem-solving, students develop expertise in designing, analyzing, and optimizing algorithms. Get equipped with the practical skills and theoretical understanding to tackle complex computational challenges in modern technology environments.
Teachers
Intended learning outcomes
- Acquire knowledge of various algorithmic design methods
- Develop a critical knowledge of design and analysis of algorithms
- Critically evaluate diverse scholarly views on design and analysis of algorithms
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised knowledge of key strategies related to design and analysis of algorithms
- Apply an in-depth domain-specific knowledge and understanding to design and analysis of algorithms
- Creatively apply various algorithmic design methods to develop critical and original solutions to computational problems
- 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
- Efficiently manage interdisciplinary issues that arise in connection to design and analysis of algorithms
- Demonstrate self-direction in research and originality in solutions developed for design and analysis of algorithms
- Apply a professional and scholarly approach to research problems pertaining 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
- Act autonomously in identifying research problems and solutions related to design and analysis of algorithms
- Create synthetic contextualised discussions of key issues related to design and analysis of algorithms to provide solutions to computational problems
About
Dive into theoretical frameworks and practical methodologies independently, tackling complex computational challenges. Engage in hands-on research projects and experimental design to advance your understanding of modern computer science methodologies.
Teachers
Intended learning outcomes
- Learners will acquire a deep understanding of the fundamental principles and methodologies used in computer science research, including both qualitative and quantitative approaches.
- Learners will understand the statistical methods and analytical tools commonly used in computer science research for data collection and interpretation.
- Learners will gain knowledge of the ethical considerations and guidelines that govern research in computer science, including issues related to data privacy, informed consent, and academic integrity.
- Learners will understand the importance of literature review in framing a research question and will be familiar with the conventions of academic writing in computer science.
- Learners will develop the skills to write clear, concise, and well-structured research papers and reports, adhering to academic standards and guidelines.
- Learners will develop the skills to design and conduct independent research projects, including problem identification, hypothesis formulation, and experimental design.
- Learners will acquire the skills to analyze and interpret research data, utilizing appropriate statistical and computational methods.
- Learners will become proficient in using specialized software and tools commonly used in computer science research, such as data analysis software, simulation tools, and version control systems.
- Learners will demonstrate competence in managing a research project from inception to completion, including planning, resource allocation, and timeline management.
- Learners will demonstrate the ability to critically evaluate existing research, including the assessment of validity, reliability, and relevance.
- Learners will demonstrate competence in communicating their research findings effectively, both in written form and through oral presentations, to academic and non-academic audiences.
- Learners will demonstrate the ability to conduct research in an ethical manner, adhering to institutional and international guidelines.
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
- Acquire knowledge of various methods for troubleshooting computer network layers.
- Critically assess the relevance of theories of database design for business applications in the domain of software engineering.
- Develop a critical understanding of relational database strategies, process and memory management in operating systems, and computer network protocols.
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to memory management in operating systems.
- Develop a specialised knowledge of optimising relational database performance in low-latency environments.
- Apply an in-depth domain-specific knowledge and understanding of the importance of relational databases in modern software engineering.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- 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.
- Act autonomously in identifying research problems and solutions related to the real-world application of relational databases.
- Apply a professional and scholarly approach to research problems pertaining to the design of databases in low-latency environments.
- Create synthetic contextualised discussions of key issues related to the optimal design and use of databases, operating systems, and computer networks.
- Solve problems and be prepared to take leadership decisions related to relational database design to solve computational and business problems.
- Efficiently manage interdisciplinary issues that arise in connection to process management in operating systems.
- Demonstrate self-direction in research and originality in solutions developed for optimising performance of computer networks.
About
Embark on a journey into the vibrant world of open source software with our course, "Open Source Ecosystem." Participants will explore foundational principles and community-driven development models through interactive lectures and projects. Gain practical skills in contributing to existing projects and initiating new ones, and gain a deep understanding of open source's impact on technology and innovation.
Teachers
Intended learning outcomes
- Learners will gain an in-depth understanding of the history, philosophy, and key principles that underlie open-source ecosystems.
- Learnerswill be able to identify and describe the roles of key players in open-source ecosystems, including developers, maintainers, users, and organizations.
- Learners will understand the various types of open-source licenses, their implications, and the legal frameworks surrounding open-source projects.
- Learners will understand the typical lifecycle of open-source projects and the governance models that guide decision-making and contributions.
- Learners will acquire the skills to effectively contribute to open-source projects, including coding, documentation, and community engagement.
- Learners will be able to critically evaluate the quality, sustainability, and relevance of an open-source project for various use-cases.
- Learners will be able to apply their understanding of open-source licenses to choose appropriate licenses for new projects and to comply with the licenses of existing projects.
- Learners will become proficient in using tools and platforms commonly used in open-source ecosystems, such as Git, GitHub, and issue trackers.
- Learners will be competent in engaging with the community, including effective communication through mailing lists, forums, and code reviews.
- Learners will be competent in managing aspects of an open-source project, including planning, coordination, and execution.
- Learners will be able to recognize and address ethical considerations in open-source ecosystems, such as inclusivity, accessibility, and the responsible use of code.
- Learners will demonstrate the ability to work effectively in a collaborative, distributed environment, typical of open-source projects.
About
Gain a seamless transition into professional roles by refining interview skills and providing structured job search guidance. The program focuses on building career assets, mastering behavioral and technical interviews, and initiating a structured job search process. Progressing through program stages empowers individuals to confidently pursue and secure desired roles in the dynamic tech industry.
Teachers
Intended learning outcomes
- Learners will understand what employers in the tech industry are looking for in candidates, including both technical and soft skills.
- Learners will gain knowledge about different career paths in the tech industry, including roles, responsibilities, and typical career progression.
- Learners will gain an in-depth understanding of the various formats and types of technical interviews, including coding interviews, system design interviews, and behavioral interviews.
- Learners will understand the key elements that make a strong technical resume and portfolio, and how these documents are used in the job search process.
- Learners will develop strong written and verbal communication skills for networking, interviews, and workplace interactions.
- Learners will develop the skills to effectively prepare for and perform in various types of technical interviews, including problem-solving, coding, and system design.
- Learners will become proficient in researching companies and roles to tailor their application materials and interview preparation.
- Learners will acquire the skills to create compelling resumes and portfolios that effectively showcase their skills and experiences.
- Learners will demonstrate a commitment to ongoing professional development, including the ability to identify skill gaps and seek opportunities for growth.
- Learners will demonstrate the ability to effectively market themselves through resumes, portfolios, and personal narratives.
- Learners will demonstrate competence in managing the job search process, including tracking applications, following up, and negotiating offers.
- Learners will be able to effectively prepare for and perform in technical interviews, demonstrating both technical proficiency and interpersonal skills.
Specialization certificate in Artificial Intelligence and Machine Learning
1125 hours | 45 ECTS
Specialization certificate in Artificial Intelligence and Machine Learning
About
This course helps students translate mathematical/statistical/scientific concepts
into code. This is a foundational course for writing code to solve Data Science ML & AI problems. It introduces basic programming concepts (like control structures,
recursion, classes and objects) from scratch, assuming no prerequisites, to make
this course accessible to students from non-computational scientific fields like
Biology, Physics, Medicine, Chemistry, Civil & Mechanical Engineering etc. After
building a strong foundation, the course advances to dive deep into core
Mathematical libraries like NumPy, Scipy and Pandas. Students also learn when and how to use inbuilt-data structures like Lists, Dicts, Sets and Tuples. The module introduces the concepts of computational complexity to help students write optimized code using appropriate data structures and algorithmic design methods. The module does not dive deep into the data structures and algorithm design methods in this course – that is available in the ‘Data Structures and Algorithms’ module. This course is valuable for all students specializing in mathematical sub- areas of CS like ML, Data Science, Scientific Computing etc.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Numerical programming in Python.
- Critically evaluate diverse scholarly views on Numerical programming in Python.
- Acquire knowledge of core Mathematical libraries like NumPy, Scipy and Pandas.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Numerical programming in Python.
- Create new solutions that are critical to solving computational problems through creatively applying code writing.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organize it into a coherent problem sets or presentation.
- Apply an in-depth domain-specific knowledge and understanding to numerical programming in Python.
- Demonstrate self-direction in research and originality in solutions developed for Numerical programming in Python.
- Act autonomously in identifying research problems and solutions related to Numerical programming in Python.
- Create synthetic contextualised discussions of key issues related to Numerical programming in Python.
- Apply a professional and scholarly approach to research problems pertaining to Numerical programming in Python.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Numerical programming in Python.
- Efficiently manage interdisciplinary issues that arise in connection to Numerical programming in Python.
About
This course is aimed to help learners understand various techniques and algorithms
to visualize, analyse and understand high dimensional data which is very common
in Data Science and ML. The module starts with linear algebraic methods like
Principal Component Analysis (PCA) and SVD (Singular Value Decomposition) for
obtaining linear projection of high dimensional data. This is followed by more
advanced nonlinear and state of the art techniques like t-SNE and UMAP for
visualizing high dimensional data. Each of these techniques would be covered in full mathematical detail from first principles along with applying them to real world datasets in NLP, Genomics and internet-datasets. Students will also study how PCA and SVD are related to general Matrix Factorization techniques. To analyse and understand high dimensional un-labelled data, students learn clustering techniques like K-Means, Gaussian Mixture models, Hierarchical Clustering and DBSCAN. The modules show how some of the techniques are mathematically related to Matrix Factorization. Students study various outlier detection techniques based on density, proximity, factorization and cluster analysis.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Data Analysis.
- Develop a specialised knowledge of key strategies related to Data Analysis.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Critically evaluate diverse scholarly views on Data Analysis.
- Acquire knowledge of clustering techniques like K-Means, Gaussian Mixture models, Hierarchical Clustering and DBSCAN.
- Apply an in-depth domain-specific knowledge and understanding to Data Analysis techniques.
- Creatively apply various techniques to develop critical and original solutions for computational problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problems sets or presentation.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Data Analysis.
- Efficiently manage interdisciplinary issues that arise in connection to Data Analysis.
- Act autonomously in identifying research problems and solutions related to Data Analysis.
- Apply a professional and scholarly approach to research problems pertaining to Data Analysis.
- Demonstrate self-direction in research and originality in solutions developed for data analysis.
- Create synthetic contextualised discussions of key issues related to Data Analysis.
About
This course introduces basic probability theory , statistical methods and
computational algorithms to perform mathematically rigorous data analysis. The
course starts with basic foundational concepts of random variables, histograms,
and various plots (PMF, PDF and CDF). Students learn various popular discrete and continuous distributions like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, log-normal etc., both mathematically and from an applicative perspective.
Students learn various measures like mean, median, percentiles, quantiles, variance and interquartile-range. Students learn the pros and cons of each metric and understand when and how to use them in practice. Students will learn conditional probability and Bayes theorem in the applied context of real-world problems in medicine and healthcare. The module teaches the foundations of non-parametric statistics and applies them to solve problems using computational tools. Students learn various methods to determine correlations rigorously in data. This is followed by applied and mathematical understanding of the statistics underlying control- treatment (A/B) experiments and hypothesis testing. The module engages computation tools in modern statics like Bootstrapping, Monte-Carlo methods, RANSAC etc.
Teachers
Intended learning outcomes
- Acquire knowledge of popular discrete and continuous distributions (like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, and log-normal).
- Critically evaluate diverse scholarly views on Applied Statistics.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of Applied Statistics.
- Develop a specialised knowledge of key strategies related to Applied Statistics.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding of applied statistics.
- Creatively apply basic probability theory to develop critical and original solutions for computational problems.
- Autonomously gather material and organise it into a coherent problem set or presentation.
- Apply a professional and scholarly approach to research problems pertaining to probability theory to perform mathematically rigorous data analysis.
- Demonstrate self-direction in research and originality in solutions developed for Applied Statistics.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Applied Statistics.
- Act autonomously in identifying research problems and solutions related to Applied Statistics.
- Create synthetic contextualised discussions of key issues related to Applied Statistics.
- Efficiently manage interdisciplinary issues that arise in connection to Applied Statistics.
About
This course focuses on building basic classification and regression models and
understanding these models rigorously both with a mathematical and an
applicative focus. The module starts with a basic introduction to high dimensional
geometry of points, distance-metrics, hyperplanes and hyperspheres. We build on
top this to introduce the mathematical formulation of logistic regression to find a
separating hyperplane. Students learn to solve the optimization problem using
vector calculus and gradient descent (GD) based algorithms. The module introduces computational variations of GD like mini-batch and stochastic gradient descent.
Students also learn other popular classification and regression methods like k-
Nearest Neighbours, NaiveI Bayes, Decision Trees, Linear Regression etc. Students
Teachers
Intended learning outcomes
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to machine learning.
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting.
- Critically evaluate diverse scholarly views on machine learning.
- Develop a critical knowledge of machine learning.
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions.
- Autonomously gather material and organise it into coherent problem sets and presentation.
- Creatively apply regression models to develop critical and original solutions for computational issues.
- 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 machine learning.
- Act autonomously in identifying research problems and solutions related to machine learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of machine learning.
- Create synthetic contextualised discussions of key issues related to machine learning.
- Apply a professional and scholarly approach to research problems pertaining to machine learning.
- Efficiently manage interdisciplinary issues that arise in connection to machine learning.
About
This course introduces more advanced ML techniques like ensembles: bagging,
boosting, cascading and stacking classifiers and regressors. It covers both the
theoretical foundations and applicative details of these techniques along with
popular implementations of boosting like LightGBM, CatBoost and XGBoost.
Students also delve into kernel methods with specific focus on SVMs for
classification and regression. Students will study state of the art model agnostic
feature importance and model-interpretability techniques like LIME and SHAP.
Students also study classical NLP based text encoding methods like Bag-of-words, TF-IDF etc. The module teaches various classical methods in time series analysis and forecasting like ARMA, ARIMA etc. Students also learn how to pose time series forecasting problems as regression and classification problems to leverage well studied ML techniques. This is followed by various domain and problem specific Feature engineering techniques that are often helpful in real world problem solving. Students will study methods like error analysis, ablative analysis etc., to debug and understand why and where a model is performing well and where it is not performing well. This will further help us in designing appropriate features. Students study model calibration techniques like Platt Scaling, Isotonic Regression etc. Later in this course, we cover how to build recommender systems using content-based and collaborative filtering methods. The module also teaches the detailed solution of the Netflix prize (2009) and various recent advances in RecSys
Teachers
Intended learning outcomes
- Acquire knowledge of model calibration techniques like Platt Scaling, Isotonic Regression.
- Critically evaluate diverse scholarly views on Advanced Machine Learning.
- Develop a critical knowledge of Advanced Machine Learning.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Advanced Machine Learning.
- Apply an in-depth domain-specific knowledge and understanding to Advanced Machine Learning.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Creatively apply Advanced Machine Learning techniques to develop critical and original solutions for computation problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply a professional and scholarly approach to research problems pertaining to Advanced Machine Learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Advanced Machine Learning.
- Create synthetic contextualised discussions of key issues related to Advanced Machine Learning.
- Demonstrate self-direction in research and originality in solutions developed for Advanced Machine Learning.
- Act autonomously in identifying research problems and solutions related to Advanced Machine Learning.
- Efficiently manage interdisciplinary issues that arise in connection to Advanced Machine Learning.
About
Engage in hands-on exploration of fundamental algorithms, data structures, and advanced algorithmic techniques. Through real-world projects and collaborative problem-solving, students develop expertise in designing, analyzing, and optimizing algorithms. Get equipped with the practical skills and theoretical understanding to tackle complex computational challenges in modern technology environments.
Teachers
Intended learning outcomes
- Acquire knowledge of various algorithmic design methods
- Develop a critical knowledge of design and analysis of algorithms
- Critically evaluate diverse scholarly views on design and analysis of algorithms
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised knowledge of key strategies related to design and analysis of algorithms
- Apply an in-depth domain-specific knowledge and understanding to design and analysis of algorithms
- Creatively apply various algorithmic design methods to develop critical and original solutions to computational problems
- 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
- Efficiently manage interdisciplinary issues that arise in connection to design and analysis of algorithms
- Demonstrate self-direction in research and originality in solutions developed for design and analysis of algorithms
- Apply a professional and scholarly approach to research problems pertaining 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
- Act autonomously in identifying research problems and solutions related to design and analysis of algorithms
- Create synthetic contextualised discussions of key issues related to design and analysis of algorithms to provide solutions to computational problems
About
Dive into theoretical frameworks and practical methodologies independently, tackling complex computational challenges. Engage in hands-on research projects and experimental design to advance your understanding of modern computer science methodologies.
Teachers
Intended learning outcomes
- Learners will acquire a deep understanding of the fundamental principles and methodologies used in computer science research, including both qualitative and quantitative approaches.
- Learners will understand the statistical methods and analytical tools commonly used in computer science research for data collection and interpretation.
- Learners will gain knowledge of the ethical considerations and guidelines that govern research in computer science, including issues related to data privacy, informed consent, and academic integrity.
- Learners will understand the importance of literature review in framing a research question and will be familiar with the conventions of academic writing in computer science.
- Learners will develop the skills to write clear, concise, and well-structured research papers and reports, adhering to academic standards and guidelines.
- Learners will develop the skills to design and conduct independent research projects, including problem identification, hypothesis formulation, and experimental design.
- Learners will acquire the skills to analyze and interpret research data, utilizing appropriate statistical and computational methods.
- Learners will become proficient in using specialized software and tools commonly used in computer science research, such as data analysis software, simulation tools, and version control systems.
- Learners will demonstrate competence in managing a research project from inception to completion, including planning, resource allocation, and timeline management.
- Learners will demonstrate the ability to critically evaluate existing research, including the assessment of validity, reliability, and relevance.
- Learners will demonstrate competence in communicating their research findings effectively, both in written form and through oral presentations, to academic and non-academic audiences.
- Learners will demonstrate the ability to conduct research in an ethical manner, adhering to institutional and international guidelines.
About
Embark on a journey into the vibrant world of open source software with our course, "Open Source Ecosystem." Participants will explore foundational principles and community-driven development models through interactive lectures and projects. Gain practical skills in contributing to existing projects and initiating new ones, and gain a deep understanding of open source's impact on technology and innovation.
Teachers
Intended learning outcomes
- Learners will gain an in-depth understanding of the history, philosophy, and key principles that underlie open-source ecosystems.
- Learnerswill be able to identify and describe the roles of key players in open-source ecosystems, including developers, maintainers, users, and organizations.
- Learners will understand the various types of open-source licenses, their implications, and the legal frameworks surrounding open-source projects.
- Learners will understand the typical lifecycle of open-source projects and the governance models that guide decision-making and contributions.
- Learners will acquire the skills to effectively contribute to open-source projects, including coding, documentation, and community engagement.
- Learners will be able to critically evaluate the quality, sustainability, and relevance of an open-source project for various use-cases.
- Learners will be able to apply their understanding of open-source licenses to choose appropriate licenses for new projects and to comply with the licenses of existing projects.
- Learners will become proficient in using tools and platforms commonly used in open-source ecosystems, such as Git, GitHub, and issue trackers.
- Learners will be competent in engaging with the community, including effective communication through mailing lists, forums, and code reviews.
- Learners will be competent in managing aspects of an open-source project, including planning, coordination, and execution.
- Learners will be able to recognize and address ethical considerations in open-source ecosystems, such as inclusivity, accessibility, and the responsible use of code.
- Learners will demonstrate the ability to work effectively in a collaborative, distributed environment, typical of open-source projects.
About
This course provides a strong mathematical and applicative introduction to Deep
Learning. The module starts with the perceptron model as an over simplified
approximation to a biological neuron. We motivate the need for a network of
neurons and how they can be connected to form a Multi Layered Perceptron
(MLPs). This is followed by a rigorous understanding of back-propagation
algorithms and its limitations from the 1980s. Students study how modern deep
learning took off with improved computational tools and data sets. We teach more modern activation units (like ReLU and SeLU) and how they overcome problems with the more classical Sigmoid and Tanh units. Students learn weight initialization methods, regularization by dropouts, batch normalization etc., to ensure that deep MLPs can be successfully trained. The module teaches variants of Gradient Descent that have been specifically designed to work well for deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec as unsupervised, encoding deep-learning architectures. We apply all of the foundational theory learned to various real world problems using TensorFlow 2 and Keras. Students also understand how TensorFlow 2 works internally with specific focus on computational graph processing.
Teachers
Intended learning outcomes
- Acquire knowledge of deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec.
- Critically evaluate diverse scholarly views on Deep Learning.
- Develop a critical knowledge of Deep Learning.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a specialised knowledge of key strategies related to Deep Learning.
- Creatively apply Deep Learning techniques to develop critical and original solutions for computational problems.
- Apply an in-depth domain-specific knowledge and understanding to Deep Learning.
- Autonomously gather material and organise it into coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Create synthetic contextualized discussions of key issues related to Deep Learning.
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning.
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning.
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning.
- Act autonomously in identifying research problems and solutions related to Deep Learning.
Specialization certificate in Software Engineering
1125 hours | 45 ECTS
Specialization certificate in Software Engineering
About
This course provides a practical and detailed understanding of popular
programming paradigms and data storage types. Students learning this will be able to write and solve programming problems. The course starts from the basics about functions, various built in functions and how to code user defined functions. Then students will learn about various data type storages and learn about lists and how various manipulations can be done lists like list slicing and also go through examples of 2D Lists.
While learning how to create functions students have to learn how various results
and inputs can be stored using different data types after the introduction and
discussion on Lists, students will go through sets, tuples, Dictionaries and Strings.
The student should be well prepared to apply these concepts and build algorithms
and software using what they learnt in this course.
Teachers
Intended learning outcomes
- Develop a specialised knowledge of the various uses and forms of lists in programming, including 2D lists.
- Critically evaluate diverse scholarly views on functions and algorithms.
- Critically assess the relevance of theories of data storage for programming.
- Acquire knowledge of various methods for storing data in modern programming languages.
- Develop a critical knowledge of product design and development.
- Creatively apply various visual, written, and code-based methods for manipulating tuples, strings, lists, and similar structures.
- Apply an in-depth domain-specific knowledge and understanding of computer programming and data management.
- 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.
- Solve problems and be prepared to take leadership decisions related to programming concepts such as lists, sets, tuples, dictionaries, and strings.
- Efficiently manage interdisciplinary issues that arise in connection to choosing the best data type for a particular programming need.
- Apply a professional and scholarly approach to research problems pertaining to functions and data types.
- Create synthetic contextualised discussions of key issues related to data storage and how popular programming languages handle this
- Demonstrate self-direction in research and originality in handling data in lists.
- Act autonomously in identifying research problems and solutions related to data storage.
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
- Acquire knowledge of various methods for troubleshooting computer network layers.
- Critically assess the relevance of theories of database design for business applications in the domain of software engineering.
- Develop a critical understanding of relational database strategies, process and memory management in operating systems, and computer network protocols.
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to memory management in operating systems.
- Develop a specialised knowledge of optimising relational database performance in low-latency environments.
- Apply an in-depth domain-specific knowledge and understanding of the importance of relational databases in modern software engineering.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- 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.
- Act autonomously in identifying research problems and solutions related to the real-world application of relational databases.
- Apply a professional and scholarly approach to research problems pertaining to the design of databases in low-latency environments.
- Create synthetic contextualised discussions of key issues related to the optimal design and use of databases, operating systems, and computer networks.
- Solve problems and be prepared to take leadership decisions related to relational database design to solve computational and business problems.
- Efficiently manage interdisciplinary issues that arise in connection to process management in operating systems.
- Demonstrate self-direction in research and originality in solutions developed for optimising performance of computer networks.
About
Engage in hands-on exploration of fundamental algorithms, data structures, and advanced algorithmic techniques. Through real-world projects and collaborative problem-solving, students develop expertise in designing, analyzing, and optimizing algorithms. Get equipped with the practical skills and theoretical understanding to tackle complex computational challenges in modern technology environments.
Teachers
Intended learning outcomes
- Acquire knowledge of various algorithmic design methods
- Develop a critical knowledge of design and analysis of algorithms
- Critically evaluate diverse scholarly views on design and analysis of algorithms
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised knowledge of key strategies related to design and analysis of algorithms
- Apply an in-depth domain-specific knowledge and understanding to design and analysis of algorithms
- Creatively apply various algorithmic design methods to develop critical and original solutions to computational problems
- 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
- Efficiently manage interdisciplinary issues that arise in connection to design and analysis of algorithms
- Demonstrate self-direction in research and originality in solutions developed for design and analysis of algorithms
- Apply a professional and scholarly approach to research problems pertaining 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
- Act autonomously in identifying research problems and solutions related to design and analysis of algorithms
- Create synthetic contextualised discussions of key issues related to design and analysis of algorithms to provide solutions to computational problems
About
Low-Level Design & Design Patterns focuses on modularity and reusability in
software design, common design vocabularies, refactoring and how to reduce it,
and how to incorporate design patterns into iterative development processes. The course pays significant attention to the interaction between system architecture and components, including data organisation.
The course begins with Object-Oriented Analysis (OOA), which is a problems-solving technique that includes: modelling an information design; representing behaviour; describing functions; dividing data, functional, and behavioural models to uncover detail; moving from abstraction to implementation details. The course then turns to Object-Oriented Design (OOD), which reduces the analysis model into a modular design for software creation, with subsystems, components, and objects.
The iteration of analysis and implementation will be covered in detail with real-
world industry examples..
Teachers
Intended learning outcomes
- Develop a critical understanding of object-oriented analysis and design
- Critically assess the relevance of theories of reusable design for business applications in the domain of software engineering
- Develop a specialised knowledge of modelling data, behaviour, and function in software
- Critically evaluate diverse scholarly views on the appropriateness of various approaches to design patterns for object-oriented design
- Acquire knowledge of various methods for specifying modular elements in a software subsystem
- 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 object-oriented design in software engineering
- Creatively apply various design patterns to most efficiently design software that meets specified criteria
- 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 designing reusable software elements
- Create synthetic contextualised discussions of key issues related to Object- Oriented Analysis and Design
- Apply a professional and scholarly approach to research problems pertaining to building software with reusable elements
- Act autonomously in identifying research problems and solutions related to the modular, procedural software design
- Efficiently manage interdisciplinary issues that arise in connection to modelling data, behaviour, and function
- Solve problems and be prepared to take leadership decisions related to developing design patterns to solve problems in software design
About
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The
module teaches various aspects of Node.js like setup, package manager, client-
server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Teachers
Intended learning outcomes
- Develop a critical knowledge of Back end Development.
- Develop a specialised knowledge of key strategies related to Back end Development.
- Acquire knowledge of key aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Critically evaluate diverse scholarly views on Back end Development.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Creatively apply Back end Development tools to develop critical and original solutions for computational problems.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to Back end Development applications.
- Create synthetic contextualised discussions of key issues related to Back end Development.
- Demonstrate self-direction in research and originality in solutions developed for Back end Development.
- Act autonomously in identifying research problems and solutions related to Back end Development.
- Efficiently manage interdisciplinary issues that arise in connection to Back end Development.
- Apply a professional and scholarly approach to research problems pertaining to Back end Development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Back end Development.
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
- Critically assess the relevance of theories of distributed system design for business applications in the realm of software engineering
- 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
- Apply an in-depth domain-specific knowledge and understanding of the importance of scalability in software engineering
- Autonomously gather material and organise it into a coherent presentation or essay
- Creatively apply various visual and written methods for developing high-level system architecture designs
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- 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
- Solve problems and be prepared to take leadership decisions related to designing distributed systems that can scale
- Apply a professional and scholarly approach to research problems pertaining to tradeoffs between consistency and availability when distributed systems are partitioned
- Create synthetic contextualised discussions of key issues related to designing system architecture that is capable of scaling
- Efficiently manage interdisciplinary issues that arise in connection to micro services and containerisation
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
- Acquire knowledge of various methods for specifying the logical and functional design of a system
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours
- Develop a critical understanding of software design and refinement processes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering
- 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
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes
- Creatively apply various visual and written methods for converting architectural/high-level designs to component-oriented, low-level design
- 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
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
About
Dive into theoretical frameworks and practical methodologies independently, tackling complex computational challenges. Engage in hands-on research projects and experimental design to advance your understanding of modern computer science methodologies.
Teachers
Intended learning outcomes
- Learners will acquire a deep understanding of the fundamental principles and methodologies used in computer science research, including both qualitative and quantitative approaches.
- Learners will understand the statistical methods and analytical tools commonly used in computer science research for data collection and interpretation.
- Learners will gain knowledge of the ethical considerations and guidelines that govern research in computer science, including issues related to data privacy, informed consent, and academic integrity.
- Learners will understand the importance of literature review in framing a research question and will be familiar with the conventions of academic writing in computer science.
- Learners will develop the skills to write clear, concise, and well-structured research papers and reports, adhering to academic standards and guidelines.
- Learners will develop the skills to design and conduct independent research projects, including problem identification, hypothesis formulation, and experimental design.
- Learners will acquire the skills to analyze and interpret research data, utilizing appropriate statistical and computational methods.
- Learners will become proficient in using specialized software and tools commonly used in computer science research, such as data analysis software, simulation tools, and version control systems.
- Learners will demonstrate competence in managing a research project from inception to completion, including planning, resource allocation, and timeline management.
- Learners will demonstrate the ability to critically evaluate existing research, including the assessment of validity, reliability, and relevance.
- Learners will demonstrate competence in communicating their research findings effectively, both in written form and through oral presentations, to academic and non-academic audiences.
- Learners will demonstrate the ability to conduct research in an ethical manner, adhering to institutional and international guidelines.
About
Embark on a journey into the vibrant world of open source software with our course, "Open Source Ecosystem." Participants will explore foundational principles and community-driven development models through interactive lectures and projects. Gain practical skills in contributing to existing projects and initiating new ones, and gain a deep understanding of open source's impact on technology and innovation.
Teachers
Intended learning outcomes
- Learners will gain an in-depth understanding of the history, philosophy, and key principles that underlie open-source ecosystems.
- Learnerswill be able to identify and describe the roles of key players in open-source ecosystems, including developers, maintainers, users, and organizations.
- Learners will understand the various types of open-source licenses, their implications, and the legal frameworks surrounding open-source projects.
- Learners will understand the typical lifecycle of open-source projects and the governance models that guide decision-making and contributions.
- Learners will acquire the skills to effectively contribute to open-source projects, including coding, documentation, and community engagement.
- Learners will be able to critically evaluate the quality, sustainability, and relevance of an open-source project for various use-cases.
- Learners will be able to apply their understanding of open-source licenses to choose appropriate licenses for new projects and to comply with the licenses of existing projects.
- Learners will become proficient in using tools and platforms commonly used in open-source ecosystems, such as Git, GitHub, and issue trackers.
- Learners will be competent in engaging with the community, including effective communication through mailing lists, forums, and code reviews.
- Learners will be competent in managing aspects of an open-source project, including planning, coordination, and execution.
- Learners will be able to recognize and address ethical considerations in open-source ecosystems, such as inclusivity, accessibility, and the responsible use of code.
- Learners will demonstrate the ability to work effectively in a collaborative, distributed environment, typical of open-source projects.
About
Gain a seamless transition into professional roles by refining interview skills and providing structured job search guidance. The program focuses on building career assets, mastering behavioral and technical interviews, and initiating a structured job search process. Progressing through program stages empowers individuals to confidently pursue and secure desired roles in the dynamic tech industry.
Teachers
Intended learning outcomes
- Learners will understand what employers in the tech industry are looking for in candidates, including both technical and soft skills.
- Learners will gain knowledge about different career paths in the tech industry, including roles, responsibilities, and typical career progression.
- Learners will gain an in-depth understanding of the various formats and types of technical interviews, including coding interviews, system design interviews, and behavioral interviews.
- Learners will understand the key elements that make a strong technical resume and portfolio, and how these documents are used in the job search process.
- Learners will develop strong written and verbal communication skills for networking, interviews, and workplace interactions.
- Learners will develop the skills to effectively prepare for and perform in various types of technical interviews, including problem-solving, coding, and system design.
- Learners will become proficient in researching companies and roles to tailor their application materials and interview preparation.
- Learners will acquire the skills to create compelling resumes and portfolios that effectively showcase their skills and experiences.
- Learners will demonstrate a commitment to ongoing professional development, including the ability to identify skill gaps and seek opportunities for growth.
- Learners will demonstrate the ability to effectively market themselves through resumes, portfolios, and personal narratives.
- Learners will demonstrate competence in managing the job search process, including tracking applications, following up, and negotiating offers.
- Learners will be able to effectively prepare for and perform in technical interviews, demonstrating both technical proficiency and interpersonal skills.
Master of Science in Computer Science
Downloads
Apply Now
Ready to start your journey? Apply for Master of Science in Computer Science today.