About
The course teaches students comprehensive and specialised subjects in computer science; it teaches students cutting edge engineering skills to solve real-world problems using computational thinking and tools, as well as soft skills in communication, collaboration, and project management that enable students to succeed in real-world business environments. Most of this program is case (or) project-based where students learn by solving real-world problems end to end. This program has core courses that focus on computational thinking and problems solving from first principles. The core courses are followed by specialization courses that teach various aspects of building real-world systems. This is followed by more advanced courses that focus on research level topics, which cover state of the art methods. The program also has a capstone project at the end, wherein students can either work on building end to end solutions to real world problems (or) work on a research topic. The program also focuses on teaching the students the “ability to learn” so that they can be lifelong learners constantly upgrading their skills. Students can choose from a spectrum of courses to specialize in a specific sub-area of Computer Science like Artificial Intelligence and Machine Learning, Cloud Computing, Software Engineering, or Data Science, etc.
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
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, enrolment 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 complete all courses in module two, earning a total of 45 ECTS. Tier Three will be completed by a) completing 20 ECTS of compulsory modules and b)completing a 10 ECTS Applied Computer Science capstone project.
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
Cohort 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/
How students have found success through Woolf
Course Structure
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 evaluate diverse scholarly views on the appropriateness of various problem-solving strategies.
- Develop a specialised knowledge of key strategies related to structuring data.
- Critically assess the relevance of theories of problem-solving for business applications in the domain of software development.
- Acquire knowledge of various methods for structuring data in arrays.
- Develop a critical understanding of problem-solving strategies in computing.
- Apply an in-depth domain-specific knowledge and understanding to problem solving.
- 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.
- Creatively apply various programming methods to develop critical and original solutions to computational problems.
- Demonstrate self-direction in research and originality in solutions developed for solving problems related 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.
- Apply a professional and scholarly approach to research problems pertaining 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 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 toSQL’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 open source 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 specialised46 knowledge of key strategies related to relational databases.
- 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.
- Creatively apply Relational Databases methods to develop critical and original solutions for computational problems.
- Apply an in-depth domain-specific knowledge and understanding to relational databases.
- Demonstrate self-direction in research and originality in solutions developed for relational databases.
- Apply a professional and scholarly approach to research problems pertaining to relational databases.
- Create synthetic contextualised46 discussions of key issues related to relational databases.
- Act autonomously in identifying research problems and solutions related to relational databases.
- Efficiently manage interdisciplinary issues that arise in connection to implementation and query of relational databases
- Solve problems and be prepared to take leadership decisions related to the methods and principles of relational databases.
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.
- 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.
- Critically evaluate diverse scholarly views on computational complexity.
- Apply an in-depth domain-specific knowledge and understanding to computer programming.
- 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
- Creatively apply various programming methods to develop critical and original solutions to computational problems.
- 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.
- 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.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of computer programming.
About
This course is aimed at equipping students with skills to architect the high level design (a.k.a. system design) of software and data systems. We start with some of the good to have properties of large complex software systems like scalability, reliability, availability, consistency etc. The module teaches various patterns and design choices we have to satisfy each of these good to have properties. We then go on to understand key components of system design like load-balancers, microservices, reverse-proxies, content-delivery networks etc. Students learn how each of them work internally along with real world implementations of each. We study various NoSQL data stores, their internal architectures and where to use which one with real-world examples. Students also learn popular data encoding schemes like XML and JSON. We learn how to build data pipelines using batch and stream processing systems. We also work on multiple real world cases on architecting on the cloud using popular open-source libraries and tools. Students will study design documents and high-level-design of popular internet applications and services like video conferencing, recommender-systems, peer-to-peer chat, voice-assistants etc.
Teachers
Intended learning outcomes
- Develop a critical knowledge of System Design
- Critically evaluate diverse scholarly views on System Design
- Develop a specialised knowledge of key strategies related to System Design
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of popular data encoding schemes like XML and JSON
- 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
- Creatively apply system design components to develop critical and original solutions for computational problems
- Apply an in-depth domain-specific knowledge and understanding to System Design solutions
- Demonstrate self-direction in research and originality in solutions developed for System Design
- Create synthetic contextualised discussions of key issues related to System Design
- Solve problems and be prepared to take leadership decisions related to the methods and principles of System Design
- Efficiently manage interdisciplinary issues that arise in connection to System Design
- Apply a professional and scholarly approach to research problems pertaining to System Design
- Act autonomously in identifying research problems and solutions related to System Design
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
- Acquire knowledge of various methods for storing data in modern programming languages.
- Develop a specialised knowledge of the various uses and forms of lists in programming, including 2D lists.
- Critically assess the relevance of theories of data storage for programming.
- Develop a critical understanding of product design and development.
- Critically evaluate diverse scholarly views on functions and algorithms.
- 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.
- Creatively apply various visual, written, and code-based methods for manipulating tuples, strings, lists, and similar structures.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing application.
- Apply a professional and scholarly approach to research problems pertaining to functions and data types.
- Act autonomously in identifying research problems and solutions related to data storage.
- Create synthetic contextualised discussions of key issues related to data storage and how popular programming languages handle this.
- Efficiently manage interdisciplinary issues that arise in connection to choosing the best data type for a particular programming need.
- Solve problems and be prepared to take leadership decisions related to programming concepts such as lists, sets, tuples, dictionaries, and strings.
- Demonstrate self-direction in research and originality in handling data in lists.
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
- Critically evaluate diverse scholarly views on Applied Statistics
- Develop a critical knowledge of Applied Statistics
- Acquire knowledge of popular discrete and continuous distributions (like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, and log-normal)
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised58 knowledge of key strategies related to Applied Statistics
- 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
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into a coherent problem set or presentation
- Act autonomously in identifying research problems and solutions related to Applied Statistics
- Efficiently manage interdisciplinary issues that arise in connection to Applied Statistics
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Applied Statistics
- Create synthetic contextualised discussions of key issues related to Applied Statistics
- Demonstrate self-direction in research and originality in solutions developed for Applied Statistics
- Apply a professional and scholarly approach to research problems pertaining to probability theory to perform mathematically rigorous data analysis
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 AmazonWeb 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 (likeAzure, 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 aVPC. 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
- Develop a specialised139 knowledge of key strategies related to cloud computing
- Critically evaluate diverse scholarly views on cloud computing
- Acquire knowledge of virtualization and how virtualized compute instances are created and configured
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of cloud computing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Autonomously gather material and organise it into coherent problems sets or presentations
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to 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
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 deepMLPs can be successfully trained. The module teaches variants of Gradient Descent that have been specifically designed to work well for deep learning systems likeADAM, 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 2and Keras. Students also understand how TensorFlow 2 works internally with specific focus on computational graph processing
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to Deep Learning
- 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
- Acquire knowledge of deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec
- 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
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning
- Create synthetic contextualized discussions of key issues related to Deep Learning
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning
- Act autonomously in identifying research problems and solutions related to Deep Learning
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning
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 hyper spheres. 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 also learn how each of these techniques under various real world situations like the presence of outliers, imbalanced data, multi class classification etc. Students learn bias and variance trade-off and various techniques to avoid overfitting and underfitting. Students also study these algorithms from a Bayesian viewpoint along with geometric intuition. This module is hands-on and students apply all these classical techniques to real world problems.
Teachers


Intended learning outcomes
- Critically evaluate diverse scholarly views on machine learning
- Develop a specialised knowledge of key strategies related to machine learning
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting
- Develop a critical knowledge of machine learning
- 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
- Autonomously gather material and organise it into coherent problem sets and presentation
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions
- Efficiently manage interdisciplinary issues that arise in connection to 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
- Apply a professional and scholarly approach to research problems pertaining to machine learning
- Create synthetic contextualised discussions of key issues related to machine learning
- Demonstrate self-direction in research and originality in solutions developed for machine learning
About
This course helps students translate mathematical/statistical/scientific conceptsinto 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 valuabe 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.
- 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.
- Critically evaluate diverse scholarly views on Numerical programming in Python.
- Develop a specialised52 knowledge of key strategies related to Numerical programming in Python.
- Autonomously gather material and organize it into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to numerical programming in Python.
- Create new solutions that are critical to solving computational problems through creatively applying code writing.
- Act autonomously in identifying research problems and solutions related to Numerical programming in Python.
- Create synthetic contextualised52 discussions of key issues related 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.
- Demonstrate self-direction in research and originality in solutions developed for Numerical programming in Python.
- Apply a professional and scholarly approach to research problems pertaining to Numerical programming in Python.
- Efficiently manage interdisciplinary issues that arise in connection to Numerical programming in Python.
About
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5, CSS and Frameworks likeBootstrap 4. This course starts with an introduction on how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details ofHTML5 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 on 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 Bootstrap4 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.
- Creatively apply Front end UI/UX development applications to develop critical and original solutions for computational problems.
- Autonomously gather material and organise into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to technology.
- Apply a professional and scholarly approach to research problems pertaining to Front end UI/UX development.
- Demonstrate self-direction in research and originality in solutions developed for Front end UI/UX development.
- Act autonomously in identifying research problems and solutions related to Front end UI/UX development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Front end UI/UX development.
- Create synthetic contextualised discussions of key issues related to 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 build a strong foundational knowledge of Data Analytics tools used extensively in the Data Science field. There now are powerful data visualisation tools used in the business analytics industry to process and visualise raw business data in a very presentable and understandable format. A good example is Tableau, used by all data analytics departments of companies and in data analytics companies in various fields for its ease of use and efficiency. Tableau uses relational databases, Online Analytical Processing Cubes, Spreadsheets, cloud databases to generate graphical type visualisations. Course starts with visualisations and moves to an in-depth look at the different chart and graph functions, calculations, mapping and other functionality. Students will be taught quick table calculations, reference lines, different types of visualisations, bands and distributions, parameters, motion chart, trends and forecasting, formatting, stories, performance recording and advanced mapping At the end of this course, students will be prepared, if they desire, to earn such industry desktop certifications as a Tableau Desktop Specialist, a Tableau Certified Associate, or a Tableau Certified Professional.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of data visualisation for business applications in the realm of software engineering.
- Critically evaluate diverse scholarly views on advanced visualisation strategies.
- Develop a specialised knowledge of such concepts as bands and distributions, parameters, motion chart, trends and forecasting, formatting, stories, performance recording and advanced mapping.
- Acquire knowledge of various methods for telling stories with data across different formats.
- Develop a critical understanding of key data science concepts as implemented in common software packages.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Creatively apply various visual and written methods for developing data visualisations.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data storytelling in software engineering.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Efficiently manage interdisciplinary issues that arise in connection to advanced visual analytics
- Act autonomously in identifying research problems and solutions related to implementing data science visualisations from scratch.
- Solve problems and be prepared to take leadership decisions related to data visualisation strategies.
- Create synthetic contextualised discussions of key issues related to time and space complexity in data science.
- Apply a professional and scholarly approach to research problems pertaining to data visualisations, including dashboards and storytelling.
- Demonstrate self-direction in research and originality in solutions developed for data visualisation.
About
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Teachers




Intended learning outcomes
- Critically assess the relevance of theories of creating use cases for business applications in the realm of software engineering.
- Acquire knowledge of various methods for conducting scripted analyses of moderately large-scale data sets.
- Critically evaluate diverse scholarly views on the graphical presentation of data.
- Develop a critical understanding of the Excel environment and its formulas and functions.
- Develop a specialised knowledge of common spreadsheet-based reporting tools such as charts and dashboards.
- Creatively apply various visual and written methods for developing meaningful visualisations of data sets.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data analysis in business
- 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.
- Create synthetic contextualised discussions of key issues related to representing and storing data in spreadsheets.
- Apply a professional and scholarly approach to research problems pertaining to the appropriate use of functions and formulas in a spreadsheet.
- Demonstrate self-direction in research and originality in solutions developed for scripting data analysis and presenting it visually
- Efficiently manage interdisciplinary issues that arise in connection to organizing data.
- Act autonomously in identifying research problems and solutions related to the appropriate use of macros in analysing data in a spreadsheet.
- Solve problems and be prepared to take leadership decisions related to creating end-to-end business use case scenarios using a spreadsheet.
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 e-commerce, online learningand/or photo-sharing.
Teachers


Intended learning outcomes
- 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.
- Develop a specialised knowledge of key strategies related to Back End Development.
- Develop a critical knowledge of Back End Development.
- Critically evaluate diverse scholarly views on Back End Development.
- Apply an in-depth domain-specific knowledge and understanding to Back End Development applications.
- 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.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Create synthetic contextualised discussions of key issues related to Back End Development.
- Apply a professional and scholarly approach to research problems pertaining to 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.
- Demonstrate self-direction in research and originality in solutions developed for 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 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
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS
- Critically evaluate diverse scholarly views on front end development
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Develop a specialised knowledge of key strategies related to front end development.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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.
- Act autonomously in identifying research problems and solutions related to 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.
- Demonstrate self-direction in research and originality in solutions developed for front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
About
This course provides students with hands-on experience on deploying high velocity applications and services reliably on complex and distributed infrastructure. DevOps as a philosophy is a key driver of the modern software life cycle which prefers rapid and reliable delivery of functionality and features via code. We start with a solid introduction to Linux scripting and networking. Then, we learn popular methodologies to deploy complex and distributed software like micro services, containerization (Docker) and orchestration (Kubernetes). All of this would be introduced with real world examples from the industry. We also focus on Continuous Integration and Continuous Delivery (CI/CD) methodology and how it can be achieved using popular toolchains like Jenkins. We dive into how automated testing of software can be achieved using libraries like Selenium. This shall be followed by more advanced techniques like serverless-compute, Platform as a service model and Cloud-DevOps. Students would learn to monitor and log key datapoints to ensure they maintain a healthy system and adapt it as needed. Infrastructure-as-code is a key component of modern DevOps especially on cloud and containerized applications which would also be covered with real-world examples
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to DevOps.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Acquire knowledge of popular methodologies to deploy complex and distributed software like microservices, containerization (Docker) and orchestration (Kubernetes).
- Critically evaluate diverse scholarly views on DevOps.
- Develop a critical knowledge of DevOps.
- Apply an in-depth domain-specific knowledge and understanding to DevOps solutions.
- 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.
- Creatively apply DevOps tools to develop critical and original solutions for computational problems.
- Apply a professional and scholarly approach to research problems pertaining to DevOps.
- Create synthetic contextualised discussions of key issues related to DevOps.
- Efficiently manage interdisciplinary issues that arise in connection to DevOps.
- Demonstrate self-direction in research and originality in solutions developed for DevOps.
- Act autonomously in identifying research problems and solutions related to DevOps.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of DevOps.
About
This course is a hands-on course covering JavaScript from basics to advanced concepts in detail using multiple examples. We start with basic programming concepts like variables, control statements, loops, classes and objects. Students also learn basic data-structures like Strings, Arrays and dates. Students also learn to debug our code and handle errors gracefully in code. We learn popular style guides and good coding practices to build readable and reusable code which is also highly performant. We then learn how web browsers execute JavaScript code using V8
engine as an example. We also cover concepts like JIT-compiling which helps JS code to run faster. This is followed by slightly advanced concepts like DOM, Async-functions, Web APIs and AJAX which are very popularly used in modern front end development. We learn how to optimize JavaScript code to run on both mobile apps and mobile browsers along with Desktop browsers and as desktop apps via Electron JS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries
Teachers

Intended learning outcomes
- Acquire knowledge of popular style guides and good coding practices to build readable and reusable code which is also highly performant.
- Develop a specialised knowledge of key strategies related to JavaScript.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of JavaScript.
- Critically evaluate diverse scholarly views on JavaScript.
- 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 presentations.
- Apply an in-depth domain-specific knowledge and understanding to JavaScript tools.
- Creatively apply JavaScript concepts to develop critical and original solutions for computational problems.
- Demonstrate self-direction in research and originality in solutions developed for JavaScript.
- Create synthetic contextualised discussions of key issues related to JavaScript.
- Efficiently manage interdisciplinary issues that arise in connection to JavaScript
- Solve problems and be prepared to take leadership decisions related to the methods and principles of JavaScript.
- Act autonomously in identifying research problems and solutions related to JavaScript.
- Apply a professional and scholarly approach to research problems pertaining to JavaScript.
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen(Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering.
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours.
- Acquire knowledge of various methods for specifying the logical and functional design of a system.
- Develop a critical understanding of software design and refinement processes.
- 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Creatively apply various visual and written methods for converting architectural/ high-level designs to component-oriented, low-level designs.
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
About
UI Design Part 2 builds on the foundational knowledge acquired in Part 1, focusing on advanced UI concepts and prototyping. Designed for students with a basic understanding of UI design, this course enhances skills in creating sophisticated and interactive digital interfaces. Through a mix of theory and practical application, students will master advanced design principles and prototyping techniques.Students will explore advanced topics such as micro-interactions, animation, and the use of grids and layouts to create dynamic interfaces. The course also covers advanced color theory and typography, enabling students to refine their design aesthetics. Prototyping is a major focus, with hands-on experience using Figma's advanced features to create interactive prototypes. Students will learn to design and implement user flows, transitions, and animations, making their static designs more immersive. Additionally, the course covers best practices for usability testing and gathering user feedback, allowing students to iterate and refine their designs based on real data. By the end, students will have a comprehensive understanding of advanced UI design and prototyping, equipping them with the skills to create professional-grade digital interfaces that are both functional and visually stunning. This course is ideal for those looking to elevate their UI design abilities and make a significant impact in digital design.
Teachers
Intended learning outcomes
- Learn the best practices for designing user flows and transitions in interactive prototypes.
- Grasp the advanced concepts of color theory and typography, and their application in professional UI design.
- Recognize the importance of usability testing and how to effectively gather and use user feedback.
- Comprehend the use of grids and layouts in creating complex and dynamic digital interfaces.
- Understand the principles and techniques of creating micro-interactions and animations in UI design.
- Utilize grids and complex layouts to create sophisticated, dynamic interfaces.
- Conduct usability testing and gather user feedback to iterate and improve UI designs.
- Design and implement advanced UI elements such as micro-interactions and animations to enhance user engagement.
- Create interactive prototypes using Figma’s advanced features, including user flows and transitions.
- Apply advanced color theory and typography to refine and perfect design aesthetics.
- Adapt and apply advanced design principles to create professional-grade digital interfaces for diverse applications.
- Analyze and evaluate advanced UI designs to identify strengths and areas for improvement.
- Demonstrate proficiency in using Figma for advanced prototyping and design, creating immersive and functional user experiences.
- Integrate feedback from usability testing to refine and enhance interactive prototypes.
- Develop and present comprehensive design projects that include advanced interactions and animations.
About
The UI Design Part 1 course introduces students to the essential principles and practices of UI design, focusing on creating visually appealing and user-friendly digital interfaces. Designed for beginners and those looking to enhance their design skills, this course covers fundamental concepts necessary for developing a strong foundation in UI design.Students will explore the basics of typography, learning how to choose and pair fonts effectively to enhance readability and aesthetic appeal. The course delves into color theory, teaching participants how to create harmonious color schemes that evoke the desired emotions and improve user experience. Additionally, students will gain an understanding of various UI components, such as buttons, icons, and navigation menus, and how to use them effectively in their designs. The course also provides hands-on training in Figma, a popular design tool used by professionals. Students will learn basic proficiency in Figma, including how to create and manage design projects, use design elements, and collaborate with team members. Practical exercises and real-world projects will help students apply their knowledge and develop their skills in a supportive learning environment.By the end of the course, students will have a solid understanding of the core principles of UI design and the practical skills needed to create visually appealing and user-friendly interfaces. Whether aiming to start a career in UI design or looking to enhance their existing skills, this course provides the essential building blocks for success.
Teachers
Intended learning outcomes
- Recognize the importance of user-centered design and how it influences interface aesthetics and functionality.
- Comprehend the key features and capabilities of Figma as a UI design tool.
- Understand the fundamental principles of typography and its impact on UI design.
- Grasp the basics of color theory and how to create harmonious and effective color palettes.
- Identify and utilize essential UI components, such as buttons, icons, and navigation elements.
- Create visually appealing digital interfaces using typography, color schemes, and UI components.
- Develop layouts and wireframes that enhance user experience and usability.
- Execute responsive design principles to ensure interfaces work across various devices and screen sizes.
- Utilize Figma's collaborative features to work effectively in a team environment.
- Apply basic Figma techniques to design and prototype user interfaces efficiently.
- Integrate feedback from peers and instructors to refine and enhance design projects.
- Develop and present design concepts that align with user needs and project goals.
- Demonstrate proficiency in using Figma to create interactive prototypes that effectively communicate design ideas.
- Adapt and apply design principles to create interfaces for diverse digital platforms.
- Analyze and critique existing user interfaces to identify strengths and areas for improvement.
About
The UX Psychology course explores the intersection of user experience design and psychology, providing students with the knowledge and skills to create intuitive and user-friendly digital products. This course is designed for individuals looking to understand the cognitive and emotional aspects of user interactions, enhancing their ability to design products that meet user needs and expectations. Students will begin by studying the fundamental principles of psychology as they relate to user experience. Topics will include cognitive load, perception, memory, and decision-making processes. By understanding how users think and behave, students will learn to anticipate user needs and design interfaces that are easy to navigate and use. The course will also delve into emotional design, examining how aesthetics, tone, and interaction elements can evoke positive emotions and enhance user satisfaction. Students will explore techniques for creating engaging and persuasive designs that foster a strong connection between the user and the product. Practical applications will be a key component of the course. Through hands-on projects and case studies, students will apply psychological principles to real-world design challenges. They will learn to conduct user research, analyze user behavior, and utilize insights to inform design decisions.
Teachers
Intended learning outcomes
- Gain insights into emotional design and how aesthetics, tone, and interaction elements influence user emotions and satisfaction.
- Understand the fundamental principles of psychology as they relate to user experience, including cognitive load, perception, memory, and decision-making processes.
- Comprehend the methods and tools used for usability testing in the context of psychological evaluation.
- Recognize the importance of user research and behavioural analysis in the design process.
- Learn about various techniques for creating engaging and persuasive designs.
- Design emotionally engaging and persuasive interfaces that enhance user satisfaction.
- Interpret user feedback and make data-driven improvements to designs.
- Implement usability testing methods to evaluate the effectiveness of designs from a psychological perspective.
- Conduct user research and analyze user behavior to inform design decisions.
- Apply psychological principles to create user-friendly and intuitive digital interfaces.
- Develop and present design projects that incorporate psychological principles to improve user experience.
- Analyze and evaluate digital interfaces to identify psychological strengths and weaknesses.
- Adapt design strategies based on psychological insights to meet user needs and expectations.
- Demonstrate proficiency in creating user-centric designs that are both functional and emotionally resonant.
- Integrate psychological principles and user feedback into a cohesive design process.
About
This course is designed to equip learners with the knowledge and skills required to perform comprehensive API (Application Programming Interface) testing. APIs are essential components of modern software applications, enabling different systems to communicate and share data. Ensuring the functionality, performance, and security of APIs is critical to the success of any software project. This course covers the fundamental concepts, techniques, and tools needed to effectively test APIs.Learners will begin by exploring the basics of APIs and understanding their significance in software development. The course will provide an overview of how APIs function and the role they play in connecting various software components. As learners progress, they will delve into different types of API testing, including functional testing, performance testing, and security testing. Each type of testing will be explained, highlighting its importance and the specific methodologies used. Through hands-on exercises and real-world examples, learners will gain practical experience with popular API testing tools such as Postman, SoapUI, and JMeter. These exercises will enable learners to become proficient in designing and executing API test cases, ensuring that APIs perform as expected under various conditions. They will also learn how to validate API responses, handle errors, and automate API tests for continuous integration and deployment processes.
By the end of the course, learners will have a comprehensive understanding of API testing and the ability to ensure that APIs meet their functionality, performance, and security requirements. This course is ideal for software testers, developers, and IT professionals looking to enhance their skills in API testing and contribute to the success of their software projects.
Teachers
Intended learning outcomes
- Comprehend various types of API testing, including functional, performance, and security testing.
- Gain insights into how to use popular API testing tools.
- Understand the significance of API performance and security in modern software applications.
- Learn best practices for API testing and test environment management.
- Understand the fundamental principles of APIs and their role in software development.
- Design and execute comprehensive API test cases using tools like Postman, SoapUI, and JMeter.
- Document and report API testing results clearly and effectively.
- Validate API responses and handle errors effectively.
- Conduct functional, performance, and security testing on APIs.
- Automate API testing for continuous integration and deployment processes.
- Develop and present comprehensive API testing strategies.
- Adapt API testing methodologies to suit different project requirements.
- Demonstrate proficiency in API testing, contributing to the success of software projects through thorough testing practices.
- Integrate feedback from testing results to improve API functionality and security.
- Analyze and evaluate API functionality, performance, and security.
About
The course explores the principles and practices of integrating game design elements into non-game contexts to enhance user engagement and motivation. This interdisciplinary course is ideal for students and professionals in fields such as marketing, education, healthcare, and technology who seek to apply gamification strategies to improve user experiences and outcomes. Throughout the course, students will delve into the core concepts of gamification, including the psychological and behavioral theories that underpin why gamification works. Topics will cover intrinsic and extrinsic motivation, reward systems, game mechanics such as points, badges, and leaderboards, and how these elements can be effectively applied to various domains. The course will provide a comprehensive overview of different gamification frameworks and models, offering practical guidance on how to design and implement gamified systems. Students will learn to identify the appropriate game mechanics for specific user groups and objectives, ensuring that the gamification strategies are tailored to enhance engagement and drive desired behaviors. Case studies from diverse industries will be examined to showcase successful gamification applications and highlight best practices. Students will have the opportunity to analyze these real-world examples, gaining insights into the challenges and solutions associated with gamification projects.
Teachers
Intended learning outcomes
- Gain insights into various gamification frameworks and models used in different industries.
- Learn the differences between intrinsic and extrinsic motivation and how they influence user behaviour.
- Acquire knowledge of best practices and successful examples of gamification in marketing, education, healthcare, and technology.
- Comprehend the role of game mechanics in driving engagement and how to apply them effectively.
- Understand the fundamental concepts of gamification and the psychological theories that support its effectiveness.
- Create and present hands-on projects that demonstrate the application of gamification principles in non-game contexts.
- Develop gamified systems for various domains, including marketing, education, healthcare, and technology.
- Apply game mechanics such as points, badges, leaderboards, and rewards to enhance user engagement and motivation.
- Analyze and evaluate the effectiveness of gamification projects through real-world case studies.
- Design and implement gamification strategies tailored to specific user groups and objectives.
- Evaluate and critique gamification projects to identify strengths and areas for improvement.
- Analyze user needs and behaviors to design effective gamification strategies.
- Integrate feedback and data-driven insights to refine and enhance gamification solutions.
- Adapt gamification techniques to meet the specific requirements of different fields and user demographics.
- Demonstrate proficiency in using gamification to create engaging, motivational, and impactful user experiences across various industries.
About
The course addresses critical issues surrounding the responsible use of data in today's digital age. Designed for students and professionals in data science, computer science, business, and related fields, this course explores the ethical and privacy challenges in the collection, analysis, and dissemination of data. Emphasis is placed on understanding legal frameworks, ethical theories, and best practices to ensure responsible and ethical data science projects. Students will examine fundamental principles of data ethics, including consent, transparency, and fairness, and delve into ethical theories that inform these principles. The course will also focus on major regulations such as the General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA), teaching students the importance of compliance to avoid legal repercussions. Practical applications will be emphasized through case studies and real-world examples, illustrating both pitfalls and best practices in data handling. Students will explore scenarios where data misuse led to significant ethical breaches and learn how to prevent such issues in their own work. The course also covers best practices for data governance, including methods for ensuring data integrity, security, and privacy. By the end of the course, students will be equipped with the knowledge and skills to navigate the complex ethical and legal landscape of data science, ensuring their projects contribute positively to society while respecting individual rights and privacy. This course is ideal for those looking to develop a strong ethical foundation in their data science careers.
Teachers
Intended learning outcomes
- Comprehend the significance of legal frameworks in governing data collection and usage.
- Acquire knowledge of historical cases of data misuse and the lessons learned from them.
- Learn the ethical theories that inform responsible data use.
- Gain insights into major data protection regulations and their impact on data practices.
- Understand the fundamental principles of data ethics, including consent, transparency, and fairness.
- Develop and present case studies illustrating ethical data handling and best practices.
- Conduct data collection, analysis, and dissemination in compliance with major regulations such as GDPR and CCPA.
- Analyze and apply ethical theories to real-world data science projects to ensure responsible data use.
- Identify and mitigate ethical and privacy risks in data science projects.
- Implement best practices for data governance, ensuring data integrity, security, and privacy.
- Critically assess the impact of data science practices on society and individual rights.
- Demonstrate proficiency in navigating the ethical and legal landscape of data science to contribute positively to society.
- Evaluate data science projects for ethical and privacy compliance.
- Integrate ethical considerations into the data science workflow.
- Develop strategies to address ethical and legal challenges in data science.
About
This course addresses essential aspects of effective project management in today's dynamic business environment. Designed for students and professionals in business, engineering, IT, and related fields, it provides a comprehensive understanding of project management principles, methodologies, and tools. Emphasis is placed on practical applications to ensure successful project initiation, planning, execution, monitoring, and closure.Students will explore foundational concepts such as scope, time, cost, and quality management. The course covers various methodologies including Agile, Scrum, and Waterfall, highlighting their applications in different scenarios. Through hands-on exercises and real-world case studies, students will learn to develop project plans, allocate resources, and manage risks. They will gain proficiency in using tools like Microsoft Project and Trello to streamline workflows. The course also emphasizes communication and leadership in project management. Students will learn techniques for effective stakeholder engagement, team collaboration, and conflict resolution. By the end of the course, students will be equipped with the skills and knowledge to lead projects to successful completion, making them valuable assets in any organization. This course is ideal for those looking to enhance their project management capabilities and drive project success in their careers.
Teachers
Intended learning outcomes
- Understand foundational project management principles and their applications in different project phases.
- Comprehend the significance of risk management and how to mitigate potential project risks.
- Learn the importance of scope, time, cost, and quality management in project success.
- Acquire knowledge of the tools and techniques used for effective project management.
- Gain insights into various project management methodologies and their appropriate use cases.
- Identify and manage project risks effectively to ensure successful project outcomes.
- Develop comprehensive project plans that include scope, time, cost, and quality management.
- Apply various project management methodologies such as Agile, Scrum, and Waterfall to real-world projects.
- Use project management tools like Microsoft Project and Trello to streamline project workflows.
- Implement effective stakeholder engagement, team collaboration, and conflict resolution techniques.
- Analyze and evaluate project requirements to develop tailored project management strategies.
- Lead and manage project teams to achieve project goals and objectives.
- Adapt project management approaches based on project complexity and stakeholder needs.
- Monitor and control project progress to ensure alignment with project plans and objectives.
- Demonstrate proficiency in managing projects from initiation to closure, ensuring successful delivery and stakeholder satisfaction.
About
Data is the fuel driving all major organisations. This course helps you understand how to process data at scale.From understanding the fundamentals of distributed processing to designing data warehousing and writing ETL (Extract Transform Load) pipelines to process batch and streaming data.Students will learn a comprehensive view of the complete Data Engineering lifecycle.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of data modeling for efficient pipeline creation.
- Critically evaluate diverse scholarly views on best practices in developing data-intensive applications.
- Develop a critical understanding of data engineering.
- Develop a specialised knowledge of standard tools for data processing, such as Apache Kafka, Airflow, and Spark (with PySpark), and the Hadoop Ecosystem.
- Acquire knowledge of various methods for warehousing data.
- Creatively apply various visual and written methods for dashboarding data with Grafana/Tableau.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding of orchestrating complete ETL pipelines.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Create synthetic contextualised discussions of key issues related to the data engineering lifecycle.
- Apply a professional and scholarly approach to research problems pertaining to data warehousing and modeling.
- Act autonomously in identifying research problems and solutions related to developing for data at scale.
- Solve problems and be prepared to take leadership decisions related to developing pipelines to handle massive datasets for engineering purposes.
- Demonstrate self-direction in research and originality in creating advanced SQL queries.
- Efficiently manage interdisciplinary issues that arise in connection to developing cloud solutions for data engineering problems.
About
This course teaches students how to analyse the ways users engage with a service. This method, called product analytics, helps businesses track and analyse user data. Students will learn more deeply what is required to move a product from idea to implementation, through to launch, and then on to iterative improvements. The course teaches how to measure progress, validate or update product hypotheses, and present product learnings. Also, students will gain experience in making informed decisions, as well as how to present findings and make an analytics-informed business case to win support for a product.
Teachers


Intended learning outcomes
- Critically evaluate diverse scholarly views on assessing user behaviours.
- Acquire knowledge of various methods for testing hypotheses about the viability of a product and about how users engage with it.
- Develop a specialised knowledge of frameworks for measuring user engagement, such as diagnostics, key performance indicators and other metrics.
- Develop a critical understanding of product design and development.
- Critically assess the relevance of theories of user behaviour for product development.
- Creatively apply various visual and written methods for proposing a technical solution to a real-world problem to other technical and managerial-level audiences, and for documenting that solution.
- Apply an in-depth domain-specific knowledge and understanding of system design and implementation in business
- 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
- Create synthetic contextualised discussions of key issues related to product sense, and how to tell whether a product is worth bringing to market.
- Demonstrate self-direction in research and originality in testing and validating hypotheses about a product and its users.
- Apply a professional and scholarly approach to research problems pertaining to measuring user engagement.
- Efficiently manage interdisciplinary issues that arise in connection to designing a product and bringing it to market.
- Solve problems and be prepared to take leadership decisions related to developing data-informed business cases about bringing products to market and iterating upon them.
- Act autonomously in identifying research problems and solutions related to product analytics.
About
This is a project-based course, with the aim of building the required skills for creating web-based software systems. The course covers the entire lifecycle of building software projects, from requirement gathering and scope definition from a product document, to designing the architecture of the system, and all the way to delivery and maintenance of the software system. The course covers both frontend, which is, building browser-based interfaces for users, using frontend web frameworks, and also building the backend, which is the server running an API to serve the information to the frontend, and running on anSQL or similar database management system for storage. All aspects of delivering a software project, including security, user authentication and authorisation, monitoring and analytics, and maintaining the project are covered. The course also covers the aspects of project maintenance, like using aversion control system, setting up continuous integration and deployment pipelines and bug trackers.
Teachers
Intended learning outcomes
- Develop a critical understanding of modern computational applications.
- Acquire knowledge of various methods for version control.
- Develop a specialised knowledge of key strategies for designing well-architected information management systems.
- Critically assess the relevance of theories of web security for cloud deployment.
- Critically evaluate diverse scholarly views on database management.
- Apply an in-depth domain-specific knowledge and understanding of system design and implementation in business
- 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.
- Creatively apply various visual and written methods for proposing a technical solution to a real-world problem to other technical and managerial-level audiences, and for documenting that solution
- Apply a professional and scholarly approach to research problems pertaining to real-world computational complexities.
- Demonstrate self-direction in research and originality in solutions developed for robust and reliable cloud deployments.
- Act autonomously in identifying research problems and solutions related to modern computational tools and methods.
- Solve problems and be prepared to take leadership decisions related to developing and deploying cloud-oriented software solutions.
- Efficiently manage interdisciplinary issues that arise in connection to deploying a modern, web-based system.
- Create synthetic contextualised discussions of key issues related to real-world software design, implementation, and deployment situations.
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
- Acquire knowledge of various methods for storing data in modern programming languages.
- Develop a specialised knowledge of the various uses and forms of lists in programming, including 2D lists.
- Critically assess the relevance of theories of data storage for programming.
- Develop a critical understanding of product design and development.
- Critically evaluate diverse scholarly views on functions and algorithms.
- 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.
- Creatively apply various visual, written, and code-based methods for manipulating tuples, strings, lists, and similar structures.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing application.
- Apply a professional and scholarly approach to research problems pertaining to functions and data types.
- Act autonomously in identifying research problems and solutions related to data storage.
- Create synthetic contextualised discussions of key issues related to data storage and how popular programming languages handle this.
- Efficiently manage interdisciplinary issues that arise in connection to choosing the best data type for a particular programming need.
- Solve problems and be prepared to take leadership decisions related to programming concepts such as lists, sets, tuples, dictionaries, and strings.
- Demonstrate self-direction in research and originality in handling data in lists.
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
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS
- Critically evaluate diverse scholarly views on front end development
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Develop a specialised knowledge of key strategies related to front end development.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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.
- Act autonomously in identifying research problems and solutions related to 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.
- Demonstrate self-direction in research and originality in solutions developed for front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
About
This course is a hands-on course covering JavaScript from basics to advanced concepts in detail using multiple examples. We start with basic programming concepts like variables, control statements, loops, classes and objects. Students also learn basic data-structures like Strings, Arrays and dates. Students also learn to debug our code and handle errors gracefully in code. We learn popular style guides and good coding practices to build readable and reusable code which is also highly performant. We then learn how web browsers execute JavaScript code using V8
engine as an example. We also cover concepts like JIT-compiling which helps JS code to run faster. This is followed by slightly advanced concepts like DOM, Async-functions, Web APIs and AJAX which are very popularly used in modern front end development. We learn how to optimize JavaScript code to run on both mobile apps and mobile browsers along with Desktop browsers and as desktop apps via Electron JS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries
Teachers

Intended learning outcomes
- Acquire knowledge of popular style guides and good coding practices to build readable and reusable code which is also highly performant.
- Develop a specialised knowledge of key strategies related to JavaScript.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of JavaScript.
- Critically evaluate diverse scholarly views on JavaScript.
- 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 presentations.
- Apply an in-depth domain-specific knowledge and understanding to JavaScript tools.
- Creatively apply JavaScript concepts to develop critical and original solutions for computational problems.
- Demonstrate self-direction in research and originality in solutions developed for JavaScript.
- Create synthetic contextualised discussions of key issues related to JavaScript.
- Efficiently manage interdisciplinary issues that arise in connection to JavaScript
- Solve problems and be prepared to take leadership decisions related to the methods and principles of JavaScript.
- Act autonomously in identifying research problems and solutions related to JavaScript.
- Apply a professional and scholarly approach to research problems pertaining to JavaScript.
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 AmazonWeb 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 (likeAzure, 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 aVPC. 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
- Develop a specialised139 knowledge of key strategies related to cloud computing
- Critically evaluate diverse scholarly views on cloud computing
- Acquire knowledge of virtualization and how virtualized compute instances are created and configured
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of cloud computing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Autonomously gather material and organise it into coherent problems sets or presentations
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to 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
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen(Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering.
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours.
- Acquire knowledge of various methods for specifying the logical and functional design of a system.
- Develop a critical understanding of software design and refinement processes.
- 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Creatively apply various visual and written methods for converting architectural/ high-level designs to component-oriented, low-level designs.
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
About
This course provides students with hands-on experience on deploying high velocity applications and services reliably on complex and distributed infrastructure. DevOps as a philosophy is a key driver of the modern software life cycle which prefers rapid and reliable delivery of functionality and features via code. We start with a solid introduction to Linux scripting and networking. Then, we learn popular methodologies to deploy complex and distributed software like micro services, containerization (Docker) and orchestration (Kubernetes). All of this would be introduced with real world examples from the industry. We also focus on Continuous Integration and Continuous Delivery (CI/CD) methodology and how it can be achieved using popular toolchains like Jenkins. We dive into how automated testing of software can be achieved using libraries like Selenium. This shall be followed by more advanced techniques like serverless-compute, Platform as a service model and Cloud-DevOps. Students would learn to monitor and log key datapoints to ensure they maintain a healthy system and adapt it as needed. Infrastructure-as-code is a key component of modern DevOps especially on cloud and containerized applications which would also be covered with real-world examples
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to DevOps.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Acquire knowledge of popular methodologies to deploy complex and distributed software like microservices, containerization (Docker) and orchestration (Kubernetes).
- Critically evaluate diverse scholarly views on DevOps.
- Develop a critical knowledge of DevOps.
- Apply an in-depth domain-specific knowledge and understanding to DevOps solutions.
- 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.
- Creatively apply DevOps tools to develop critical and original solutions for computational problems.
- Apply a professional and scholarly approach to research problems pertaining to DevOps.
- Create synthetic contextualised discussions of key issues related to DevOps.
- Efficiently manage interdisciplinary issues that arise in connection to DevOps.
- Demonstrate self-direction in research and originality in solutions developed for DevOps.
- Act autonomously in identifying research problems and solutions related to DevOps.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of DevOps.
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 hyper spheres. 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 also learn how each of these techniques under various real world situations like the presence of outliers, imbalanced data, multi class classification etc. Students learn bias and variance trade-off and various techniques to avoid overfitting and underfitting. Students also study these algorithms from a Bayesian viewpoint along with geometric intuition. This module is hands-on and students apply all these classical techniques to real world problems.
Teachers


Intended learning outcomes
- Critically evaluate diverse scholarly views on machine learning
- Develop a specialised knowledge of key strategies related to machine learning
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting
- Develop a critical knowledge of machine learning
- 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
- Autonomously gather material and organise it into coherent problem sets and presentation
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions
- Efficiently manage interdisciplinary issues that arise in connection to 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
- Apply a professional and scholarly approach to research problems pertaining to machine learning
- Create synthetic contextualised discussions of key issues related to machine learning
- Demonstrate self-direction in research and originality in solutions developed for machine learning
About
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5, CSS and Frameworks likeBootstrap 4. This course starts with an introduction on how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details ofHTML5 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 on 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 Bootstrap4 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.
- Creatively apply Front end UI/UX development applications to develop critical and original solutions for computational problems.
- Autonomously gather material and organise into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to technology.
- Apply a professional and scholarly approach to research problems pertaining to Front end UI/UX development.
- Demonstrate self-direction in research and originality in solutions developed for Front end UI/UX development.
- Act autonomously in identifying research problems and solutions related to Front end UI/UX development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Front end UI/UX development.
- Create synthetic contextualised discussions of key issues related to Front end UI/UX development.
- Efficiently manage interdisciplinary issues that arise in connection to Front end UI/UX development.
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 e-commerce, online learningand/or photo-sharing.
Teachers


Intended learning outcomes
- 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.
- Develop a specialised knowledge of key strategies related to Back End Development.
- Develop a critical knowledge of Back End Development.
- Critically evaluate diverse scholarly views on Back End Development.
- Apply an in-depth domain-specific knowledge and understanding to Back End Development applications.
- 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.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Create synthetic contextualised discussions of key issues related to Back End Development.
- Apply a professional and scholarly approach to research problems pertaining to 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.
- Demonstrate self-direction in research and originality in solutions developed for 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 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
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS
- Critically evaluate diverse scholarly views on front end development
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Develop a specialised knowledge of key strategies related to front end development.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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.
- Act autonomously in identifying research problems and solutions related to 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.
- Demonstrate self-direction in research and originality in solutions developed for front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
About
This course is a hands-on course covering JavaScript from basics to advanced concepts in detail using multiple examples. We start with basic programming concepts like variables, control statements, loops, classes and objects. Students also learn basic data-structures like Strings, Arrays and dates. Students also learn to debug our code and handle errors gracefully in code. We learn popular style guides and good coding practices to build readable and reusable code which is also highly performant. We then learn how web browsers execute JavaScript code using V8
engine as an example. We also cover concepts like JIT-compiling which helps JS code to run faster. This is followed by slightly advanced concepts like DOM, Async-functions, Web APIs and AJAX which are very popularly used in modern front end development. We learn how to optimize JavaScript code to run on both mobile apps and mobile browsers along with Desktop browsers and as desktop apps via Electron JS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries
Teachers

Intended learning outcomes
- Acquire knowledge of popular style guides and good coding practices to build readable and reusable code which is also highly performant.
- Develop a specialised knowledge of key strategies related to JavaScript.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of JavaScript.
- Critically evaluate diverse scholarly views on JavaScript.
- 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 presentations.
- Apply an in-depth domain-specific knowledge and understanding to JavaScript tools.
- Creatively apply JavaScript concepts to develop critical and original solutions for computational problems.
- Demonstrate self-direction in research and originality in solutions developed for JavaScript.
- Create synthetic contextualised discussions of key issues related to JavaScript.
- Efficiently manage interdisciplinary issues that arise in connection to JavaScript
- Solve problems and be prepared to take leadership decisions related to the methods and principles of JavaScript.
- Act autonomously in identifying research problems and solutions related to JavaScript.
- Apply a professional and scholarly approach to research problems pertaining to JavaScript.
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen(Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering.
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours.
- Acquire knowledge of various methods for specifying the logical and functional design of a system.
- Develop a critical understanding of software design and refinement processes.
- 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Creatively apply various visual and written methods for converting architectural/ high-level designs to component-oriented, low-level designs.
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
About
UI Design Part 2 builds on the foundational knowledge acquired in Part 1, focusing on advanced UI concepts and prototyping. Designed for students with a basic understanding of UI design, this course enhances skills in creating sophisticated and interactive digital interfaces. Through a mix of theory and practical application, students will master advanced design principles and prototyping techniques.Students will explore advanced topics such as micro-interactions, animation, and the use of grids and layouts to create dynamic interfaces. The course also covers advanced color theory and typography, enabling students to refine their design aesthetics. Prototyping is a major focus, with hands-on experience using Figma's advanced features to create interactive prototypes. Students will learn to design and implement user flows, transitions, and animations, making their static designs more immersive. Additionally, the course covers best practices for usability testing and gathering user feedback, allowing students to iterate and refine their designs based on real data. By the end, students will have a comprehensive understanding of advanced UI design and prototyping, equipping them with the skills to create professional-grade digital interfaces that are both functional and visually stunning. This course is ideal for those looking to elevate their UI design abilities and make a significant impact in digital design.
Teachers
Intended learning outcomes
- Learn the best practices for designing user flows and transitions in interactive prototypes.
- Grasp the advanced concepts of color theory and typography, and their application in professional UI design.
- Recognize the importance of usability testing and how to effectively gather and use user feedback.
- Comprehend the use of grids and layouts in creating complex and dynamic digital interfaces.
- Understand the principles and techniques of creating micro-interactions and animations in UI design.
- Utilize grids and complex layouts to create sophisticated, dynamic interfaces.
- Conduct usability testing and gather user feedback to iterate and improve UI designs.
- Design and implement advanced UI elements such as micro-interactions and animations to enhance user engagement.
- Create interactive prototypes using Figma’s advanced features, including user flows and transitions.
- Apply advanced color theory and typography to refine and perfect design aesthetics.
- Adapt and apply advanced design principles to create professional-grade digital interfaces for diverse applications.
- Analyze and evaluate advanced UI designs to identify strengths and areas for improvement.
- Demonstrate proficiency in using Figma for advanced prototyping and design, creating immersive and functional user experiences.
- Integrate feedback from usability testing to refine and enhance interactive prototypes.
- Develop and present comprehensive design projects that include advanced interactions and animations.
About
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5, CSS and Frameworks likeBootstrap 4. This course starts with an introduction on how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details ofHTML5 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 on 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 Bootstrap4 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.
- Creatively apply Front end UI/UX development applications to develop critical and original solutions for computational problems.
- Autonomously gather material and organise into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to technology.
- Apply a professional and scholarly approach to research problems pertaining to Front end UI/UX development.
- Demonstrate self-direction in research and originality in solutions developed for Front end UI/UX development.
- Act autonomously in identifying research problems and solutions related to Front end UI/UX development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Front end UI/UX development.
- Create synthetic contextualised discussions of key issues related to Front end UI/UX development.
- Efficiently manage interdisciplinary issues that arise in connection to Front end UI/UX development.
About
This course is aimed at equipping students with skills to architect the high level design (a.k.a. system design) of software and data systems. We start with some of the good to have properties of large complex software systems like scalability, reliability, availability, consistency etc. The module teaches various patterns and design choices we have to satisfy each of these good to have properties. We then go on to understand key components of system design like load-balancers, microservices, reverse-proxies, content-delivery networks etc. Students learn how each of them work internally along with real world implementations of each. We study various NoSQL data stores, their internal architectures and where to use which one with real-world examples. Students also learn popular data encoding schemes like XML and JSON. We learn how to build data pipelines using batch and stream processing systems. We also work on multiple real world cases on architecting on the cloud using popular open-source libraries and tools. Students will study design documents and high-level-design of popular internet applications and services like video conferencing, recommender-systems, peer-to-peer chat, voice-assistants etc.
Teachers
Intended learning outcomes
- Develop a critical knowledge of System Design
- Critically evaluate diverse scholarly views on System Design
- Develop a specialised knowledge of key strategies related to System Design
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of popular data encoding schemes like XML and JSON
- 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
- Creatively apply system design components to develop critical and original solutions for computational problems
- Apply an in-depth domain-specific knowledge and understanding to System Design solutions
- Demonstrate self-direction in research and originality in solutions developed for System Design
- Create synthetic contextualised discussions of key issues related to System Design
- Solve problems and be prepared to take leadership decisions related to the methods and principles of System Design
- Efficiently manage interdisciplinary issues that arise in connection to System Design
- Apply a professional and scholarly approach to research problems pertaining to System Design
- Act autonomously in identifying research problems and solutions related to System Design
About
The UX Psychology course explores the intersection of user experience design and psychology, providing students with the knowledge and skills to create intuitive and user-friendly digital products. This course is designed for individuals looking to understand the cognitive and emotional aspects of user interactions, enhancing their ability to design products that meet user needs and expectations. Students will begin by studying the fundamental principles of psychology as they relate to user experience. Topics will include cognitive load, perception, memory, and decision-making processes. By understanding how users think and behave, students will learn to anticipate user needs and design interfaces that are easy to navigate and use. The course will also delve into emotional design, examining how aesthetics, tone, and interaction elements can evoke positive emotions and enhance user satisfaction. Students will explore techniques for creating engaging and persuasive designs that foster a strong connection between the user and the product. Practical applications will be a key component of the course. Through hands-on projects and case studies, students will apply psychological principles to real-world design challenges. They will learn to conduct user research, analyze user behavior, and utilize insights to inform design decisions.
Teachers
Intended learning outcomes
- Gain insights into emotional design and how aesthetics, tone, and interaction elements influence user emotions and satisfaction.
- Understand the fundamental principles of psychology as they relate to user experience, including cognitive load, perception, memory, and decision-making processes.
- Comprehend the methods and tools used for usability testing in the context of psychological evaluation.
- Recognize the importance of user research and behavioural analysis in the design process.
- Learn about various techniques for creating engaging and persuasive designs.
- Design emotionally engaging and persuasive interfaces that enhance user satisfaction.
- Interpret user feedback and make data-driven improvements to designs.
- Implement usability testing methods to evaluate the effectiveness of designs from a psychological perspective.
- Conduct user research and analyze user behavior to inform design decisions.
- Apply psychological principles to create user-friendly and intuitive digital interfaces.
- Develop and present design projects that incorporate psychological principles to improve user experience.
- Analyze and evaluate digital interfaces to identify psychological strengths and weaknesses.
- Adapt design strategies based on psychological insights to meet user needs and expectations.
- Demonstrate proficiency in creating user-centric designs that are both functional and emotionally resonant.
- Integrate psychological principles and user feedback into a cohesive design process.
About
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Teachers




Intended learning outcomes
- Critically assess the relevance of theories of creating use cases for business applications in the realm of software engineering.
- Acquire knowledge of various methods for conducting scripted analyses of moderately large-scale data sets.
- Critically evaluate diverse scholarly views on the graphical presentation of data.
- Develop a critical understanding of the Excel environment and its formulas and functions.
- Develop a specialised knowledge of common spreadsheet-based reporting tools such as charts and dashboards.
- Creatively apply various visual and written methods for developing meaningful visualisations of data sets.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data analysis in business
- 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.
- Create synthetic contextualised discussions of key issues related to representing and storing data in spreadsheets.
- Apply a professional and scholarly approach to research problems pertaining to the appropriate use of functions and formulas in a spreadsheet.
- Demonstrate self-direction in research and originality in solutions developed for scripting data analysis and presenting it visually
- Efficiently manage interdisciplinary issues that arise in connection to organizing data.
- Act autonomously in identifying research problems and solutions related to the appropriate use of macros in analysing data in a spreadsheet.
- Solve problems and be prepared to take leadership decisions related to creating end-to-end business use case scenarios using a spreadsheet.
About
The UI Design Part 1 course introduces students to the essential principles and practices of UI design, focusing on creating visually appealing and user-friendly digital interfaces. Designed for beginners and those looking to enhance their design skills, this course covers fundamental concepts necessary for developing a strong foundation in UI design.Students will explore the basics of typography, learning how to choose and pair fonts effectively to enhance readability and aesthetic appeal. The course delves into color theory, teaching participants how to create harmonious color schemes that evoke the desired emotions and improve user experience. Additionally, students will gain an understanding of various UI components, such as buttons, icons, and navigation menus, and how to use them effectively in their designs. The course also provides hands-on training in Figma, a popular design tool used by professionals. Students will learn basic proficiency in Figma, including how to create and manage design projects, use design elements, and collaborate with team members. Practical exercises and real-world projects will help students apply their knowledge and develop their skills in a supportive learning environment.By the end of the course, students will have a solid understanding of the core principles of UI design and the practical skills needed to create visually appealing and user-friendly interfaces. Whether aiming to start a career in UI design or looking to enhance their existing skills, this course provides the essential building blocks for success.
Teachers
Intended learning outcomes
- Recognize the importance of user-centered design and how it influences interface aesthetics and functionality.
- Comprehend the key features and capabilities of Figma as a UI design tool.
- Understand the fundamental principles of typography and its impact on UI design.
- Grasp the basics of color theory and how to create harmonious and effective color palettes.
- Identify and utilize essential UI components, such as buttons, icons, and navigation elements.
- Create visually appealing digital interfaces using typography, color schemes, and UI components.
- Develop layouts and wireframes that enhance user experience and usability.
- Execute responsive design principles to ensure interfaces work across various devices and screen sizes.
- Utilize Figma's collaborative features to work effectively in a team environment.
- Apply basic Figma techniques to design and prototype user interfaces efficiently.
- Integrate feedback from peers and instructors to refine and enhance design projects.
- Develop and present design concepts that align with user needs and project goals.
- Demonstrate proficiency in using Figma to create interactive prototypes that effectively communicate design ideas.
- Adapt and apply design principles to create interfaces for diverse digital platforms.
- Analyze and critique existing user interfaces to identify strengths and areas for improvement.
About
This course helps students translate mathematical/statistical/scientific conceptsinto 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 valuabe 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.
- 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.
- Critically evaluate diverse scholarly views on Numerical programming in Python.
- Develop a specialised52 knowledge of key strategies related to Numerical programming in Python.
- Autonomously gather material and organize it into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Apply an in-depth domain-specific knowledge and understanding to numerical programming in Python.
- Create new solutions that are critical to solving computational problems through creatively applying code writing.
- Act autonomously in identifying research problems and solutions related to Numerical programming in Python.
- Create synthetic contextualised52 discussions of key issues related 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.
- Demonstrate self-direction in research and originality in solutions developed for Numerical programming in Python.
- Apply a professional and scholarly approach to research problems pertaining to Numerical programming in Python.
- Efficiently manage interdisciplinary issues that arise in connection to Numerical programming in Python.
About
This course is aimed to build a strong foundational knowledge of Data Analytics tools used extensively in the Data Science field. There now are powerful data visualisation tools used in the business analytics industry to process and visualise raw business data in a very presentable and understandable format. A good example is Tableau, used by all data analytics departments of companies and in data analytics companies in various fields for its ease of use and efficiency. Tableau uses relational databases, Online Analytical Processing Cubes, Spreadsheets, cloud databases to generate graphical type visualisations. Course starts with visualisations and moves to an in-depth look at the different chart and graph functions, calculations, mapping and other functionality. Students will be taught quick table calculations, reference lines, different types of visualisations, bands and distributions, parameters, motion chart, trends and forecasting, formatting, stories, performance recording and advanced mapping At the end of this course, students will be prepared, if they desire, to earn such industry desktop certifications as a Tableau Desktop Specialist, a Tableau Certified Associate, or a Tableau Certified Professional.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of data visualisation for business applications in the realm of software engineering.
- Critically evaluate diverse scholarly views on advanced visualisation strategies.
- Develop a specialised knowledge of such concepts as bands and distributions, parameters, motion chart, trends and forecasting, formatting, stories, performance recording and advanced mapping.
- Acquire knowledge of various methods for telling stories with data across different formats.
- Develop a critical understanding of key data science concepts as implemented in common software packages.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Creatively apply various visual and written methods for developing data visualisations.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data storytelling in software engineering.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Efficiently manage interdisciplinary issues that arise in connection to advanced visual analytics
- Act autonomously in identifying research problems and solutions related to implementing data science visualisations from scratch.
- Solve problems and be prepared to take leadership decisions related to data visualisation strategies.
- Create synthetic contextualised discussions of key issues related to time and space complexity in data science.
- Apply a professional and scholarly approach to research problems pertaining to data visualisations, including dashboards and storytelling.
- Demonstrate self-direction in research and originality in solutions developed for data visualisation.
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.
- 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.
- Critically evaluate diverse scholarly views on computational complexity.
- Apply an in-depth domain-specific knowledge and understanding to computer programming.
- 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
- Creatively apply various programming methods to develop critical and original solutions to computational problems.
- 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.
- 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.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of computer programming.
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 AmazonWeb 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 (likeAzure, 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 aVPC. 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
- Develop a specialised139 knowledge of key strategies related to cloud computing
- Critically evaluate diverse scholarly views on cloud computing
- Acquire knowledge of virtualization and how virtualized compute instances are created and configured
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of cloud computing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Autonomously gather material and organise it into coherent problems sets or presentations
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to 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
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen(Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering.
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours.
- Acquire knowledge of various methods for specifying the logical and functional design of a system.
- Develop a critical understanding of software design and refinement processes.
- 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Creatively apply various visual and written methods for converting architectural/ high-level designs to component-oriented, low-level designs.
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
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 hyper spheres. 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 also learn how each of these techniques under various real world situations like the presence of outliers, imbalanced data, multi class classification etc. Students learn bias and variance trade-off and various techniques to avoid overfitting and underfitting. Students also study these algorithms from a Bayesian viewpoint along with geometric intuition. This module is hands-on and students apply all these classical techniques to real world problems.
Teachers


Intended learning outcomes
- Critically evaluate diverse scholarly views on machine learning
- Develop a specialised knowledge of key strategies related to machine learning
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting
- Develop a critical knowledge of machine learning
- 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
- Autonomously gather material and organise it into coherent problem sets and presentation
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions
- Efficiently manage interdisciplinary issues that arise in connection to 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
- Apply a professional and scholarly approach to research problems pertaining to machine learning
- Create synthetic contextualised discussions of key issues related to machine learning
- Demonstrate self-direction in research and originality in solutions developed for machine learning
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 deepMLPs can be successfully trained. The module teaches variants of Gradient Descent that have been specifically designed to work well for deep learning systems likeADAM, 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 2and Keras. Students also understand how TensorFlow 2 works internally with specific focus on computational graph processing
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to Deep Learning
- 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
- Acquire knowledge of deep learning systems like ADAM, AdaGrad, RMSProp etc. Students also learn AutoEncoders, VAEs and Word2Vec
- 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
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning
- Create synthetic contextualized discussions of key issues related to Deep Learning
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning
- Act autonomously in identifying research problems and solutions related to Deep Learning
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning
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
- Critically evaluate diverse scholarly views on Applied Statistics
- Develop a critical knowledge of Applied Statistics
- Acquire knowledge of popular discrete and continuous distributions (like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, and log-normal)
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a specialised58 knowledge of key strategies related to Applied Statistics
- 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
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into a coherent problem set or presentation
- Act autonomously in identifying research problems and solutions related to Applied Statistics
- Efficiently manage interdisciplinary issues that arise in connection to Applied Statistics
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Applied Statistics
- Create synthetic contextualised discussions of key issues related to Applied Statistics
- Demonstrate self-direction in research and originality in solutions developed for Applied Statistics
- Apply a professional and scholarly approach to research problems pertaining to probability theory to perform mathematically rigorous data analysis
About
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Teachers




Intended learning outcomes
- Critically assess the relevance of theories of creating use cases for business applications in the realm of software engineering.
- Acquire knowledge of various methods for conducting scripted analyses of moderately large-scale data sets.
- Critically evaluate diverse scholarly views on the graphical presentation of data.
- Develop a critical understanding of the Excel environment and its formulas and functions.
- Develop a specialised knowledge of common spreadsheet-based reporting tools such as charts and dashboards.
- Creatively apply various visual and written methods for developing meaningful visualisations of data sets.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data analysis in business
- 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.
- Create synthetic contextualised discussions of key issues related to representing and storing data in spreadsheets.
- Apply a professional and scholarly approach to research problems pertaining to the appropriate use of functions and formulas in a spreadsheet.
- Demonstrate self-direction in research and originality in solutions developed for scripting data analysis and presenting it visually
- Efficiently manage interdisciplinary issues that arise in connection to organizing data.
- Act autonomously in identifying research problems and solutions related to the appropriate use of macros in analysing data in a spreadsheet.
- Solve problems and be prepared to take leadership decisions related to creating end-to-end business use case scenarios using a spreadsheet.
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
- Acquire knowledge of various methods for storing data in modern programming languages.
- Develop a specialised knowledge of the various uses and forms of lists in programming, including 2D lists.
- Critically assess the relevance of theories of data storage for programming.
- Develop a critical understanding of product design and development.
- Critically evaluate diverse scholarly views on functions and algorithms.
- 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.
- Creatively apply various visual, written, and code-based methods for manipulating tuples, strings, lists, and similar structures.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing application.
- Apply a professional and scholarly approach to research problems pertaining to functions and data types.
- Act autonomously in identifying research problems and solutions related to data storage.
- Create synthetic contextualised discussions of key issues related to data storage and how popular programming languages handle this.
- Efficiently manage interdisciplinary issues that arise in connection to choosing the best data type for a particular programming need.
- Solve problems and be prepared to take leadership decisions related to programming concepts such as lists, sets, tuples, dictionaries, and strings.
- Demonstrate self-direction in research and originality in handling data in lists.
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
- Acquire knowledge of popular frameworks/libraries in use: React.js, jQuery and AngularJS
- Critically evaluate diverse scholarly views on front end development
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of front end development.
- Develop a specialised knowledge of key strategies related to front end development.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- 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.
- Act autonomously in identifying research problems and solutions related to 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.
- Demonstrate self-direction in research and originality in solutions developed for front end development.
- Create synthetic contextualised discussions of key issues related to front end development.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of front end development.
About
This course is a hands-on course covering JavaScript from basics to advanced concepts in detail using multiple examples. We start with basic programming concepts like variables, control statements, loops, classes and objects. Students also learn basic data-structures like Strings, Arrays and dates. Students also learn to debug our code and handle errors gracefully in code. We learn popular style guides and good coding practices to build readable and reusable code which is also highly performant. We then learn how web browsers execute JavaScript code using V8
engine as an example. We also cover concepts like JIT-compiling which helps JS code to run faster. This is followed by slightly advanced concepts like DOM, Async-functions, Web APIs and AJAX which are very popularly used in modern front end development. We learn how to optimize JavaScript code to run on both mobile apps and mobile browsers along with Desktop browsers and as desktop apps via Electron JS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries
Teachers

Intended learning outcomes
- Acquire knowledge of popular style guides and good coding practices to build readable and reusable code which is also highly performant.
- Develop a specialised knowledge of key strategies related to JavaScript.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Develop a critical knowledge of JavaScript.
- Critically evaluate diverse scholarly views on JavaScript.
- 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 presentations.
- Apply an in-depth domain-specific knowledge and understanding to JavaScript tools.
- Creatively apply JavaScript concepts to develop critical and original solutions for computational problems.
- Demonstrate self-direction in research and originality in solutions developed for JavaScript.
- Create synthetic contextualised discussions of key issues related to JavaScript.
- Efficiently manage interdisciplinary issues that arise in connection to JavaScript
- Solve problems and be prepared to take leadership decisions related to the methods and principles of JavaScript.
- Act autonomously in identifying research problems and solutions related to JavaScript.
- Apply a professional and scholarly approach to research problems pertaining to JavaScript.
About
This course is designed to equip learners with the knowledge and skills required to perform comprehensive API (Application Programming Interface) testing. APIs are essential components of modern software applications, enabling different systems to communicate and share data. Ensuring the functionality, performance, and security of APIs is critical to the success of any software project. This course covers the fundamental concepts, techniques, and tools needed to effectively test APIs.Learners will begin by exploring the basics of APIs and understanding their significance in software development. The course will provide an overview of how APIs function and the role they play in connecting various software components. As learners progress, they will delve into different types of API testing, including functional testing, performance testing, and security testing. Each type of testing will be explained, highlighting its importance and the specific methodologies used. Through hands-on exercises and real-world examples, learners will gain practical experience with popular API testing tools such as Postman, SoapUI, and JMeter. These exercises will enable learners to become proficient in designing and executing API test cases, ensuring that APIs perform as expected under various conditions. They will also learn how to validate API responses, handle errors, and automate API tests for continuous integration and deployment processes.
By the end of the course, learners will have a comprehensive understanding of API testing and the ability to ensure that APIs meet their functionality, performance, and security requirements. This course is ideal for software testers, developers, and IT professionals looking to enhance their skills in API testing and contribute to the success of their software projects.
Teachers
Intended learning outcomes
- Comprehend various types of API testing, including functional, performance, and security testing.
- Gain insights into how to use popular API testing tools.
- Understand the significance of API performance and security in modern software applications.
- Learn best practices for API testing and test environment management.
- Understand the fundamental principles of APIs and their role in software development.
- Design and execute comprehensive API test cases using tools like Postman, SoapUI, and JMeter.
- Document and report API testing results clearly and effectively.
- Validate API responses and handle errors effectively.
- Conduct functional, performance, and security testing on APIs.
- Automate API testing for continuous integration and deployment processes.
- Develop and present comprehensive API testing strategies.
- Adapt API testing methodologies to suit different project requirements.
- Demonstrate proficiency in API testing, contributing to the success of software projects through thorough testing practices.
- Integrate feedback from testing results to improve API functionality and security.
- Analyze and evaluate API functionality, performance, and security.
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 AmazonWeb 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 (likeAzure, 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 aVPC. 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
- Develop a specialised139 knowledge of key strategies related to cloud computing
- Critically evaluate diverse scholarly views on cloud computing
- Acquire knowledge of virtualization and how virtualized compute instances are created and configured
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of cloud computing
- Creatively apply cloud computing applications to develop critical and original solutions for computational problems
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to cloud computing services
- Autonomously gather material and organise it into coherent problems sets or presentations
- Demonstrate self-direction in research and originality in solutions developed for cloud computing
- Efficiently manage interdisciplinary issues that arise in connection to 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
About
This course gives the detailed overview on how to approach Low Level Design problems with real-world case studies discussed such as Designing a Pen(Mac/Windows), TicTacToe, BookMyShow (most used event booking app, manages millions of users), Email campaign Management System and detailed design of Splitwise.
Teachers


Intended learning outcomes
- Critically assess the relevance of theories of software design processes for business applications in the realm of software engineering.
- Develop a specialised knowledge of Process Design Languages and flowchart methods for describing desired functions and behaviours.
- Acquire knowledge of various methods for specifying the logical and functional design of a system.
- Develop a critical understanding of software design and refinement processes.
- 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Creatively apply various visual and written methods for converting architectural/ high-level designs to component-oriented, low-level designs.
- Apply an in-depth domain-specific knowledge and understanding of the importance of refinement in software design processes.
- Autonomously gather material and organise it into a coherent presentation or essay.
- Demonstrate self-direction in research and originality in solutions developed for using Program Design Languages.
- Efficiently manage interdisciplinary issues that arise in connection to developing hierarchical input process output (HIPO) models.
- Create synthetic contextualised discussions of key issues related to specifying the internal logic of software.
- Act autonomously in identifying research problems and solutions related to refining software designs.
- Apply a professional and scholarly approach to research problems pertaining to logical and functional design of software components.
- Solve problems and be prepared to take leadership decisions related to developing code-ready low-level design documents.
About
This course provides students with hands-on experience on deploying high velocity applications and services reliably on complex and distributed infrastructure. DevOps as a philosophy is a key driver of the modern software life cycle which prefers rapid and reliable delivery of functionality and features via code. We start with a solid introduction to Linux scripting and networking. Then, we learn popular methodologies to deploy complex and distributed software like micro services, containerization (Docker) and orchestration (Kubernetes). All of this would be introduced with real world examples from the industry. We also focus on Continuous Integration and Continuous Delivery (CI/CD) methodology and how it can be achieved using popular toolchains like Jenkins. We dive into how automated testing of software can be achieved using libraries like Selenium. This shall be followed by more advanced techniques like serverless-compute, Platform as a service model and Cloud-DevOps. Students would learn to monitor and log key datapoints to ensure they maintain a healthy system and adapt it as needed. Infrastructure-as-code is a key component of modern DevOps especially on cloud and containerized applications which would also be covered with real-world examples
Teachers
Intended learning outcomes
- Develop a specialised knowledge of key strategies related to DevOps.
- Critically assess the relevance of theories for business applications in the domain of technology.
- Acquire knowledge of popular methodologies to deploy complex and distributed software like microservices, containerization (Docker) and orchestration (Kubernetes).
- Critically evaluate diverse scholarly views on DevOps.
- Develop a critical knowledge of DevOps.
- Apply an in-depth domain-specific knowledge and understanding to DevOps solutions.
- 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.
- Creatively apply DevOps tools to develop critical and original solutions for computational problems.
- Apply a professional and scholarly approach to research problems pertaining to DevOps.
- Create synthetic contextualised discussions of key issues related to DevOps.
- Efficiently manage interdisciplinary issues that arise in connection to DevOps.
- Demonstrate self-direction in research and originality in solutions developed for DevOps.
- Act autonomously in identifying research problems and solutions related to DevOps.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of DevOps.
About
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Teachers




Intended learning outcomes
- Critically assess the relevance of theories of creating use cases for business applications in the realm of software engineering.
- Acquire knowledge of various methods for conducting scripted analyses of moderately large-scale data sets.
- Critically evaluate diverse scholarly views on the graphical presentation of data.
- Develop a critical understanding of the Excel environment and its formulas and functions.
- Develop a specialised knowledge of common spreadsheet-based reporting tools such as charts and dashboards.
- Creatively apply various visual and written methods for developing meaningful visualisations of data sets.
- Apply an in-depth domain-specific knowledge and understanding of the importance of data analysis in business
- 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.
- Create synthetic contextualised discussions of key issues related to representing and storing data in spreadsheets.
- Apply a professional and scholarly approach to research problems pertaining to the appropriate use of functions and formulas in a spreadsheet.
- Demonstrate self-direction in research and originality in solutions developed for scripting data analysis and presenting it visually
- Efficiently manage interdisciplinary issues that arise in connection to organizing data.
- Act autonomously in identifying research problems and solutions related to the appropriate use of macros in analysing data in a spreadsheet.
- Solve problems and be prepared to take leadership decisions related to creating end-to-end business use case scenarios using a spreadsheet.
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 e-commerce, online learningand/or photo-sharing.
Teachers


Intended learning outcomes
- 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.
- Develop a specialised knowledge of key strategies related to Back End Development.
- Develop a critical knowledge of Back End Development.
- Critically evaluate diverse scholarly views on Back End Development.
- Apply an in-depth domain-specific knowledge and understanding to Back End Development applications.
- 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.
- Autonomously gather material and organise it into coherent problem sets or presentations.
- Create synthetic contextualised discussions of key issues related to Back End Development.
- Apply a professional and scholarly approach to research problems pertaining to 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.
- Demonstrate self-direction in research and originality in solutions developed for 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 focuses on modelling sequences (text, music, time-series, genes) using deep-learning models. We start with a simple Recurrent Neural Network and its limitations with long-sequences. Students learn LSTMs and GRUs which can handle significantly longer sequences to model sequence data like text, music, gene-sequences and time-series data. We study variations of LSTM like bi-directional LSTMs and encoder-decoder architectures. This is followed by a detailed study of attention mechanism and Transformer based models which are currently the state-of-the-art for NLP and sequence modelling. The module teaches encoder-decoder Transformers, BERT, BERT-variations, GPT-1,2 &3 models from both the architectural and mathematical viewpoints and also a practical viewpoint. Students learn to implement many of these complex models from scratch (using TensorFlow 2 and Keras) to gain a deeper understanding of how they work internally. Students will study popular applications of deep-learning in NLP like parts-of-speech tagging, question-answering systems, conversational engines (chatbots), Semantic search with low-latency etc. For each of these problems, Students will study cutting edge deep-learning models along with code implementations.
Teachers
Intended learning outcomes
- Acquire knowledge of popular applications of deep-learning in NLP like parts-of- speech tagging, question-answering systems, conversational engines (chatbots), etc
- 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 for NLP
- Critically evaluate diverse scholarly views on Deep Learning for NLP
- Develop a critical knowledge of Deep Learning for NLP
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to NLP solutions
- Creatively apply Deep Learning for NLP techniques to develop critical and original solutions for computational problems
- Autonomously gather material and organise it into coherent problem sets or presentation
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning for NLP
- Act autonomously in identifying research problems and solutions related to Deep Learning for NLP
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning for NLP
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning for NLP
- Create synthetic contextualised discussions of key issues related to Deep Learning for NLP
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning for NLP
About
This course is aimed at equipping students with skills to architect the high level design (a.k.a. system design) of software and data systems. We start with some of the good to have properties of large complex software systems like scalability, reliability, availability, consistency etc. The module teaches various patterns and design choices we have to satisfy each of these good to have properties. We then go on to understand key components of system design like load-balancers, micro-services, reverse-proxies, content-delivery networks etc. Students learn how each of them work internally along with real world implementations of each. We study various NoSQL data stores, their internal architectures and where to use which one with real-world examples. Students also learn popular data encoding schemes like XML and JSON. We learn how to build data pipelines using batch and stream processing systems. We also work on multiple real world cases on architecting on the cloud using popular open-source libraries and tools. Students will study design documents and high-level-design of popular internet applications and services like video conferencing, recommender-systems, peer-to-peer chat, voice-assistants etc.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on System Design
- Acquire knowledge of popular data encoding schemes like XML and JSON
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of System Design
- Develop a specialised knowledge of key strategies related to System Design
- Autonomously gather material and organise it into coherent problem sets or presentations
- Apply an in-depth domain-specific knowledge and understanding to System Design solutions
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Creatively apply system design components to develop critical and original solutions for computational problems
- Efficiently manage interdisciplinary issues that arise in connection to System Design
- Act autonomously in identifying research problems and solutions related to System Design
- Demonstrate self-direction in research and originality in solutions developed for System Design
- Solve problems and be prepared to take leadership decisions related to the methods and principles of System Design
- Create synthetic contextualised discussions of key issues related to System Design
- Apply a professional and scholarly approach to research problems pertaining to System 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
- Critically evaluate diverse scholarly views on Applied Statistics
- Critically assess the relevance of theories for business applications in the domain of technology
- Acquire knowledge of popular discrete and continuous distributions (like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, and log-normal)
- Develop a specialised58 knowledge of key strategies related to Applied Statistics
- Develop a critical knowledge 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
- 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
- Create synthetic contextualised discussions of key issues related to Applied Statistics
- Apply a professional and scholarly approach to research problems pertaining to probability theory to perform mathematically rigorous data analysis
- Efficiently manage interdisciplinary issues that arise in connection to Applied Statistics
- 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
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 deepMLPs can be successfully trained. The module teaches variants of Gradient Descent that have been specifically designed to work well for deep learning systems likeADAM, 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 2and Keras. Students also understand how TensorFlow 2 works internally with specific focus on computational graph processing.
Teachers
Intended learning outcomes
- Critically assess the relevance of theories for business applications in the domain of technology
- 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 specialised knowledge of key strategies related to Deep Learning
- Develop a critical knowledge of 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.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Autonomously gather material and organise it into coherent problem sets or presentation
- Apply a professional and scholarly approach to research problems pertaining to Deep Learning
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Deep Learning
- Act autonomously in identifying research problems and solutions related to Deep Learning
- Demonstrate self-direction in research and originality in solutions developed for Deep Learning
- Efficiently manage interdisciplinary issues that arise in connection to Deep Learning
- Create synthetic contextualized discussions of key issues related to Deep Learning
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 hyper spheres. 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 also learn how each of these techniques under various real world situations like the presence of outliers, imbalanced data, multi class classification etc. Students learn bias and variance trade-off and various techniques to avoid overfitting and underfitting. Students also study these algorithms from a Bayesian viewpoint along with geometric intuition. This module is hands-on and students apply all these classical techniques to real world problems.
Teachers
Intended learning outcomes
- Critically evaluate diverse scholarly views on machine learning
- Acquire knowledge of bias and variance trade-off, and various techniques to avoid overfitting and underfitting
- Critically assess the relevance of theories for business applications in the domain of technology
- Develop a critical knowledge of machine learning
- Develop a specialised knowledge of key strategies related to machine learning
- Autonomously gather material and organise it into coherent problem sets and presentation
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing
- Apply an in-depth domain-specific knowledge and understanding to machine learning solutions
- Creatively apply regression models to develop critical and original solutions for computational issues
- 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
- Apply a professional and scholarly approach to research problems pertaining to machine learning
- Solve problems and be prepared to take leadership decisions related to the methods and principles of machine learning
- Efficiently manage interdisciplinary issues that arise in connection to machine learning
- Create synthetic contextualised discussions of key issues related to 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.
- 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.
- Critically evaluate diverse scholarly views on Numerical programming in Python.
- Develop a specialised52 knowledge of key strategies related to Numerical programming in Python.
- Apply an in-depth domain-specific knowledge and understanding to numerical programming in Python.
- Autonomously gather material and organize it into a coherent problem sets or presentation.
- Employ the standard modern conventions for the presentation of scholarly work and scholarly referencing.
- Create new solutions that are critical to solving computational problems through creatively applying code writing.
- Act autonomously in identifying research problems and solutions related to Numerical programming in Python.
- Create synthetic contextualised52 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.
- Efficiently manage interdisciplinary issues that arise in connection to Numerical programming in Python.
- Demonstrate self-direction in research and originality in solutions developed for Numerical programming in Python.
- Solve problems and be prepared to take leadership decisions related to the methods and principles of Numerical programming in Python.
Entry Requirements
Application Process
Submit initial Application
Complete the online application form with your personal information
Documentation Review
Submit required transcripts, certificates, and supporting documents
Assessment
Your application will be evaluated against program requirements
Interview
Selected candidates may be invited for an interview
Decision
Receive an admission decision
Enrollment
Complete registration and prepare to begin your studies
.avif)