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/Blended Learning
Structure of the programme - Please note that this structure may be subject to change based on faculty expertise and evolving academic best practices. This flexibility ensures we can provide the most up-to-date and effective learning experience for our students.The Master of Science in Computer Science combines asynchronous components (lecture videos, readings, and assignments) and synchronous meetings attended by students and a teacher during a video call. Asynchronous components support the schedule of students from diverse work-life situations, and synchronous meetings provide accountability and motivation for students. Students have direct access to their teacher and their peers at all times through the use of direct message and group chat; teachers are also able to initiate voice and video calls with students outside the regularly scheduled synchronous sessions. Modules are offered continuously on a publicly advertised schedule consisting of cohort sequences designed to accommodate adult students at different paces. Although there are few formal prerequisites identified throughout the programme, enrollment in courses depends on advisement from Woolf faculty and staff.The degree has 3 tiers: The first tier is required for all students, who must take 15 ECTS. In the second tier, students must select 45 ECTS from elective tiers. Under the guidance of the Academic Staff at Woolf, students may either select exclusively from one specialization track (in which case they will earn that specialization), or they may mix tracks (in which case they will finish without a specialization). Tier Three may be completed in two different ways: a) by completing a 30ECTS Advanced Applied Computer Science capstone project, or b) by completing a 10 ECTS Applied Computer Science project and 20 ECTS of electives from the program.
Grading System
Scale: 0-100 points
Components: 60% of the mark derives from the average of the assignments, and 40% of the mark derives from the cumulative examination
Passing requirement: minimum of 60% overall
Dates of Next Intake
Rolling admission
Pass rates
2023 pass rates will be publicised in the next cycle, contingent upon ensuring sufficient student data for anonymization.
Identity Malta’s VISA requirement for third country nationals: https://www.identitymalta.com/unit/central-visa-unit/
Passing requirement: minimum of 60% overall
Dates of Next Intake
Rolling admission
Pass rates
2023 pass rates will be publicised in the next cycle, contingent upon ensuring sufficient student data for anonymization. Identity Malta’s VISA requirement for third country nationals: https://www.identitymalta.com/unit/central-visa-unit/
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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for storing data in a computer program
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to solving problems with 2D lists
Propose appropriate solutions to complex and changing problems of data storage, programming functions, and algorithms
Mathematics and computer science are closely related fields. Problems in computer science are often formalized and solved with mathematical methods. It is likely that many important problems currently facing computer scientists will be solved by researchers skilled in algebra, analysis, combinatorics, logic and/or probability theory, as well as computer science.
This course covers discrete mathematics for computer science and engineering. Topics may include asymptotic notation and growth of functions; permutations and combinations; counting principles; discrete probability. Further selected topics may also be covered, such as recursive definition and structural induction; state machines and invariants; recurrences; generating functions.
Students will be able to explain and apply the basic methods of discrete (noncontinuous) mathematics in computer science. They will be able to use these methods in subsequent courses in the design and analysis of algorithms, computability theory, software engineering, and computer systems. The focus of the course is real-world problems and applications often found in business and industry.
Besides, students will learn 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).
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for evaluating algorithmic cost arising in the context of computational problem-solving and handling matters arising in the context of structured data
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle evaluating algorithmic performance and solving problems with structured data
Propose appropriate solutions to complex and changing problems pertaining to problem-solving in software development
This is a core and foundational course which aims to equip the student with the ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create, modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the open source MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Relational Databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Relational Databases
Propose appropriate solutions to complex and changing problems pertaining to Relational Databases
This course is aimed to build a strong foundational knowledge of data structures (DS) used extensively in computing. The module starts with introducing time and space complexity notations and estimation for code snippets. This helps students be able to make trade-offs between various Data Structures while solving real world computational problems. The module introduces most widely used basic data structures like Dynamic arrays, multi-dimensional arrays, Lists, Strings, Hash Tables, Binary Trees, Balanced Binary Trees, Priority Queues and Graphs. The module discusses multiple implementation variations for each of the above data-structures along with trade-offs in space and time for each implementation. In this course, students implement these data-structures from scratch to gain a solid understanding of their inner workings. Students are also introduced to how to use the built-in data-structures available in various programming languages/libraries like Python/NumPy/C++ STL/Java/JavaScript. Students solve real-world problems where they must use an optimal DS to solve a computational problem at hand.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Data structures
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should implement Data structures
Propose appropriate solutions to complex and changing problems pertaining to different approach to Data structures applications
This web design course is designed to provide students with the skills and knowledge necessary to create attractive, functional, and effective websites, including landing pages and company websites. The course covers a range of topics, including the fundamentals of web design such as finding references, researching competitors, basic research, wireframing, prototyping, grids, composition, typography, color, raster and vector graphics, user interface patterns, and adaptation.
Students will learn the basic laws of UX and the main user behavior patterns on the website. Students will be introduced to tools such as Figma, FigJam, Protopie, which will be used to create wireframes, layouts, and prototypes. The course will also include preparation of a case for publication on Behance, which will provide an opportunity to demonstrate skills to employers.
Key Intended Learning Outcomes:
Demonstrate proficiency in using Figma to create wireframes, prototypes, and high-fidelity designs.
Analyze and evaluate different web design principles, including wireframing, prototyping, composition, typography, color, and graphics, to create functional and visually attractive websites.
Apply critical thinking and problem-solving skills to analyze and address web design-related issues and effectively communicate solutions to clients and stakeholders.
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5 and CSS. Throughout the course students will learn how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details of HTML5 to build webpages. We would start with simple web pages and then graduate to more complex layouts and features in HTML. We then go on to learn stylesheets based on CSS 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 CSS. 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 appropriate toolkits. We would also study semantic markup, which is an important component of web application development in terms of accessibility and SEO. Students will learn about different types of HTML tags used to describe the structure and content of web pages, allowing browsers and other interpreters to correctly interpret content and improve its readability for people and search engines.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Front end UI/UX development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Front end UI/UX development
Propose appropriate solutions to complex and changing problems pertaining to Front end UI/UX development
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 Fetch 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 ElectronJS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of JavaScript
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle JavaScript
Propose appropriate solutions to complex and changing problems pertaining to JavaScript
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
Every organization is building products to solve the pain points of its customers. Product managers are a critical part of an organization, who make sure that evolving customer needs, and market trends are observed and converted into delightful solutions which help businesses get its outcomes.
In this course, students will get a fundamental understanding of product management practices.
This will give them a comprehensive view of the complete product management life cycle.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for improving a product after launch
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to measuring user engagement
Propose appropriate solutions to complex and changing problems of product success or failure in real-world engineering and science contexts
This advanced JavaScript course builds on the foundational concepts covered in the JavaScript course, with a focus on more advanced concepts and best practices for building modern, performant web applications. Through hands-on practice and real-world examples, students will learn how to optimize JavaScript code for mobile and desktop devices, work with the DOM and Web APIs, and interact with backend APIs.
The course will begin with an overview of event propagation and optimization techniques, including event bubbling, delegation, and throttling. Students will also learn about lazy loading images, using libraries via CDN, and other performance optimization techniques. Next, the course will cover project infrastructure and web storage, including working with Node.js, npm package management, code modularity, and syntax for ECMAScript modules. Students will learn about Webpack, Babel, and other tools for transpiling and bundling code, as well as code formatting and checking best practices.
The course will also cover asynchrony and date handling in JavaScript, with a focus on the Promise API, async/await syntax, and event loop. Students will learn how to interact with backend APIs, including working with REST APIs, HTTP methods, headers, and response status codes. They will also learn about pagination techniques, including "load more" buttons and infinite scrolling. Finally, the course will cover CRUD operations with asynchronous functions, including working with private APIs and error handling best practices.
Key Intended Learning Outcomes:
Analyze and optimize JavaScript code for mobile and desktop devices, using best practices for performance optimization
Create modular, reusable code using ECMAScript modules and other tools for transpiling and bundling code
Interact with backend APIs using REST APIs, HTTP methods, and pagination techniques
Develop asynchronous functions and handle errors effectively for CRUD operations
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on one of the most popular and advanced frameworks/libraries in use – React.js. 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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of front end development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle front end development applications
Propose appropriate solutions to complex and changing problems pertaining to front end development
This is a core and foundational course which aims to equip the student with the ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create, modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the open source MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Relational Databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Relational Databases
Propose appropriate solutions to complex and changing problems pertaining to Relational Databases
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The module teaches various aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Back End Development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Back Eend Development
Propose appropriate solutions to complex and changing problems pertaining to Back End Development
This course is designed to provide a comprehensive understanding of Quality Assurance (QA) in software development. The course will cover the fundamental principles of testing and the different types of testing that are conducted at various levels of the software development life cycle. Students will also learn about the different testing techniques used in QA, such as black box, white box, and experience-based testing.
The course will also introduce students to various testing tools and methodologies that are commonly used in industry, including test management tools, SQL databases, Postman, and mobile testing. Students will learn about web technologies and the client-server architecture, as well as front-end and back-end development. The course will cover the basics of HTML/CSS, modern application architecture, and working with command-line tools like CI/CD and Git.
Throughout the course, students will develop a solid understanding of QA and its role in software development. They will learn how to develop test documentation and will gain practical experience in implementing various testing strategies. They will also learn how to analyze and critique different QA methodologies and propose appropriate solutions to complex and changing problems in the context of data structures. Students will be able to apply their understanding of web technologies and modern application architecture to design and test web applications, and will be well-equipped to pursue careers in software development or QA.
User Experience and User Interface (UX/UI) design is about understanding user needs and preferences, and creating digital products that meet those needs. Throughout this course, students will learn the fundamental skills and tools necessary to develop an effective user interface and experience.
Students will learn about the design thinking process, user personas and flows, customer journey mapping, and data visualization. They will also learn about the importance of collaboration between designers and developers, as well as how to test and iterate design.
The course covers essential topics such as Figma Pro, design system creation, mobile-first design, smart animation, and microcopy. Students will learn the process of designing from ideation to prototype creation, testing, and improvement, and understand how to work through iterations. The course includes an understanding of UX testing and its types, and working with analytics.
By the end of the course, students will have a clear understanding of how to create digital products that are aesthetically appealing and convenient for the user.
Mobile app design is a rapidly developing field that requires a deep understanding of user needs, technology, and UX design principles. This course aims to provide students with an in-depth understanding of various aspects involved in designing and developing cross-platform mobile applications using React Native. The course covers a wide range of topics, including React Native architecture, UI components, navigation, data management, user engagement, animation, and app store optimization.
Students will learn about the unique features of mobile app design, types of apps and technologies used in this field. The course emphasizes the importance of cross-platform compatibility, ensuring that the mobile apps created can run seamlessly on both iOS and Android platforms. The course will also cover familiarity with key design patterns for mobile apps, user engagement, animation, and preparing the app for publication.
Throughout the course, students will have the opportunity to work on real-world projects and assignments, allowing them to apply their learning to practical situations. They will learn how to analyze and evaluate different types of mobile apps and technologies used in mobile app design, as well as how to apply design principles and design patterns to create mobile app interfaces that are user-friendly and engaging.
In addition, the course covers important topics such as app store submission process and optimizing app performance, enabling students to prepare their mobile apps for publication.
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
This core course equips the student with knowledge of database management systems, operating systems and computer networks. At the end of the course, students will have a critical understanding of the architecture of computers and networks, as well as how programs interact with these. Students begin with mapping data storage problems to understand how data is stored in a distributed network, and related issues such as concurrency. Subsequently, students cover operating systems with an overview of process scheduling, process synchronization and memory management techniques with disk scheduling. The module concludes with computer networks, where we will be discussing all of the computer network layers and their protocols in detail.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for evaluating the design and use of relational databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle process prioritization in an operating system
Propose appropriate solutions to complex and changing problems pertaining to problem-solving in software development for specific operating systems and network environments
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 valuabe for all students specializing in mathematical sub-areas of CS like ML, Data Science, Scientific Computing etc.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of numerical programming in Python
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle numerical programming in Python
Propose appropriate solutions to complex and changing problems pertaining to numerical programming in Python
This course focuses on building basic classification and regression models and understanding these models rigorously both with a mathematical and an applicative focus. The module starts with a basic introduction to high dimensional geometry of points, distance-metrics, hyperplanes and hyperspheres. We build on top this to introduce the mathematical formulation of logistic regression to find a separating hyperplane. Students learn to solve the optimization problem using vector calculus and gradient descent (GD) based algorithms. The module introduces computational variations of GD like mini-batch and stochastic gradient descent. Students also learn other popular classification and regression methods like k-Nearest Neighbours, Naive 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.
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.
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.
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 Fetch 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 ElectronJS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of JavaScript
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle JavaScript
Propose appropriate solutions to complex and changing problems pertaining to JavaScript
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.
This is a course that focuses both on architectural design and practical hands-on learning of the most used cloud services. The module extensively uses Amazon Web services (AWS) to show real world code examples of various cloud services. It also covers the core concepts and architectures in a platform agnostic manner so that students can easily translate these learnings to other cloud platforms (like Azure, GCP etc.). The module starts with virtualization and how virtualized compute instances are created and configured. Students also learn how to auto-scale applications using load balancers and build fault tolerant applications across a geographically distributed cloud. As relational databases are widely used in most enterprises, students learn how to migrate and scale (both vertically and horizontally) these databases on the cloud while ensuring enterprise grade security. Virtual private clouds enable us to create a logically isolated virtual network of compute resources. Students learn to set up a VPC using virtualized-compute-servers on AWS. The course also covers the basics of networking while setting up a VPC. Students learn of the architecture and practical aspects of distributed object storage and how it enables low latency and high availability data storage on the cloud.
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 microservices, 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 data points 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.
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.
This course aims to build the core competency of building real world end-to-end ML systems and deploy them into production for a variety of problems and scenarios. Students would learn a variety of ML systems ranging from high throughput and low latency internet scale systems to low compute power and energy constrained IoT devices like smart watches. Students will study the ML lifecycle and various components in detail. We also use real world ML platforms like Google’s KubeFlow, TensorFlow Lite, and Amazon’s SageMaker to implement real world systems and understand the engineering trade-offs and challenges. Students also learn relevant technologies and tools like Containerization (Docker) and Container Orchestration (Kubernetes) and Git which are often used extensively in real world scalable ML systems. This course is a hands-on course where we solve multiple real world cases and discuss solutions built by various companies and organizations to provide the students a comprehensive understanding of varied systems and design choices.
This course is designed to equip IT professionals with the soft skills and career strategies required for success in the technology industry. The course is project-based and covers a range of topics such as communication skills, teamwork, time management, leadership, networking, and career development.
The course covers the entire lifecycle of a technology project, from requirement gathering to delivery and maintenance. Students will learn how to communicate effectively with stakeholders, manage their time efficiently, lead a team, and collaborate effectively in a team environment.
The course also covers aspects of career development, such as networking and building professional relationships, creating a personal brand, and developing a career plan. Students will learn how to identify their strengths and weaknesses, and how to leverage their skills and experience to advance their careers in the technology industry.
Key Intended Learning Outcomes:
Develop and demonstrate effective communication skills.
Collaborate effectively in a team environment.
Develop and demonstrate leadership skills.
Build and maintain professional relationships.
Develop and execute a career plan.
The Foundations of Cyber Security course is designed to provide students, both technical and non-technical, with a comprehensive introduction to the field of cybersecurity. In an increasingly digital world, the importance of securing data, systems, and networks is paramount. This course equips students with the knowledge and skills to protect their own information and recognize the importance of cybersecurity in professional settings. Cybersecurity is presented not as an absolute concept, but as a dynamic field with ever-evolving threats and countermeasures, where decisions involve trade-offs between security and usability. Real-world case studies and examples are used to illustrate the practical applications of cybersecurity principles.
Initially, the course will cover the basics of cryptography, principles of access control, identity management, and assurance strategies as theyof apply to IT applications and Cloud infrastructure services. The course will then explore the utilization of cryptographic algorithms, mechanisms, and technologies for securing data during transmission, storage, and usage. It will also address key management operations, the implementation of Private Blockchain infrastructures, integration of Public-Key Infrastructures (PKI) and Certificate Authorities (CA), identity verification with digital signatures, hardware-assisted keystore/root of trust deployment, directory services creation, single sign-on authentication setup, access control policy enforcement for IT resources, cryptographic solutions for IoT hardware, audit trail monitoring and recording, and compliance with industry and regulatory requirements.
Furthermore, the course will discuss practical cryptography and identity management techniques, and how to implement Zero-Trust Architectures (ZTA) in Cloud and IoT infrastructures using standard services and protocols such as TLS, IPSec/IKE, PKCS#11, LDAP, OCSP, SAML, OAuth2, OpenID Connect (OIDC). It will also emphasize adhering to data protection and identity management guidelines outlined by NIST, ENISA, and the Cloud Security Alliance (CSA).
This course provides a ground-up coverage of the high-level concepts, applied mechanisms, architecture, design, and real-world implementation practices of using cryptography and identity management solutions as they apply to cloud-hosted applications, services, and IoT devices.
In the ever-evolving landscape of cybersecurity, managing risks and ensuring organizational resilience is of paramount importance. The "Cyber Risk and Resilience Management" course is designed to equip students with the skills and knowledge necessary for effective security and risk management in the field of information security. This course delves into the core principles and concepts of security and risk management, ensuring that students are well-prepared to address contemporary cyber threats and challenges.
The course begins with an introduction to the fundamental principles and concepts of security and risk management. It emphasizes the significance of professional ethics and codes of conduct in the field of information security. Students will explore key security concepts, including confidentiality, integrity, availability, authenticity, and non-repudiation, and learn how to apply these concepts to various scenarios and contexts.
As the course progresses, students will delve into topics such as aligning security functions with business strategy, roles and responsibilities within organizations, security management frameworks, and the importance of due care and diligence. Additionally, students will gain insights into compliance requirements, contractual, legal, industry standards, and regulatory requirements, with a particular focus on data confidentiality and protection.
This course will also cover legal and regulatory issues in cybersecurity, including cybercrimes, data breaches, licensing, intellectual property requirements, cross-border data transfer, and privacy considerations. Students will explore various types of investigations, including administrative, criminal, civil, regulatory, and industry-specific investigations.
Throughout the course, students will learn how to develop, document, and implement security policies, standards, procedures, and guidelines. They will gain an understanding of business continuity requirements, including Business Impact Analysis (BIA), and learn to develop and document business continuity plans.
Moreover, the course will provide students with the knowledge and skills to identify threats and vulnerabilities, assess and analyze risks, and respond effectively to mitigate risks. It also covers the concept of risk management by supply chain, focusing on risks associated with hardware, software, and services.
Additionally, students will explore the creation and maintenance of security awareness, education, and training programs, including methods for program delivery, content analysis, and program effectiveness assessment.
By the end of this course, students will have a solid foundation in cybersecurity risk management and resilience, enabling them to make informed decisions and implement best practices to protect organizations from cyber threats and ensure business continuity.
This course is designed to provide students with a comprehensive understanding of asset management principles and data security strategies, preparing them to effectively identify, classify, and manage critical assets and sensitive information within the cybersecurity landscape.
The course commences with an exploration of the foundational aspects of asset management. Students will gain insight into the pivotal role of assets in the realm of cybersecurity, as they form the building blocks upon which robust security strategies are constructed. Understanding the lifecycle of assets, whether tangible or intangible, becomes a key focus, emphasizing the need for meticulous control and responsible ownership. Simultaneously, the course delves into the realm of data security.
The significance of safeguarding data cannot be overstated, as data is often an organization's most valuable asset. Students will grasp the core principles of data security, equipping them with the knowledge required to ensure the confidentiality, integrity, and availability of data. Emphasis will be placed on mitigating risks and protecting data from breaches, ensuring compliance with industry standards and regulations.
As the course progresses, students will delve into the identification and classification of information and assets. They will learn the intricacies of data classification, including the methods for labeling and categorizing data based on its sensitivity.
Additionally, they will explore techniques for the identification of assets, a crucial aspect of effective asset management, ensuring that organizations are fully aware of their resource landscape. Furthermore, the course covers the establishment of requirements for managing assets and information. Students will learn how to define the specific needs and prerequisites for asset management, which are essential for developing effective policies and procedures. These policies and procedures are the cornerstone of organized asset management and data security.
A critical aspect of the course is the exploration of data lifecycle management. Students will gain an understanding of the roles and responsibilities of data stakeholders, including owners, controllers, keepers, processors, and users. They will also be exposed to the full lifecycle of data, including its collection, storage, maintenance, retention, and secure disposal, ensuring that data is adequately protected throughout its existence.
By the end of the course, students will be well-equipped to tackle the challenges of asset management and data security in the complex landscape of modern cybersecurity. They will have the knowledge and practical skills needed to identify, classify, and manage assets and information effectively, ultimately contributing to the enhancement of an organization's security posture.
The course equips students with a deep understanding of network security and communication protocols. This course goes beyond the surface and provides practical skills for assessing and implementing secure network architecture designs. It's designed to instill essential knowledge and skills required to navigate the intricacies of network security and communication protocols, making it a critical component of contemporary cybersecurity education.
The course begins by establishing the fundamentals of secure network design. Students will explore the OSI and TCP/IP models, delving into the principles and architecture of TCP/IP and examining the pivotal role of security at different layers of these models.
Moreover, students will be introduced to secure network protocols, focusing on the principles and practical implementation of secure protocols, including IPSec, IPv4, and IPv6. As the course progresses, students will delve into the security intricacies embedded within multilayered protocols. They'll learn about the importance of multilayered protocols and gain the knowledge needed to address challenges presented by these protocols. The course also covers micro-segmentation in networks, including virtual and software-defined networks (SDN) and VXLAN, demonstrating how segmentation enhances security.
Additionally, students will explore the security aspects of wireless and mobile networks, such as Wi-Fi, Li-Fi, Zigbee, and satellite networks, along with the security of cellular networks (4G and 5G). The role of security in content distribution networks (CDN) will also be emphasized. Furthermore, the course delves into the realm of secure network components. Students will discover how to safeguard network hardware components, including power redundancy and warranties. Network access control (NAC) tools are introduced, providing insights into their implementation and their role in network access security. Endpoint security measures will be explored to protect devices and software, ensuring a secure connection to the network.
The course concludes by addressing the implementation of secure communication channels. It covers secure voice communication and multimedia interaction, focusing on the security of voice communication and secure multimedia communication principles and methods. Remote access and data transmission security are also explored, including the protection of remote network access and secure data transmission. Virtualized networks and security in virtualized networks and cloud environments are discussed, along with securing network connections with external parties and domains.
By the end of this course, students will possess a comprehensive understanding of network security and communication protocols, along with the practical skills needed to assess and implement secure network designs across various domains.
The course is designed to provide students with a profound understanding of identity and access management (IAM) and its vital role in safeguarding information systems. It also equips students with practical skills for managing both physical and logical access to critical assets. IAM is an essential component of modern organizations' security and access management strategies, and this course empowers students with the knowledge and abilities needed to excel in this domain.
The course begins by exploring the management of physical and logical access to assets. Students will delve into the fundamental concepts of access control, its significance, and the differentiation between physical and logical access control mechanisms.
As the course progresses, students will acquire in-depth knowledge of identity and authentication management. This encompasses the implementation of identity management (IdM) systems, multi-factor authentication (MFA), and session management. They will also understand the processes of registration and identity establishment, including user registration and identity verification. The course further delves into federated identity management, addressing its implementation in cloud, on-premises, and hybrid environments.
Additionally, students will learn about identity data management, emphasizing systems for managing identity data and the principles of identity data management. The management of single sign-on (SSO) and just-in-time (JIT) authentication will be covered as well. The course goes on to elucidate the mechanisms of authorization management. This includes the implementation of access control models, such as Role-Based Access Control (RBAC), Rule-Based Access Control, Mandatory Access Control (MAC), and others. Furthermore, students will gain insights into risk-oriented access control implementation.
Finally, the course delves into the identity and access lifecycle management. This involves access review processes, the analysis of access to accounts (user, system, and service), the provisioning and
de-provisioning of access rights, role definition, and the minimization of privilege escalation.
In conclusion, students will learn about authentication systems, including OpenID Connect (OIDC)/Open Authorization (OAuth), Security Assertion Markup Language (SAML), Kerberos, RADIUS/TACACS+, and their practical implementation. These authentication systems play a crucial role in establishing secure access control in modern information systems.
The course is designed to equip students with the knowledge and practical skills required to assess, test, and audit security measures in information systems. It provides a comprehensive understanding of the strategies and methodologies employed to evaluate the security of systems, identify vulnerabilities, and recommend security improvements. In an ever-evolving threat landscape, the ability to conduct effective security assessments and tests is vital in ensuring the confidentiality, integrity, and availability of critical data and systems.
The course begins with knowledge and skills, where students learn to design and validate assessment, testing, and audit strategies. This part of the course covers the development of strategies for internal, external, and third-party assessments, emphasizing planning and strategy validation.
The next part of the course focuses on conducting security control testing. It delves into vulnerability assessment methods, tools, and vulnerability analysis with recommendations for mitigation. Students also acquire the knowledge and skills to prepare for and execute penetration tests, analyze results, and formulate recommendations. Additionally, this part covers event log review for anomaly detection and synthetic transaction creation and analysis.
It also discusses code review and vulnerability testing, along with secure development practices. This part of studies concludes with the examination of abuse case testing, testing coverage assessment, and security interface and integration point evaluations. Students will also learn the collection of data on security processes, including account management, key performance indicators, and risks. Students learn how to gather and analyze data to assess security processes effectively.
In the next part of the course, students become adept at analyzing test results and creating reports. They learn to analyze test findings and recommendations, compile detailed test and assessment reports, handle exceptions and incidents, and adhere to ethical vulnerability disclosure principles.
The course culminates in exploring the execution and organization of security audits. Students learn to prepare for and conduct internal and external security audits, as well as audits of third-party providers.
By the end of the course, students will possess the knowledge and skills to assess, test, and audit the security of information systems effectively.
The course is designed to provide students with a comprehensive understanding of fundamental security operations and effective incident management in information systems. It aims to develop skills in applying proactive and reactive security measures to ensure information system security.
The course encompasses a range of modules, starting with understanding and compliance investigations, covering the collection and processing of digital evidence, and exploring methods and tactics in digital forensics, including artifact examination.
Students dive into logging and activity monitoring, addressing intrusion detection and prevention systems, Security Information and Event Management (SIEM), constant log monitoring, data leak monitoring, and user and entity behavior analytics (UEBA).
The course also focuses on configuration management, emphasizing automation processes for configuration management, including baselining and provisioning.
Later in the course students study fundamental security operations concepts, such as the principle of least privilege, role separation, privileged account management, task rotation, and Service Level Agreement (SLA) management.
Students also delve into resource protection, covering media management and data protection methods. The course addresses incident management, including detection, response, mitigation, reporting, and recovery from incidents.
Moreover, the course encompasses a broad range of proactive and reactive measures, including firewall usage, intrusion detection and prevention systems, vulnerability and patch management, change management processes, disaster recovery planning, recovery strategy implementation, recovery plan testing, business continuity exercise planning, physical security, and personnel security practices.
By the end of the course, students will have gained the knowledge and skills to effectively manage security operations, respond to incidents, and proactively safeguard information systems.
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5 and CSS. Throughout the course students will learn how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details of HTML5 to build webpages. We would start with simple web pages and then graduate to more complex layouts and features in HTML. We then go on to learn stylesheets based on CSS 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 CSS. 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 appropriate toolkits. We would also study semantic markup, which is an important component of web application development in terms of accessibility and SEO. Students will learn about different types of HTML tags used to describe the structure and content of web pages, allowing browsers and other interpreters to correctly interpret content and improve its readability for people and search engines.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Front end UI/UX development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Front end UI/UX development
Propose appropriate solutions to complex and changing problems pertaining to Front end UI/UX development
This course provides a practical understanding of popular object-oriented design patterns so that students can reuse design strategies developed for commonly occurring problems in software development. We begin the course with a revision of object-oriented programming and an overview of UML (unified modelling language) diagrams to represent software design diagrammatically. We then dive into 10-12 most popular design patterns motivating each of them from real world scenarios. We would also showcase multiple opensource code bases which use the specific design pattern to solve a real-world design problem. This would help students gain an appreciation of how each of the theoretical patterns they learn actually translate to code. We also take up real world cases and dive into various design patterns that can be used to solve the problem. Sometimes, there could be multiple valid designs. We would five into the pros and cons of each design decision and trade-offs involved. Our objective is to build the problem-solving ability amongst students to recognize the appropriate design pattern to tackle a real-world problem. The module briefly discusses domain specific design patterns in their respective contexts.
Human-computer interaction (HCI) is a field of study concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. This course surveys the scope of issues and foundations of the HCI field: cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods and techniques, and evaluation. This course will focus on the users and their tasks.
This course presents: first, an overview and introduction to the field of human-computer interaction and usability; second, an introduction to the methods to elicit user requirements and structure the design process to be user centred; and third, the course will emphasize the importance of paying attention to user needs and cognitive functioning in order to design usable systems. The course will also introduce visual design, heuristics, interaction methods and devices and specific interaction paradigms. This course provides practical knowledge of how to use well-known and established HCI design methods as well as theoretical knowledge of how to think and reason about them during the design process. In this course we will approach interaction design from the perspective of user-centered design. Interaction design techniques will be presented to explore and refine the behavior of products and services.
Key Intended Learning Outcomes:
Gain a thorough understanding of the fundamental aspects of Human-Computer Interaction (HCI), including cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods, and evaluation.
Acquire the capability to apply HCI principles in the design, evaluation, and implementation of interactive computing systems, emphasizing a user-centered approach that considers cognitive aspects and various interaction styles.
Propose appropriate solutions to prioritize users and their tasks, fostering a user-centric design approach essential for creating effective and user-friendly interactive systems in diverse computing environments.
Thе course offers an extensive exploration of graphic design principles. Students will delve into the application of graphic design in the context of designing interactive and user-centric interfaces. The course integrates both theoretical concepts and practical skills, emphasizing the creation of visually compelling and effective designs for enhanced user experiences.
Participants will acquire a comprehensive understanding of fundamental graphic design principles, including composition, lighting, texture, and spatial awareness, with a focus on their application in the context of Human-Computer Interaction. Through project-based learning, students will have the opportunity to work on practical design projects that simulate real-world scenarios, honing their graphic design skills for HCI. This approach ensures the direct application of learned concepts and techniques.
The course will emphasize the integration of graphic design into the broader context of usability and user-centric design. Students will learn how to align visual aesthetics with user needs, creating interfaces that are both visually appealing and functionally effective.
Students will develop the ability to effectively present and communicate their designs, understanding the importance of conveying design concepts to stakeholders and collaborators within the context of Human-Computer Interaction and Design.
By the conclusion of this course, students will have not only mastered the principles of graphic design but will also possess the expertise to seamlessly integrate these elements into user-centric interfaces, aligning with the principles of Human-Computer Interaction and Design.
Key Intended Learning Outcomes:
Achieve proficiency in fundamental graphic design principles, mastering composition, lighting, texture, and spatial awareness.
Learn to apply graphic design techniques specifically within the context of Human-Computer Interaction, enhancing user engagement and interface usability.
Develop the skills to present and communicate their designs effectively, ensuring clear understanding and alignment with user-centric design principles.
This course is tailored to provide a comprehensive exploration of UX Research Methods and Usability Testing. Throughout the program, participants will engage in a structured examination of diverse research methodologies applicable to the HCI field.
The curriculum commences with an in-depth overview of the research process, emphasizing literature review techniques essential for informed exploration within the domain of human-computer interaction and design. Students will acquire a theoretical foundation and practical proficiency in qualitative, survey, and experimental research methods.
A significant portion of the course is dedicated to a project-based approach, focusing on the formal evaluation of products. This involves a meticulous examination of usability testing, encompassing goal setting, user recruitment, task and environment design, and the comprehensive development and implementation of test plans. Prerequisites for this course include a foundational understanding of human-computer interaction principles, with an additional emphasis on fostering familiarity with research methodologies.
By the course's conclusion, students will not only possess theoretical insights into the research process but will also have acquired practical skills in conducting usability testing. This includes the ability to analyze, interpret, document, and present usability test results, culminating in the formulation of meaningful recommendations for user-centered design within the HCID landscape.
Key Intended Learning Outcomes:
Develop proficiency in various research methods applicable to Human-Computer Interaction (HCI), including qualitative, survey, and experimental research, gaining an understanding of the research process and literature review.
Gain practical experience in studying existing research, designing, and conducting HCI studies, with a focus on usability testing. This includes goal setting, user recruitment, task and environment design, test plan development, implementation, and result analysis.
Effectively conduct formal evaluations of products, covering crucial aspects such as goal setting, user recruitment, task and environment design, test plan development, result analysis, and the documentation and presentation of findings and recommendations in the context of HCID.
This course explores the interdisciplinary field of Physical User Interface (PUI) design within the context of Human-Computer Interaction and Design. PUIs involve the interaction between users and digital systems through tangible, physical objects, presenting new challenges and opportunities for designers. As intelligent production environments evolve, the course addresses the question of whether existing design methods and tools are adequate or if more sophisticated approaches are required.
The curriculum initiates with a discussion on the necessity for advanced physical user interfaces with enhanced capabilities, establishing functional and non-functional requirements for an efficient design method.
The course introduces a model-based design approach, incorporating a comprehensive context model and modeling tools tailored for intelligent production environments. Through case studies and practical applications, students gain insights into the feasibility and effectiveness of the proposed design method. The course concludes with a critical examination of key characteristics, identifying areas for potential future improvements.
Key Intended Learning Outcomes:
Achieve proficiency in foundational principles of PUI design, encompassing tangible interaction, usability, and integration with intelligent production environments.
Apply design techniques specific to Physical User Interfaces within the broader context of Human-Computer Interaction, aiming to enhance user engagement and optimize interface usability.
Develop skills to present and articulate PUI designs effectively, ensuring clear understanding and alignment with user-centric design principles.
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.
A business case study is a course designed for the learner to identify a business real world problem and its objective is to help students rigorously solve a real-world, technically-challenging business problem where they would apply all of the concepts, techniques and tools learnt in the program. Students typically pick a problem from a known business problem or identify business cases where data analytics can be used to solve a problem. The choosing of a topic can be done after discussing it with the course instructor(s). Students also have an option of choosing a business problem in their professional organization but the external supervisors should be approved by the instructor(s). Students start by identifying a business problem and proposing a methodology to solve the said business problem. Students then decide what technical and business tools will be used for the solution methodology. Students will first work on the real-world data, clean and process it using techniques learnt in this program. Students then will use algorithms and approach with a coding language and tool they think will get the best results. At the end of the case study student should be able to present the business problem and solution either via Jupyter notebooks or via a blog.
This course provides a comprehensive overview of Computer vision problems and how they can be tackled using various Convolutional Neural networks (CNNs). Students start with classical image processing operations like edge detection, convolution, shape detectors and colour space conversions. This is followed by a foundational understanding of Deep-Convolutional Neural networks and how their training and evaluation works. We introduce various CNN specific layers like pooling-layers and upsampling layers. We also introduce various Data Augmentation techniques that are very helpful for image-related problems. This is followed by a dive deep into the internals of popular CNN architectures like: AlexNet, VGGNet, ResNet etc. Students also learn how to use these methods practically for transfer learning. Students will study how various computer-vision related tasks like image segmentation, image-generation, object detection and localization, contrastive learning etc., can be performed using state of the art algorithms for each of these tasks. Most of these techniques would be studied directly from the original research papers and open-source code provided by the authors. Students would also implement some of these algorithms from scratch in this course.
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 an SQL 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 a version control system, setting up continuous integration and deployment pipelines and bug trackers.
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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for storing data in a computer program
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to solving problems with 2D lists
Propose appropriate solutions to complex and changing problems of data storage, programming functions, and algorithms
This course is aimed to build a strong foundational knowledge of data structures (DS) used extensively in computing. The module starts with introducing time and space complexity notations and estimation for code snippets. This helps students be able to make trade-offs between various Data Structures while solving real world computational problems. The module introduces most widely used basic data structures like Dynamic arrays, multi-dimensional arrays, Lists, Strings, Hash Tables, Binary Trees, Balanced Binary Trees, Priority Queues and Graphs. The module discusses multiple implementation variations for each of the above data-structures along with trade-offs in space and time for each implementation. In this course, students implement these data-structures from scratch to gain a solid understanding of their inner workings. Students are also introduced to how to use the built-in data-structures available in various programming languages/libraries like Python/NumPy/C++ STL/Java/JavaScript. Students solve real-world problems where they must use an optimal DS to solve a computational problem at hand.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Data structures
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should implement Data structures
Propose appropriate solutions to complex and changing problems pertaining to different approach to Data structures applications
This is a core and foundational course which aims to equip the student with the ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create, modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the open source MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Relational Databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Relational Databases
Propose appropriate solutions to complex and changing problems pertaining to Relational Databases
This web design course is designed to provide students with the skills and knowledge necessary to create attractive, functional, and effective websites, including landing pages and company websites. The course covers a range of topics, including the fundamentals of web design such as finding references, researching competitors, basic research, wireframing, prototyping, grids, composition, typography, color, raster and vector graphics, user interface patterns, and adaptation.
Students will learn the basic laws of UX and the main user behavior patterns on the website. Students will be introduced to tools such as Figma, FigJam, Protopie, which will be used to create wireframes, layouts, and prototypes. The course will also include preparation of a case for publication on Behance, which will provide an opportunity to demonstrate skills to employers.
Key Intended Learning Outcomes:
Demonstrate proficiency in using Figma to create wireframes, prototypes, and high-fidelity designs.
Analyze and evaluate different web design principles, including wireframing, prototyping, composition, typography, color, and graphics, to create functional and visually attractive websites.
Apply critical thinking and problem-solving skills to analyze and address web design-related issues and effectively communicate solutions to clients and stakeholders.
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5 and CSS. Throughout the course students will learn how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details of HTML5 to build webpages. We would start with simple web pages and then graduate to more complex layouts and features in HTML. We then go on to learn stylesheets based on CSS 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 CSS. 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 appropriate toolkits. We would also study semantic markup, which is an important component of web application development in terms of accessibility and SEO. Students will learn about different types of HTML tags used to describe the structure and content of web pages, allowing browsers and other interpreters to correctly interpret content and improve its readability for people and search engines.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Front end UI/UX development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Front end UI/UX development
Propose appropriate solutions to complex and changing problems pertaining to Front end UI/UX development
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 Fetch 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 ElectronJS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of JavaScript
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle JavaScript
Propose appropriate solutions to complex and changing problems pertaining to JavaScript
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
Every organization is building products to solve the pain points of its customers. Product managers are a critical part of an organization, who make sure that evolving customer needs, and market trends are observed and converted into delightful solutions which help businesses get its outcomes.
In this course, students will get a fundamental understanding of product management practices.
This will give them a comprehensive view of the complete product management life cycle.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for improving a product after launch
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to measuring user engagement
Propose appropriate solutions to complex and changing problems of product success or failure in real-world engineering and science contexts
This advanced JavaScript course builds on the foundational concepts covered in the JavaScript course, with a focus on more advanced concepts and best practices for building modern, performant web applications. Through hands-on practice and real-world examples, students will learn how to optimize JavaScript code for mobile and desktop devices, work with the DOM and Web APIs, and interact with backend APIs.
The course will begin with an overview of event propagation and optimization techniques, including event bubbling, delegation, and throttling. Students will also learn about lazy loading images, using libraries via CDN, and other performance optimization techniques. Next, the course will cover project infrastructure and web storage, including working with Node.js, npm package management, code modularity, and syntax for ECMAScript modules. Students will learn about Webpack, Babel, and other tools for transpiling and bundling code, as well as code formatting and checking best practices.
The course will also cover asynchrony and date handling in JavaScript, with a focus on the Promise API, async/await syntax, and event loop. Students will learn how to interact with backend APIs, including working with REST APIs, HTTP methods, headers, and response status codes. They will also learn about pagination techniques, including "load more" buttons and infinite scrolling. Finally, the course will cover CRUD operations with asynchronous functions, including working with private APIs and error handling best practices.
Key Intended Learning Outcomes:
Analyze and optimize JavaScript code for mobile and desktop devices, using best practices for performance optimization
Create modular, reusable code using ECMAScript modules and other tools for transpiling and bundling code
Interact with backend APIs using REST APIs, HTTP methods, and pagination techniques
Develop asynchronous functions and handle errors effectively for CRUD operations
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on one of the most popular and advanced frameworks/libraries in use – React.js. 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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of front end development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle front end development applications
Propose appropriate solutions to complex and changing problems pertaining to front end development
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The module teaches various aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Back End Development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Back Eend Development
Propose appropriate solutions to complex and changing problems pertaining to Back End Development
This course is designed to provide a comprehensive understanding of Quality Assurance (QA) in software development. The course will cover the fundamental principles of testing and the different types of testing that are conducted at various levels of the software development life cycle. Students will also learn about the different testing techniques used in QA, such as black box, white box, and experience-based testing.
The course will also introduce students to various testing tools and methodologies that are commonly used in industry, including test management tools, SQL databases, Postman, and mobile testing. Students will learn about web technologies and the client-server architecture, as well as front-end and back-end development. The course will cover the basics of HTML/CSS, modern application architecture, and working with command-line tools like CI/CD and Git.
Throughout the course, students will develop a solid understanding of QA and its role in software development. They will learn how to develop test documentation and will gain practical experience in implementing various testing strategies. They will also learn how to analyze and critique different QA methodologies and propose appropriate solutions to complex and changing problems in the context of data structures. Students will be able to apply their understanding of web technologies and modern application architecture to design and test web applications, and will be well-equipped to pursue careers in software development or QA.
User Experience and User Interface (UX/UI) design is about understanding user needs and preferences, and creating digital products that meet those needs. Throughout this course, students will learn the fundamental skills and tools necessary to develop an effective user interface and experience.
Students will learn about the design thinking process, user personas and flows, customer journey mapping, and data visualization. They will also learn about the importance of collaboration between designers and developers, as well as how to test and iterate design.
The course covers essential topics such as Figma Pro, design system creation, mobile-first design, smart animation, and microcopy. Students will learn the process of designing from ideation to prototype creation, testing, and improvement, and understand how to work through iterations. The course includes an understanding of UX testing and its types, and working with analytics.
By the end of the course, students will have a clear understanding of how to create digital products that are aesthetically appealing and convenient for the user.
Mobile app design is a rapidly developing field that requires a deep understanding of user needs, technology, and UX design principles. This course aims to provide students with an in-depth understanding of various aspects involved in designing and developing cross-platform mobile applications using React Native. The course covers a wide range of topics, including React Native architecture, UI components, navigation, data management, user engagement, animation, and app store optimization.
Students will learn about the unique features of mobile app design, types of apps and technologies used in this field. The course emphasizes the importance of cross-platform compatibility, ensuring that the mobile apps created can run seamlessly on both iOS and Android platforms. The course will also cover familiarity with key design patterns for mobile apps, user engagement, animation, and preparing the app for publication.
Throughout the course, students will have the opportunity to work on real-world projects and assignments, allowing them to apply their learning to practical situations. They will learn how to analyze and evaluate different types of mobile apps and technologies used in mobile app design, as well as how to apply design principles and design patterns to create mobile app interfaces that are user-friendly and engaging.
In addition, the course covers important topics such as app store submission process and optimizing app performance, enabling students to prepare their mobile apps for publication.
This core course equips the student with knowledge of database management systems, operating systems and computer networks. At the end of the course, students will have a critical understanding of the architecture of computers and networks, as well as how programs interact with these. Students begin with mapping data storage problems to understand how data is stored in a distributed network, and related issues such as concurrency. Subsequently, students cover operating systems with an overview of process scheduling, process synchronization and memory management techniques with disk scheduling. The module concludes with computer networks, where we will be discussing all of the computer network layers and their protocols in detail.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for evaluating the design and use of relational databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle process prioritization in an operating system
Propose appropriate solutions to complex and changing problems pertaining to problem-solving in software development for specific operating systems and network environments
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 valuabe for all students specializing in mathematical sub-areas of CS like ML, Data Science, Scientific Computing etc.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of numerical programming in Python
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle numerical programming in Python
Propose appropriate solutions to complex and changing problems pertaining to numerical programming in Python
This course focuses on building basic classification and regression models and understanding these models rigorously both with a mathematical and an applicative focus. The module starts with a basic introduction to high dimensional geometry of points, distance-metrics, hyperplanes and hyperspheres. We build on top this to introduce the mathematical formulation of logistic regression to find a separating hyperplane. Students learn to solve the optimization problem using vector calculus and gradient descent (GD) based algorithms. The module introduces computational variations of GD like mini-batch and stochastic gradient descent. Students also learn other popular classification and regression methods like k-Nearest Neighbours, Naive 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.
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.
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.
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.
This is a course that focuses both on architectural design and practical hands-on learning of the most used cloud services. The module extensively uses Amazon Web services (AWS) to show real world code examples of various cloud services. It also covers the core concepts and architectures in a platform agnostic manner so that students can easily translate these learnings to other cloud platforms (like Azure, GCP etc.). The module starts with virtualization and how virtualized compute instances are created and configured. Students also learn how to auto-scale applications using load balancers and build fault tolerant applications across a geographically distributed cloud. As relational databases are widely used in most enterprises, students learn how to migrate and scale (both vertically and horizontally) these databases on the cloud while ensuring enterprise grade security. Virtual private clouds enable us to create a logically isolated virtual network of compute resources. Students learn to set up a VPC using virtualized-compute-servers on AWS. The course also covers the basics of networking while setting up a VPC. Students learn of the architecture and practical aspects of distributed object storage and how it enables low latency and high availability data storage on the cloud.
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 microservices, 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 data points 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.
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.
This course aims to build the core competency of building real world end-to-end ML systems and deploy them into production for a variety of problems and scenarios. Students would learn a variety of ML systems ranging from high throughput and low latency internet scale systems to low compute power and energy constrained IoT devices like smart watches. Students will study the ML lifecycle and various components in detail. We also use real world ML platforms like Google’s KubeFlow, TensorFlow Lite, and Amazon’s SageMaker to implement real world systems and understand the engineering trade-offs and challenges. Students also learn relevant technologies and tools like Containerization (Docker) and Container Orchestration (Kubernetes) and Git which are often used extensively in real world scalable ML systems. This course is a hands-on course where we solve multiple real world cases and discuss solutions built by various companies and organizations to provide the students a comprehensive understanding of varied systems and design choices.
This course is designed to equip IT professionals with the soft skills and career strategies required for success in the technology industry. The course is project-based and covers a range of topics such as communication skills, teamwork, time management, leadership, networking, and career development.
The course covers the entire lifecycle of a technology project, from requirement gathering to delivery and maintenance. Students will learn how to communicate effectively with stakeholders, manage their time efficiently, lead a team, and collaborate effectively in a team environment.
The course also covers aspects of career development, such as networking and building professional relationships, creating a personal brand, and developing a career plan. Students will learn how to identify their strengths and weaknesses, and how to leverage their skills and experience to advance their careers in the technology industry.
Key Intended Learning Outcomes:
Develop and demonstrate effective communication skills.
Collaborate effectively in a team environment.
Develop and demonstrate leadership skills.
Build and maintain professional relationships.
Develop and execute a career plan.
The Foundations of Cyber Security course is designed to provide students, both technical and non-technical, with a comprehensive introduction to the field of cybersecurity. In an increasingly digital world, the importance of securing data, systems, and networks is paramount. This course equips students with the knowledge and skills to protect their own information and recognize the importance of cybersecurity in professional settings. Cybersecurity is presented not as an absolute concept, but as a dynamic field with ever-evolving threats and countermeasures, where decisions involve trade-offs between security and usability. Real-world case studies and examples are used to illustrate the practical applications of cybersecurity principles.
Initially, the course will cover the basics of cryptography, principles of access control, identity management, and assurance strategies as theyof apply to IT applications and Cloud infrastructure services. The course will then explore the utilization of cryptographic algorithms, mechanisms, and technologies for securing data during transmission, storage, and usage. It will also address key management operations, the implementation of Private Blockchain infrastructures, integration of Public-Key Infrastructures (PKI) and Certificate Authorities (CA), identity verification with digital signatures, hardware-assisted keystore/root of trust deployment, directory services creation, single sign-on authentication setup, access control policy enforcement for IT resources, cryptographic solutions for IoT hardware, audit trail monitoring and recording, and compliance with industry and regulatory requirements.
Furthermore, the course will discuss practical cryptography and identity management techniques, and how to implement Zero-Trust Architectures (ZTA) in Cloud and IoT infrastructures using standard services and protocols such as TLS, IPSec/IKE, PKCS#11, LDAP, OCSP, SAML, OAuth2, OpenID Connect (OIDC). It will also emphasize adhering to data protection and identity management guidelines outlined by NIST, ENISA, and the Cloud Security Alliance (CSA).
This course provides a ground-up coverage of the high-level concepts, applied mechanisms, architecture, design, and real-world implementation practices of using cryptography and identity management solutions as they apply to cloud-hosted applications, services, and IoT devices.
In the ever-evolving landscape of cybersecurity, managing risks and ensuring organizational resilience is of paramount importance. The "Cyber Risk and Resilience Management" course is designed to equip students with the skills and knowledge necessary for effective security and risk management in the field of information security. This course delves into the core principles and concepts of security and risk management, ensuring that students are well-prepared to address contemporary cyber threats and challenges.
The course begins with an introduction to the fundamental principles and concepts of security and risk management. It emphasizes the significance of professional ethics and codes of conduct in the field of information security. Students will explore key security concepts, including confidentiality, integrity, availability, authenticity, and non-repudiation, and learn how to apply these concepts to various scenarios and contexts.
As the course progresses, students will delve into topics such as aligning security functions with business strategy, roles and responsibilities within organizations, security management frameworks, and the importance of due care and diligence. Additionally, students will gain insights into compliance requirements, contractual, legal, industry standards, and regulatory requirements, with a particular focus on data confidentiality and protection.
This course will also cover legal and regulatory issues in cybersecurity, including cybercrimes, data breaches, licensing, intellectual property requirements, cross-border data transfer, and privacy considerations. Students will explore various types of investigations, including administrative, criminal, civil, regulatory, and industry-specific investigations.
Throughout the course, students will learn how to develop, document, and implement security policies, standards, procedures, and guidelines. They will gain an understanding of business continuity requirements, including Business Impact Analysis (BIA), and learn to develop and document business continuity plans.
Moreover, the course will provide students with the knowledge and skills to identify threats and vulnerabilities, assess and analyze risks, and respond effectively to mitigate risks. It also covers the concept of risk management by supply chain, focusing on risks associated with hardware, software, and services.
Additionally, students will explore the creation and maintenance of security awareness, education, and training programs, including methods for program delivery, content analysis, and program effectiveness assessment.
By the end of this course, students will have a solid foundation in cybersecurity risk management and resilience, enabling them to make informed decisions and implement best practices to protect organizations from cyber threats and ensure business continuity.
This course is designed to provide students with a comprehensive understanding of asset management principles and data security strategies, preparing them to effectively identify, classify, and manage critical assets and sensitive information within the cybersecurity landscape.
The course commences with an exploration of the foundational aspects of asset management. Students will gain insight into the pivotal role of assets in the realm of cybersecurity, as they form the building blocks upon which robust security strategies are constructed. Understanding the lifecycle of assets, whether tangible or intangible, becomes a key focus, emphasizing the need for meticulous control and responsible ownership. Simultaneously, the course delves into the realm of data security.
The significance of safeguarding data cannot be overstated, as data is often an organization's most valuable asset. Students will grasp the core principles of data security, equipping them with the knowledge required to ensure the confidentiality, integrity, and availability of data. Emphasis will be placed on mitigating risks and protecting data from breaches, ensuring compliance with industry standards and regulations.
As the course progresses, students will delve into the identification and classification of information and assets. They will learn the intricacies of data classification, including the methods for labeling and categorizing data based on its sensitivity.
Additionally, they will explore techniques for the identification of assets, a crucial aspect of effective asset management, ensuring that organizations are fully aware of their resource landscape. Furthermore, the course covers the establishment of requirements for managing assets and information. Students will learn how to define the specific needs and prerequisites for asset management, which are essential for developing effective policies and procedures. These policies and procedures are the cornerstone of organized asset management and data security.
A critical aspect of the course is the exploration of data lifecycle management. Students will gain an understanding of the roles and responsibilities of data stakeholders, including owners, controllers, keepers, processors, and users. They will also be exposed to the full lifecycle of data, including its collection, storage, maintenance, retention, and secure disposal, ensuring that data is adequately protected throughout its existence.
By the end of the course, students will be well-equipped to tackle the challenges of asset management and data security in the complex landscape of modern cybersecurity. They will have the knowledge and practical skills needed to identify, classify, and manage assets and information effectively, ultimately contributing to the enhancement of an organization's security posture.
The course equips students with a deep understanding of network security and communication protocols. This course goes beyond the surface and provides practical skills for assessing and implementing secure network architecture designs. It's designed to instill essential knowledge and skills required to navigate the intricacies of network security and communication protocols, making it a critical component of contemporary cybersecurity education.
The course begins by establishing the fundamentals of secure network design. Students will explore the OSI and TCP/IP models, delving into the principles and architecture of TCP/IP and examining the pivotal role of security at different layers of these models.
Moreover, students will be introduced to secure network protocols, focusing on the principles and practical implementation of secure protocols, including IPSec, IPv4, and IPv6. As the course progresses, students will delve into the security intricacies embedded within multilayered protocols. They'll learn about the importance of multilayered protocols and gain the knowledge needed to address challenges presented by these protocols. The course also covers micro-segmentation in networks, including virtual and software-defined networks (SDN) and VXLAN, demonstrating how segmentation enhances security.
Additionally, students will explore the security aspects of wireless and mobile networks, such as Wi-Fi, Li-Fi, Zigbee, and satellite networks, along with the security of cellular networks (4G and 5G). The role of security in content distribution networks (CDN) will also be emphasized. Furthermore, the course delves into the realm of secure network components. Students will discover how to safeguard network hardware components, including power redundancy and warranties. Network access control (NAC) tools are introduced, providing insights into their implementation and their role in network access security. Endpoint security measures will be explored to protect devices and software, ensuring a secure connection to the network.
The course concludes by addressing the implementation of secure communication channels. It covers secure voice communication and multimedia interaction, focusing on the security of voice communication and secure multimedia communication principles and methods. Remote access and data transmission security are also explored, including the protection of remote network access and secure data transmission. Virtualized networks and security in virtualized networks and cloud environments are discussed, along with securing network connections with external parties and domains.
By the end of this course, students will possess a comprehensive understanding of network security and communication protocols, along with the practical skills needed to assess and implement secure network designs across various domains.
The course is designed to provide students with a profound understanding of identity and access management (IAM) and its vital role in safeguarding information systems. It also equips students with practical skills for managing both physical and logical access to critical assets. IAM is an essential component of modern organizations' security and access management strategies, and this course empowers students with the knowledge and abilities needed to excel in this domain.
The course begins by exploring the management of physical and logical access to assets. Students will delve into the fundamental concepts of access control, its significance, and the differentiation between physical and logical access control mechanisms.
As the course progresses, students will acquire in-depth knowledge of identity and authentication management. This encompasses the implementation of identity management (IdM) systems, multi-factor authentication (MFA), and session management. They will also understand the processes of registration and identity establishment, including user registration and identity verification. The course further delves into federated identity management, addressing its implementation in cloud, on-premises, and hybrid environments.
Additionally, students will learn about identity data management, emphasizing systems for managing identity data and the principles of identity data management. The management of single sign-on (SSO) and just-in-time (JIT) authentication will be covered as well. The course goes on to elucidate the mechanisms of authorization management. This includes the implementation of access control models, such as Role-Based Access Control (RBAC), Rule-Based Access Control, Mandatory Access Control (MAC), and others. Furthermore, students will gain insights into risk-oriented access control implementation.
Finally, the course delves into the identity and access lifecycle management. This involves access review processes, the analysis of access to accounts (user, system, and service), the provisioning and
de-provisioning of access rights, role definition, and the minimization of privilege escalation.
In conclusion, students will learn about authentication systems, including OpenID Connect (OIDC)/Open Authorization (OAuth), Security Assertion Markup Language (SAML), Kerberos, RADIUS/TACACS+, and their practical implementation. These authentication systems play a crucial role in establishing secure access control in modern information systems.
The course is designed to equip students with the knowledge and practical skills required to assess, test, and audit security measures in information systems. It provides a comprehensive understanding of the strategies and methodologies employed to evaluate the security of systems, identify vulnerabilities, and recommend security improvements. In an ever-evolving threat landscape, the ability to conduct effective security assessments and tests is vital in ensuring the confidentiality, integrity, and availability of critical data and systems.
The course begins with knowledge and skills, where students learn to design and validate assessment, testing, and audit strategies. This part of the course covers the development of strategies for internal, external, and third-party assessments, emphasizing planning and strategy validation.
The next part of the course focuses on conducting security control testing. It delves into vulnerability assessment methods, tools, and vulnerability analysis with recommendations for mitigation. Students also acquire the knowledge and skills to prepare for and execute penetration tests, analyze results, and formulate recommendations. Additionally, this part covers event log review for anomaly detection and synthetic transaction creation and analysis.
It also discusses code review and vulnerability testing, along with secure development practices. This part of studies concludes with the examination of abuse case testing, testing coverage assessment, and security interface and integration point evaluations. Students will also learn the collection of data on security processes, including account management, key performance indicators, and risks. Students learn how to gather and analyze data to assess security processes effectively.
In the next part of the course, students become adept at analyzing test results and creating reports. They learn to analyze test findings and recommendations, compile detailed test and assessment reports, handle exceptions and incidents, and adhere to ethical vulnerability disclosure principles.
The course culminates in exploring the execution and organization of security audits. Students learn to prepare for and conduct internal and external security audits, as well as audits of third-party providers.
By the end of the course, students will possess the knowledge and skills to assess, test, and audit the security of information systems effectively.
The course is designed to provide students with a comprehensive understanding of fundamental security operations and effective incident management in information systems. It aims to develop skills in applying proactive and reactive security measures to ensure information system security.
The course encompasses a range of modules, starting with understanding and compliance investigations, covering the collection and processing of digital evidence, and exploring methods and tactics in digital forensics, including artifact examination.
Students dive into logging and activity monitoring, addressing intrusion detection and prevention systems, Security Information and Event Management (SIEM), constant log monitoring, data leak monitoring, and user and entity behavior analytics (UEBA).
The course also focuses on configuration management, emphasizing automation processes for configuration management, including baselining and provisioning.
Later in the course students study fundamental security operations concepts, such as the principle of least privilege, role separation, privileged account management, task rotation, and Service Level Agreement (SLA) management.
Students also delve into resource protection, covering media management and data protection methods. The course addresses incident management, including detection, response, mitigation, reporting, and recovery from incidents.
Moreover, the course encompasses a broad range of proactive and reactive measures, including firewall usage, intrusion detection and prevention systems, vulnerability and patch management, change management processes, disaster recovery planning, recovery strategy implementation, recovery plan testing, business continuity exercise planning, physical security, and personnel security practices.
By the end of the course, students will have gained the knowledge and skills to effectively manage security operations, respond to incidents, and proactively safeguard information systems.
This course provides a practical understanding of popular object-oriented design patterns so that students can reuse design strategies developed for commonly occurring problems in software development. We begin the course with a revision of object-oriented programming and an overview of UML (unified modelling language) diagrams to represent software design diagrammatically. We then dive into 10-12 most popular design patterns motivating each of them from real world scenarios. We would also showcase multiple opensource code bases which use the specific design pattern to solve a real-world design problem. This would help students gain an appreciation of how each of the theoretical patterns they learn actually translate to code. We also take up real world cases and dive into various design patterns that can be used to solve the problem. Sometimes, there could be multiple valid designs. We would five into the pros and cons of each design decision and trade-offs involved. Our objective is to build the problem-solving ability amongst students to recognize the appropriate design pattern to tackle a real-world problem. The module briefly discusses domain specific design patterns in their respective contexts.
Human-computer interaction (HCI) is a field of study concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. This course surveys the scope of issues and foundations of the HCI field: cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods and techniques, and evaluation. This course will focus on the users and their tasks.
This course presents: first, an overview and introduction to the field of human-computer interaction and usability; second, an introduction to the methods to elicit user requirements and structure the design process to be user centred; and third, the course will emphasize the importance of paying attention to user needs and cognitive functioning in order to design usable systems. The course will also introduce visual design, heuristics, interaction methods and devices and specific interaction paradigms. This course provides practical knowledge of how to use well-known and established HCI design methods as well as theoretical knowledge of how to think and reason about them during the design process. In this course we will approach interaction design from the perspective of user-centered design. Interaction design techniques will be presented to explore and refine the behavior of products and services.
Key Intended Learning Outcomes:
Gain a thorough understanding of the fundamental aspects of Human-Computer Interaction (HCI), including cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods, and evaluation.
Acquire the capability to apply HCI principles in the design, evaluation, and implementation of interactive computing systems, emphasizing a user-centered approach that considers cognitive aspects and various interaction styles.
Propose appropriate solutions to prioritize users and their tasks, fostering a user-centric design approach essential for creating effective and user-friendly interactive systems in diverse computing environments.
Thе course offers an extensive exploration of graphic design principles. Students will delve into the application of graphic design in the context of designing interactive and user-centric interfaces. The course integrates both theoretical concepts and practical skills, emphasizing the creation of visually compelling and effective designs for enhanced user experiences.
Participants will acquire a comprehensive understanding of fundamental graphic design principles, including composition, lighting, texture, and spatial awareness, with a focus on their application in the context of Human-Computer Interaction. Through project-based learning, students will have the opportunity to work on practical design projects that simulate real-world scenarios, honing their graphic design skills for HCI. This approach ensures the direct application of learned concepts and techniques.
The course will emphasize the integration of graphic design into the broader context of usability and user-centric design. Students will learn how to align visual aesthetics with user needs, creating interfaces that are both visually appealing and functionally effective.
Students will develop the ability to effectively present and communicate their designs, understanding the importance of conveying design concepts to stakeholders and collaborators within the context of Human-Computer Interaction and Design.
By the conclusion of this course, students will have not only mastered the principles of graphic design but will also possess the expertise to seamlessly integrate these elements into user-centric interfaces, aligning with the principles of Human-Computer Interaction and Design.
Key Intended Learning Outcomes:
Achieve proficiency in fundamental graphic design principles, mastering composition, lighting, texture, and spatial awareness.
Learn to apply graphic design techniques specifically within the context of Human-Computer Interaction, enhancing user engagement and interface usability.
Develop the skills to present and communicate their designs effectively, ensuring clear understanding and alignment with user-centric design principles.
This course is tailored to provide a comprehensive exploration of UX Research Methods and Usability Testing. Throughout the program, participants will engage in a structured examination of diverse research methodologies applicable to the HCI field.
The curriculum commences with an in-depth overview of the research process, emphasizing literature review techniques essential for informed exploration within the domain of human-computer interaction and design. Students will acquire a theoretical foundation and practical proficiency in qualitative, survey, and experimental research methods.
A significant portion of the course is dedicated to a project-based approach, focusing on the formal evaluation of products. This involves a meticulous examination of usability testing, encompassing goal setting, user recruitment, task and environment design, and the comprehensive development and implementation of test plans. Prerequisites for this course include a foundational understanding of human-computer interaction principles, with an additional emphasis on fostering familiarity with research methodologies.
By the course's conclusion, students will not only possess theoretical insights into the research process but will also have acquired practical skills in conducting usability testing. This includes the ability to analyze, interpret, document, and present usability test results, culminating in the formulation of meaningful recommendations for user-centered design within the HCID landscape.
Key Intended Learning Outcomes:
Develop proficiency in various research methods applicable to Human-Computer Interaction (HCI), including qualitative, survey, and experimental research, gaining an understanding of the research process and literature review.
Gain practical experience in studying existing research, designing, and conducting HCI studies, with a focus on usability testing. This includes goal setting, user recruitment, task and environment design, test plan development, implementation, and result analysis.
Effectively conduct formal evaluations of products, covering crucial aspects such as goal setting, user recruitment, task and environment design, test plan development, result analysis, and the documentation and presentation of findings and recommendations in the context of HCID.
This course explores the interdisciplinary field of Physical User Interface (PUI) design within the context of Human-Computer Interaction and Design. PUIs involve the interaction between users and digital systems through tangible, physical objects, presenting new challenges and opportunities for designers. As intelligent production environments evolve, the course addresses the question of whether existing design methods and tools are adequate or if more sophisticated approaches are required.
The curriculum initiates with a discussion on the necessity for advanced physical user interfaces with enhanced capabilities, establishing functional and non-functional requirements for an efficient design method.
The course introduces a model-based design approach, incorporating a comprehensive context model and modeling tools tailored for intelligent production environments. Through case studies and practical applications, students gain insights into the feasibility and effectiveness of the proposed design method. The course concludes with a critical examination of key characteristics, identifying areas for potential future improvements.
Key Intended Learning Outcomes:
Achieve proficiency in foundational principles of PUI design, encompassing tangible interaction, usability, and integration with intelligent production environments.
Apply design techniques specific to Physical User Interfaces within the broader context of Human-Computer Interaction, aiming to enhance user engagement and optimize interface usability.
Develop skills to present and articulate PUI designs effectively, ensuring clear understanding and alignment with user-centric design principles.
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.
A business case study is a course designed for the learner to identify a business real world problem and its objective is to help students rigorously solve a real-world, technically-challenging business problem where they would apply all of the concepts, techniques and tools learnt in the program. Students typically pick a problem from a known business problem or identify business cases where data analytics can be used to solve a problem. The choosing of a topic can be done after discussing it with the course instructor(s). Students also have an option of choosing a business problem in their professional organization but the external supervisors should be approved by the instructor(s). Students start by identifying a business problem and proposing a methodology to solve the said business problem. Students then decide what technical and business tools will be used for the solution methodology. Students will first work on the real-world data, clean and process it using techniques learnt in this program. Students then will use algorithms and approach with a coding language and tool they think will get the best results. At the end of the case study student should be able to present the business problem and solution either via Jupyter notebooks or via a blog.
This course provides a comprehensive overview of Computer vision problems and how they can be tackled using various Convolutional Neural networks (CNNs). Students start with classical image processing operations like edge detection, convolution, shape detectors and colour space conversions. This is followed by a foundational understanding of Deep-Convolutional Neural networks and how their training and evaluation works. We introduce various CNN specific layers like pooling-layers and upsampling layers. We also introduce various Data Augmentation techniques that are very helpful for image-related problems. This is followed by a dive deep into the internals of popular CNN architectures like: AlexNet, VGGNet, ResNet etc. Students also learn how to use these methods practically for transfer learning. Students will study how various computer-vision related tasks like image segmentation, image-generation, object detection and localization, contrastive learning etc., can be performed using state of the art algorithms for each of these tasks. Most of these techniques would be studied directly from the original research papers and open-source code provided by the authors. Students would also implement some of these algorithms from scratch in this course.
Advanced Python Programming builds on introductory programming courses to illustrate object-oriented programming concepts, database design in Python, and the basics of Machine Learning with Python libraries. Students will learn how to solve problems in Python, develop design patterns in Python code, develop internet applications with Python, and collaborate with other students to implement projects. The course introduces advanced features such as decorators and generators, as well as a thorough exploration of the Python development environment.
This course is designed to prepare students for an entry-level developer position.
This is a hands-on course on designing responsive, modern and light-weight UI for web, mobile and desktop applications using HTML5 and CSS. Throughout the course students will learn how web browsers, mobile apps and web servers work. We then dive into each of the nitty gritty details of HTML5 to build webpages. We would start with simple web pages and then graduate to more complex layouts and features in HTML. We then go on to learn stylesheets based on CSS 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 CSS. 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 appropriate toolkits. We would also study semantic markup, which is an important component of web application development in terms of accessibility and SEO. Students will learn about different types of HTML tags used to describe the structure and content of web pages, allowing browsers and other interpreters to correctly interpret content and improve its readability for people and search engines.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Front end UI/UX development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Front end UI/UX development
Propose appropriate solutions to complex and changing problems pertaining to Front end UI/UX development
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 Fetch 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 ElectronJS. Most of this course would be covered via real world examples and by learning from JS code of popular open-source websites and libraries.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of JavaScript
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle JavaScript
Propose appropriate solutions to complex and changing problems pertaining to JavaScript
This advanced JavaScript course builds on the foundational concepts covered in the JavaScript course, with a focus on more advanced concepts and best practices for building modern, performant web applications. Through hands-on practice and real-world examples, students will learn how to optimize JavaScript code for mobile and desktop devices, work with the DOM and Web APIs, and interact with backend APIs.
The course will begin with an overview of event propagation and optimization techniques, including event bubbling, delegation, and throttling. Students will also learn about lazy loading images, using libraries via CDN, and other performance optimization techniques. Next, the course will cover project infrastructure and web storage, including working with Node.js, npm package management, code modularity, and syntax for ECMAScript modules. Students will learn about Webpack, Babel, and other tools for transpiling and bundling code, as well as code formatting and checking best practices.
The course will also cover asynchrony and date handling in JavaScript, with a focus on the Promise API, async/await syntax, and event loop. Students will learn how to interact with backend APIs, including working with REST APIs, HTTP methods, headers, and response status codes. They will also learn about pagination techniques, including "load more" buttons and infinite scrolling. Finally, the course will cover CRUD operations with asynchronous functions, including working with private APIs and error handling best practices.
Key Intended Learning Outcomes:
Analyze and optimize JavaScript code for mobile and desktop devices, using best practices for performance optimization
Create modular, reusable code using ECMAScript modules and other tools for transpiling and bundling code
Interact with backend APIs using REST APIs, HTTP methods, and pagination techniques
Develop asynchronous functions and handle errors effectively for CRUD operations
User Experience and User Interface (UX/UI) design is about understanding user needs and preferences, and creating digital products that meet those needs. Throughout this course, students will learn the fundamental skills and tools necessary to develop an effective user interface and experience.
Students will learn about the design thinking process, user personas and flows, customer journey mapping, and data visualization. They will also learn about the importance of collaboration between designers and developers, as well as how to test and iterate design.
The course covers essential topics such as Figma Pro, design system creation, mobile-first design, smart animation, and microcopy. Students will learn the process of designing from ideation to prototype creation, testing, and improvement, and understand how to work through iterations. The course includes an understanding of UX testing and its types, and working with analytics.
By the end of the course, students will have a clear understanding of how to create digital products that are aesthetically appealing and convenient for the user.
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on one of the most popular and advanced frameworks/libraries in use – React.js. 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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of front end development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle front end development applications
Propose appropriate solutions to complex and changing problems pertaining to front end development
Mobile app design is a rapidly developing field that requires a deep understanding of user needs, technology, and UX design principles. This course aims to provide students with an in-depth understanding of various aspects involved in designing and developing cross-platform mobile applications using React Native. The course covers a wide range of topics, including React Native architecture, UI components, navigation, data management, user engagement, animation, and app store optimization.
Students will learn about the unique features of mobile app design, types of apps and technologies used in this field. The course emphasizes the importance of cross-platform compatibility, ensuring that the mobile apps created can run seamlessly on both iOS and Android platforms. The course will also cover familiarity with key design patterns for mobile apps, user engagement, animation, and preparing the app for publication.
Throughout the course, students will have the opportunity to work on real-world projects and assignments, allowing them to apply their learning to practical situations. They will learn how to analyze and evaluate different types of mobile apps and technologies used in mobile app design, as well as how to apply design principles and design patterns to create mobile app interfaces that are user-friendly and engaging.
In addition, the course covers important topics such as app store submission process and optimizing app performance, enabling students to prepare their mobile apps for publication.
This course is designed to provide a comprehensive understanding of Quality Assurance (QA) in software development. The course will cover the fundamental principles of testing and the different types of testing that are conducted at various levels of the software development life cycle. Students will also learn about the different testing techniques used in QA, such as black box, white box, and experience-based testing.
The course will also introduce students to various testing tools and methodologies that are commonly used in industry, including test management tools, SQL databases, Postman, and mobile testing. Students will learn about web technologies and the client-server architecture, as well as front-end and back-end development. The course will cover the basics of HTML/CSS, modern application architecture, and working with command-line tools like CI/CD and Git.
Throughout the course, students will develop a solid understanding of QA and its role in software development. They will learn how to develop test documentation and will gain practical experience in implementing various testing strategies. They will also learn how to analyze and critique different QA methodologies and propose appropriate solutions to complex and changing problems in the context of data structures. Students will be able to apply their understanding of web technologies and modern application architecture to design and test web applications, and will be well-equipped to pursue careers in software development or QA.
This is a core and foundational course which aims to equip the student with the ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create, modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the open source MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Relational Databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Relational Databases
Propose appropriate solutions to complex and changing problems pertaining to Relational Databases
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
This is a foundational course on building server-side (or backend) applications using popular JavaScript runtime environments like Node.js. Students will learn event driven programming for building scalable backend for web applications. The module teaches various aspects of Node.js like setup, package manager, client-server programming and connecting to various databases and REST APIs. Most of these concepts would be covered in a hands-on manner with real world examples and applications built from scratch using Node.js on Linux servers. This course also provides an introduction to Linux server administration and scripting with special focus on web-development and networking. Students learn to use Linux monitoring tools (like Monit) to track the health of the servers. The module also provides an introduction to Express.js which is a popular light-weight framework for Node.js applications. Given the practical nature of this course, this would involve building actual website backends via assignments/projects for ecommerce, online learning and/or photo-sharing.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of Back End Development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Back Eend Development
Propose appropriate solutions to complex and changing problems pertaining to Back End Development
Every organization is building products to solve the pain points of its customers. Product managers are a critical part of an organization, who make sure that evolving customer needs, and market trends are observed and converted into delightful solutions which help businesses get its outcomes.
In this course, students will get a fundamental understanding of product management practices.
This will give them a comprehensive view of the complete product management life cycle.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for improving a product after launch
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to measuring user engagement
Propose appropriate solutions to complex and changing problems of product success or failure in real-world engineering and science contexts
This web design course is designed to provide students with the skills and knowledge necessary to create attractive, functional, and effective websites, including landing pages and company websites. The course covers a range of topics, including the fundamentals of web design such as finding references, researching competitors, basic research, wireframing, prototyping, grids, composition, typography, color, raster and vector graphics, user interface patterns, and adaptation.
Students will learn the basic laws of UX and the main user behavior patterns on the website. Students will be introduced to tools such as Figma, FigJam, Protopie, which will be used to create wireframes, layouts, and prototypes. The course will also include preparation of a case for publication on Behance, which will provide an opportunity to demonstrate skills to employers.
Key Intended Learning Outcomes:
Demonstrate proficiency in using Figma to create wireframes, prototypes, and high-fidelity designs.
Analyze and evaluate different web design principles, including wireframing, prototyping, composition, typography, color, and graphics, to create functional and visually attractive websites.
Apply critical thinking and problem-solving skills to analyze and address web design-related issues and effectively communicate solutions to clients and stakeholders.
This core course equips the student with knowledge of database management systems, operating systems and computer networks. At the end of the course, students will have a critical understanding of the architecture of computers and networks, as well as how programs interact with these. Students begin with mapping data storage problems to understand how data is stored in a distributed network, and related issues such as concurrency. Subsequently, students cover operating systems with an overview of process scheduling, process synchronization and memory management techniques with disk scheduling. The module concludes with computer networks, where we will be discussing all of the computer network layers and their protocols in detail.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for evaluating the design and use of relational databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle process prioritization in an operating system
Propose appropriate solutions to complex and changing problems pertaining to problem-solving in software development for specific operating systems and network environments
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 valuabe for all students specializing in mathematical sub-areas of CS like ML, Data Science, Scientific Computing etc.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of numerical programming in Python
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle numerical programming in Python
Propose appropriate solutions to complex and changing problems pertaining to numerical programming in Python
This course focuses on building basic classification and regression models and understanding these models rigorously both with a mathematical and an applicative focus. The module starts with a basic introduction to high dimensional geometry of points, distance-metrics, hyperplanes and hyperspheres. We build on top this to introduce the mathematical formulation of logistic regression to find a separating hyperplane. Students learn to solve the optimization problem using vector calculus and gradient descent (GD) based algorithms. The module introduces computational variations of GD like mini-batch and stochastic gradient descent. Students also learn other popular classification and regression methods like k-Nearest Neighbours, Naive 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.
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.
This is a core and foundational course which aims to equip the student with the ability to model, design, implement and query relational database systems for real-world data storage & processing needs. Students would start with diagrammatic tools (ER-diagram) to map a real world data storage problem into entities, relationships and keys. Then, they learn to translate the ER-diagram into a relational model with tables. SQL is then introduced as a de facto tool to create, modify, append, delete, query and manipulate data in a relational database. Due to SQL’s popularity, the course spends considerable time building the ability to write optimized and complex queries for various data manipulation tasks. The module exposes students to various real world SQL examples to build solid practical knowledge. Students then move on to understanding various trade-offs in modern relational databases like the ones between storage space and latency. Designing a database would need a solid understanding of normal forms to minimize data duplication, indexing for speedup and flattening tables to avoid complex joins in low-latency environments. These real-world database design strategies are discussed with practical examples from various domains. Most of this course uses the open source MySQL database and cloud-hosted relational databases (like Amazon RDS) to help students apply the concepts learned on real databases via assignments.
Key Intended Learning Outcomes:
Assess, analyse, and criticise the various strategies for handling matters arising in the context of Relational Databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle Relational Databases
Propose appropriate solutions to complex and changing problems pertaining to Relational Databases
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
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.
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.
This course provides a comprehensive overview of Computer vision problems and how they can be tackled using various Convolutional Neural networks (CNNs). Students start with classical image processing operations like edge detection, convolution, shape detectors and colour space conversions. This is followed by a foundational understanding of Deep-Convolutional Neural networks and how their training and evaluation works. We introduce various CNN specific layers like pooling-layers and upsampling layers. We also introduce various Data Augmentation techniques that are very helpful for image-related problems. This is followed by a dive deep into the internals of popular CNN architectures like: AlexNet, VGGNet, ResNet etc. Students also learn how to use these methods practically for transfer learning. Students will study how various computer-vision related tasks like image segmentation, image-generation, object detection and localization, contrastive learning etc., can be performed using state of the art algorithms for each of these tasks. Most of these techniques would be studied directly from the original research papers and open-source code provided by the authors. Students would also implement some of these algorithms from scratch in this course.
Advanced Python Programming builds on introductory programming courses to illustrate object-oriented programming concepts, database design in Python, and the basics of Machine Learning with Python libraries. Students will learn how to solve problems in Python, develop design patterns in Python code, develop internet applications with Python, and collaborate with other students to implement projects. The course introduces advanced features such as decorators and generators, as well as a thorough exploration of the Python development environment.
This course is designed to prepare students for an entry-level developer position.
This core course equips the student with knowledge of database management systems, operating systems and computer networks. At the end of the course, students will have a critical understanding of the architecture of computers and networks, as well as how programs interact with these. Students begin with mapping data storage problems to understand how data is stored in a distributed network, and related issues such as concurrency. Subsequently, students cover operating systems with an overview of process scheduling, process synchronization and memory management techniques with disk scheduling. The module concludes with computer networks, where we will be discussing all of the computer network layers and their protocols in detail.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for evaluating the design and use of relational databases
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle process prioritization in an operating system
Propose appropriate solutions to complex and changing problems pertaining to problem-solving in software development for specific operating systems and network environments
The Foundations of Cyber Security course is designed to provide students, both technical and non-technical, with a comprehensive introduction to the field of cybersecurity. In an increasingly digital world, the importance of securing data, systems, and networks is paramount. This course equips students with the knowledge and skills to protect their own information and recognize the importance of cybersecurity in professional settings. Cybersecurity is presented not as an absolute concept, but as a dynamic field with ever-evolving threats and countermeasures, where decisions involve trade-offs between security and usability. Real-world case studies and examples are used to illustrate the practical applications of cybersecurity principles.
Initially, the course will cover the basics of cryptography, principles of access control, identity management, and assurance strategies as theyof apply to IT applications and Cloud infrastructure services. The course will then explore the utilization of cryptographic algorithms, mechanisms, and technologies for securing data during transmission, storage, and usage. It will also address key management operations, the implementation of Private Blockchain infrastructures, integration of Public-Key Infrastructures (PKI) and Certificate Authorities (CA), identity verification with digital signatures, hardware-assisted keystore/root of trust deployment, directory services creation, single sign-on authentication setup, access control policy enforcement for IT resources, cryptographic solutions for IoT hardware, audit trail monitoring and recording, and compliance with industry and regulatory requirements.
Furthermore, the course will discuss practical cryptography and identity management techniques, and how to implement Zero-Trust Architectures (ZTA) in Cloud and IoT infrastructures using standard services and protocols such as TLS, IPSec/IKE, PKCS#11, LDAP, OCSP, SAML, OAuth2, OpenID Connect (OIDC). It will also emphasize adhering to data protection and identity management guidelines outlined by NIST, ENISA, and the Cloud Security Alliance (CSA).
This course provides a ground-up coverage of the high-level concepts, applied mechanisms, architecture, design, and real-world implementation practices of using cryptography and identity management solutions as they apply to cloud-hosted applications, services, and IoT devices.
In the ever-evolving landscape of cybersecurity, managing risks and ensuring organizational resilience is of paramount importance. The "Cyber Risk and Resilience Management" course is designed to equip students with the skills and knowledge necessary for effective security and risk management in the field of information security. This course delves into the core principles and concepts of security and risk management, ensuring that students are well-prepared to address contemporary cyber threats and challenges.
The course begins with an introduction to the fundamental principles and concepts of security and risk management. It emphasizes the significance of professional ethics and codes of conduct in the field of information security. Students will explore key security concepts, including confidentiality, integrity, availability, authenticity, and non-repudiation, and learn how to apply these concepts to various scenarios and contexts.
As the course progresses, students will delve into topics such as aligning security functions with business strategy, roles and responsibilities within organizations, security management frameworks, and the importance of due care and diligence. Additionally, students will gain insights into compliance requirements, contractual, legal, industry standards, and regulatory requirements, with a particular focus on data confidentiality and protection.
This course will also cover legal and regulatory issues in cybersecurity, including cybercrimes, data breaches, licensing, intellectual property requirements, cross-border data transfer, and privacy considerations. Students will explore various types of investigations, including administrative, criminal, civil, regulatory, and industry-specific investigations.
Throughout the course, students will learn how to develop, document, and implement security policies, standards, procedures, and guidelines. They will gain an understanding of business continuity requirements, including Business Impact Analysis (BIA), and learn to develop and document business continuity plans.
Moreover, the course will provide students with the knowledge and skills to identify threats and vulnerabilities, assess and analyze risks, and respond effectively to mitigate risks. It also covers the concept of risk management by supply chain, focusing on risks associated with hardware, software, and services.
Additionally, students will explore the creation and maintenance of security awareness, education, and training programs, including methods for program delivery, content analysis, and program effectiveness assessment.
By the end of this course, students will have a solid foundation in cybersecurity risk management and resilience, enabling them to make informed decisions and implement best practices to protect organizations from cyber threats and ensure business continuity.
This course is designed to provide students with a comprehensive understanding of asset management principles and data security strategies, preparing them to effectively identify, classify, and manage critical assets and sensitive information within the cybersecurity landscape.
The course commences with an exploration of the foundational aspects of asset management. Students will gain insight into the pivotal role of assets in the realm of cybersecurity, as they form the building blocks upon which robust security strategies are constructed. Understanding the lifecycle of assets, whether tangible or intangible, becomes a key focus, emphasizing the need for meticulous control and responsible ownership. Simultaneously, the course delves into the realm of data security.
The significance of safeguarding data cannot be overstated, as data is often an organization's most valuable asset. Students will grasp the core principles of data security, equipping them with the knowledge required to ensure the confidentiality, integrity, and availability of data. Emphasis will be placed on mitigating risks and protecting data from breaches, ensuring compliance with industry standards and regulations.
As the course progresses, students will delve into the identification and classification of information and assets. They will learn the intricacies of data classification, including the methods for labeling and categorizing data based on its sensitivity.
Additionally, they will explore techniques for the identification of assets, a crucial aspect of effective asset management, ensuring that organizations are fully aware of their resource landscape. Furthermore, the course covers the establishment of requirements for managing assets and information. Students will learn how to define the specific needs and prerequisites for asset management, which are essential for developing effective policies and procedures. These policies and procedures are the cornerstone of organized asset management and data security.
A critical aspect of the course is the exploration of data lifecycle management. Students will gain an understanding of the roles and responsibilities of data stakeholders, including owners, controllers, keepers, processors, and users. They will also be exposed to the full lifecycle of data, including its collection, storage, maintenance, retention, and secure disposal, ensuring that data is adequately protected throughout its existence.
By the end of the course, students will be well-equipped to tackle the challenges of asset management and data security in the complex landscape of modern cybersecurity. They will have the knowledge and practical skills needed to identify, classify, and manage assets and information effectively, ultimately contributing to the enhancement of an organization's security posture.
This is a foundational and mandatory course which aims to build student's ability to apply various algorithmic design methods to provide an optimal solution to computational problems. This course starts with time and space complexity analysis of divide and conquer algorithms using recursion-tree based methods and Master’s theorem. Students would also learn about amortized time and space complexity analysis for randomized/probabilistic algorithms. Various algorithmic design strategies would be introduced via real world examples and problems. Students would learn when, where and how to optimally use Divide and Conquer, Dynamic programming (top-down and button-up), Greedy, Backtracking and Randomization strategies with examples. The module uses various practical examples from Array manipulations, Sorting, Searching, String manipulations, Tree & Graphs traversals, Graph path-finding, Spanning Trees etc., to introduce the above algorithmic strategies in action. Students would implement many of the above algorithmic design methods from scratch as part of the assignments. The module also introduces how some of these popular algorithms are readily available via popular libraries in various programming languages.
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.
The course equips students with a deep understanding of network security and communication protocols. This course goes beyond the surface and provides practical skills for assessing and implementing secure network architecture designs. It's designed to instill essential knowledge and skills required to navigate the intricacies of network security and communication protocols, making it a critical component of contemporary cybersecurity education.
The course begins by establishing the fundamentals of secure network design. Students will explore the OSI and TCP/IP models, delving into the principles and architecture of TCP/IP and examining the pivotal role of security at different layers of these models.
Moreover, students will be introduced to secure network protocols, focusing on the principles and practical implementation of secure protocols, including IPSec, IPv4, and IPv6. As the course progresses, students will delve into the security intricacies embedded within multilayered protocols. They'll learn about the importance of multilayered protocols and gain the knowledge needed to address challenges presented by these protocols. The course also covers micro-segmentation in networks, including virtual and software-defined networks (SDN) and VXLAN, demonstrating how segmentation enhances security.
Additionally, students will explore the security aspects of wireless and mobile networks, such as Wi-Fi, Li-Fi, Zigbee, and satellite networks, along with the security of cellular networks (4G and 5G). The role of security in content distribution networks (CDN) will also be emphasized. Furthermore, the course delves into the realm of secure network components. Students will discover how to safeguard network hardware components, including power redundancy and warranties. Network access control (NAC) tools are introduced, providing insights into their implementation and their role in network access security. Endpoint security measures will be explored to protect devices and software, ensuring a secure connection to the network.
The course concludes by addressing the implementation of secure communication channels. It covers secure voice communication and multimedia interaction, focusing on the security of voice communication and secure multimedia communication principles and methods. Remote access and data transmission security are also explored, including the protection of remote network access and secure data transmission. Virtualized networks and security in virtualized networks and cloud environments are discussed, along with securing network connections with external parties and domains.
By the end of this course, students will possess a comprehensive understanding of network security and communication protocols, along with the practical skills needed to assess and implement secure network designs across various domains.
This is a course that focuses both on architectural design and practical hands-on learning of the most used cloud services. The module extensively uses Amazon Web services (AWS) to show real world code examples of various cloud services. It also covers the core concepts and architectures in a platform agnostic manner so that students can easily translate these learnings to other cloud platforms (like Azure, GCP etc.). The module starts with virtualization and how virtualized compute instances are created and configured. Students also learn how to auto-scale applications using load balancers and build fault tolerant applications across a geographically distributed cloud. As relational databases are widely used in most enterprises, students learn how to migrate and scale (both vertically and horizontally) these databases on the cloud while ensuring enterprise grade security. Virtual private clouds enable us to create a logically isolated virtual network of compute resources. Students learn to set up a VPC using virtualized-compute-servers on AWS. The course also covers the basics of networking while setting up a VPC. Students learn of the architecture and practical aspects of distributed object storage and how it enables low latency and high availability data storage on the cloud.
The course is designed to provide students with a profound understanding of identity and access management (IAM) and its vital role in safeguarding information systems. It also equips students with practical skills for managing both physical and logical access to critical assets. IAM is an essential component of modern organizations' security and access management strategies, and this course empowers students with the knowledge and abilities needed to excel in this domain.
The course begins by exploring the management of physical and logical access to assets. Students will delve into the fundamental concepts of access control, its significance, and the differentiation between physical and logical access control mechanisms.
As the course progresses, students will acquire in-depth knowledge of identity and authentication management. This encompasses the implementation of identity management (IdM) systems, multi-factor authentication (MFA), and session management. They will also understand the processes of registration and identity establishment, including user registration and identity verification. The course further delves into federated identity management, addressing its implementation in cloud, on-premises, and hybrid environments.
Additionally, students will learn about identity data management, emphasizing systems for managing identity data and the principles of identity data management. The management of single sign-on (SSO) and just-in-time (JIT) authentication will be covered as well. The course goes on to elucidate the mechanisms of authorization management. This includes the implementation of access control models, such as Role-Based Access Control (RBAC), Rule-Based Access Control, Mandatory Access Control (MAC), and others. Furthermore, students will gain insights into risk-oriented access control implementation.
Finally, the course delves into the identity and access lifecycle management. This involves access review processes, the analysis of access to accounts (user, system, and service), the provisioning and
de-provisioning of access rights, role definition, and the minimization of privilege escalation.
In conclusion, students will learn about authentication systems, including OpenID Connect (OIDC)/Open Authorization (OAuth), Security Assertion Markup Language (SAML), Kerberos, RADIUS/TACACS+, and their practical implementation. These authentication systems play a crucial role in establishing secure access control in modern information systems.
Every organization is building products to solve the pain points of its customers. Product managers are a critical part of an organization, who make sure that evolving customer needs, and market trends are observed and converted into delightful solutions which help businesses get its outcomes.
In this course, students will get a fundamental understanding of product management practices.
This will give them a comprehensive view of the complete product management life cycle.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for improving a product after launch
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to measuring user engagement
Propose appropriate solutions to complex and changing problems of product success or failure in real-world engineering and science contexts
This advanced JavaScript course builds on the foundational concepts covered in the JavaScript course, with a focus on more advanced concepts and best practices for building modern, performant web applications. Through hands-on practice and real-world examples, students will learn how to optimize JavaScript code for mobile and desktop devices, work with the DOM and Web APIs, and interact with backend APIs.
The course will begin with an overview of event propagation and optimization techniques, including event bubbling, delegation, and throttling. Students will also learn about lazy loading images, using libraries via CDN, and other performance optimization techniques. Next, the course will cover project infrastructure and web storage, including working with Node.js, npm package management, code modularity, and syntax for ECMAScript modules. Students will learn about Webpack, Babel, and other tools for transpiling and bundling code, as well as code formatting and checking best practices.
The course will also cover asynchrony and date handling in JavaScript, with a focus on the Promise API, async/await syntax, and event loop. Students will learn how to interact with backend APIs, including working with REST APIs, HTTP methods, headers, and response status codes. They will also learn about pagination techniques, including "load more" buttons and infinite scrolling. Finally, the course will cover CRUD operations with asynchronous functions, including working with private APIs and error handling best practices.
Key Intended Learning Outcomes:
Analyze and optimize JavaScript code for mobile and desktop devices, using best practices for performance optimization
Create modular, reusable code using ECMAScript modules and other tools for transpiling and bundling code
Interact with backend APIs using REST APIs, HTTP methods, and pagination techniques
Develop asynchronous functions and handle errors effectively for CRUD operations
Human-computer interaction (HCI) is a field of study concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. This course surveys the scope of issues and foundations of the HCI field: cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods and techniques, and evaluation. This course will focus on the users and their tasks.
This course presents: first, an overview and introduction to the field of human-computer interaction and usability; second, an introduction to the methods to elicit user requirements and structure the design process to be user centred; and third, the course will emphasize the importance of paying attention to user needs and cognitive functioning in order to design usable systems. The course will also introduce visual design, heuristics, interaction methods and devices and specific interaction paradigms. This course provides practical knowledge of how to use well-known and established HCI design methods as well as theoretical knowledge of how to think and reason about them during the design process. In this course we will approach interaction design from the perspective of user-centered design. Interaction design techniques will be presented to explore and refine the behavior of products and services.
Key Intended Learning Outcomes:
Gain a thorough understanding of the fundamental aspects of Human-Computer Interaction (HCI), including cognitive psychology, human factors, interaction styles, user analysis, task analysis, interaction design methods, and evaluation.
Acquire the capability to apply HCI principles in the design, evaluation, and implementation of interactive computing systems, emphasizing a user-centered approach that considers cognitive aspects and various interaction styles.
Propose appropriate solutions to prioritize users and their tasks, fostering a user-centric design approach essential for creating effective and user-friendly interactive systems in diverse computing environments.
Thе course offers an extensive exploration of graphic design principles. Students will delve into the application of graphic design in the context of designing interactive and user-centric interfaces. The course integrates both theoretical concepts and practical skills, emphasizing the creation of visually compelling and effective designs for enhanced user experiences.
Participants will acquire a comprehensive understanding of fundamental graphic design principles, including composition, lighting, texture, and spatial awareness, with a focus on their application in the context of Human-Computer Interaction. Through project-based learning, students will have the opportunity to work on practical design projects that simulate real-world scenarios, honing their graphic design skills for HCI. This approach ensures the direct application of learned concepts and techniques.
The course will emphasize the integration of graphic design into the broader context of usability and user-centric design. Students will learn how to align visual aesthetics with user needs, creating interfaces that are both visually appealing and functionally effective.
Students will develop the ability to effectively present and communicate their designs, understanding the importance of conveying design concepts to stakeholders and collaborators within the context of Human-Computer Interaction and Design.
By the conclusion of this course, students will have not only mastered the principles of graphic design but will also possess the expertise to seamlessly integrate these elements into user-centric interfaces, aligning with the principles of Human-Computer Interaction and Design.
Key Intended Learning Outcomes:
Achieve proficiency in fundamental graphic design principles, mastering composition, lighting, texture, and spatial awareness.
Learn to apply graphic design techniques specifically within the context of Human-Computer Interaction, enhancing user engagement and interface usability.
Develop the skills to present and communicate their designs effectively, ensuring clear understanding and alignment with user-centric design principles.
This course is tailored to provide a comprehensive exploration of UX Research Methods and Usability Testing. Throughout the program, participants will engage in a structured examination of diverse research methodologies applicable to the HCI field.
The curriculum commences with an in-depth overview of the research process, emphasizing literature review techniques essential for informed exploration within the domain of human-computer interaction and design. Students will acquire a theoretical foundation and practical proficiency in qualitative, survey, and experimental research methods.
A significant portion of the course is dedicated to a project-based approach, focusing on the formal evaluation of products. This involves a meticulous examination of usability testing, encompassing goal setting, user recruitment, task and environment design, and the comprehensive development and implementation of test plans. Prerequisites for this course include a foundational understanding of human-computer interaction principles, with an additional emphasis on fostering familiarity with research methodologies.
By the course's conclusion, students will not only possess theoretical insights into the research process but will also have acquired practical skills in conducting usability testing. This includes the ability to analyze, interpret, document, and present usability test results, culminating in the formulation of meaningful recommendations for user-centered design within the HCID landscape.
Key Intended Learning Outcomes:
Develop proficiency in various research methods applicable to Human-Computer Interaction (HCI), including qualitative, survey, and experimental research, gaining an understanding of the research process and literature review.
Gain practical experience in studying existing research, designing, and conducting HCI studies, with a focus on usability testing. This includes goal setting, user recruitment, task and environment design, test plan development, implementation, and result analysis.
Effectively conduct formal evaluations of products, covering crucial aspects such as goal setting, user recruitment, task and environment design, test plan development, result analysis, and the documentation and presentation of findings and recommendations in the context of HCID.
User Experience and User Interface (UX/UI) design is about understanding user needs and preferences, and creating digital products that meet those needs. Throughout this course, students will learn the fundamental skills and tools necessary to develop an effective user interface and experience.
Students will learn about the design thinking process, user personas and flows, customer journey mapping, and data visualization. They will also learn about the importance of collaboration between designers and developers, as well as how to test and iterate design.
The course covers essential topics such as Figma Pro, design system creation, mobile-first design, smart animation, and microcopy. Students will learn the process of designing from ideation to prototype creation, testing, and improvement, and understand how to work through iterations. The course includes an understanding of UX testing and its types, and working with analytics.
By the end of the course, students will have a clear understanding of how to create digital products that are aesthetically appealing and convenient for the user.
Mobile app design is a rapidly developing field that requires a deep understanding of user needs, technology, and UX design principles. This course aims to provide students with an in-depth understanding of various aspects involved in designing and developing cross-platform mobile applications using React Native. The course covers a wide range of topics, including React Native architecture, UI components, navigation, data management, user engagement, animation, and app store optimization.
Students will learn about the unique features of mobile app design, types of apps and technologies used in this field. The course emphasizes the importance of cross-platform compatibility, ensuring that the mobile apps created can run seamlessly on both iOS and Android platforms. The course will also cover familiarity with key design patterns for mobile apps, user engagement, animation, and preparing the app for publication.
Throughout the course, students will have the opportunity to work on real-world projects and assignments, allowing them to apply their learning to practical situations. They will learn how to analyze and evaluate different types of mobile apps and technologies used in mobile app design, as well as how to apply design principles and design patterns to create mobile app interfaces that are user-friendly and engaging.
In addition, the course covers important topics such as app store submission process and optimizing app performance, enabling students to prepare their mobile apps for publication.
This course explores the interdisciplinary field of Physical User Interface (PUI) design within the context of Human-Computer Interaction and Design. PUIs involve the interaction between users and digital systems through tangible, physical objects, presenting new challenges and opportunities for designers. As intelligent production environments evolve, the course addresses the question of whether existing design methods and tools are adequate or if more sophisticated approaches are required.
The curriculum initiates with a discussion on the necessity for advanced physical user interfaces with enhanced capabilities, establishing functional and non-functional requirements for an efficient design method.
The course introduces a model-based design approach, incorporating a comprehensive context model and modeling tools tailored for intelligent production environments. Through case studies and practical applications, students gain insights into the feasibility and effectiveness of the proposed design method. The course concludes with a critical examination of key characteristics, identifying areas for potential future improvements.
Key Intended Learning Outcomes:
Achieve proficiency in foundational principles of PUI design, encompassing tangible interaction, usability, and integration with intelligent production environments.
Apply design techniques specific to Physical User Interfaces within the broader context of Human-Computer Interaction, aiming to enhance user engagement and optimize interface usability.
Develop skills to present and articulate PUI designs effectively, ensuring clear understanding and alignment with user-centric design principles.
This course is designed to equip IT professionals with the soft skills and career strategies required for success in the technology industry. The course is project-based and covers a range of topics such as communication skills, teamwork, time management, leadership, networking, and career development.
The course covers the entire lifecycle of a technology project, from requirement gathering to delivery and maintenance. Students will learn how to communicate effectively with stakeholders, manage their time efficiently, lead a team, and collaborate effectively in a team environment.
The course also covers aspects of career development, such as networking and building professional relationships, creating a personal brand, and developing a career plan. Students will learn how to identify their strengths and weaknesses, and how to leverage their skills and experience to advance their careers in the technology industry.
Key Intended Learning Outcomes:
Develop and demonstrate effective communication skills.
Collaborate effectively in a team environment.
Develop and demonstrate leadership skills.
Build and maintain professional relationships.
Develop and execute a career plan.
This course provides a practical understanding of popular object-oriented design patterns so that students can reuse design strategies developed for commonly occurring problems in software development. We begin the course with a revision of object-oriented programming and an overview of UML (unified modelling language) diagrams to represent software design diagrammatically. We then dive into 10-12 most popular design patterns motivating each of them from real world scenarios. We would also showcase multiple opensource code bases which use the specific design pattern to solve a real-world design problem. This would help students gain an appreciation of how each of the theoretical patterns they learn actually translate to code. We also take up real world cases and dive into various design patterns that can be used to solve the problem. Sometimes, there could be multiple valid designs. We would five into the pros and cons of each design decision and trade-offs involved. Our objective is to build the problem-solving ability amongst students to recognize the appropriate design pattern to tackle a real-world problem. The module briefly discusses domain specific design patterns in their respective contexts.
This course builds upon the introductory JavaScript course to acquaint students of popular and modern frameworks to build the front end. We focus on one of the most popular and advanced frameworks/libraries in use – React.js. 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.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for handling matters arising in the context of front end development
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to how managers should handle front end development applications
Propose appropriate solutions to complex and changing problems pertaining to front end development
Every organization is building products to solve the pain points of its customers. Product managers are a critical part of an organization, who make sure that evolving customer needs, and market trends are observed and converted into delightful solutions which help businesses get its outcomes.
In this course, students will get a fundamental understanding of product management practices.
This will give them a comprehensive view of the complete product management life cycle.
Key Intended Learning Outcomes:
Assess, analyze, and criticize the various strategies for improving a product after launch
Compare and evaluate the different methodologies recommended in scholarly sources pertaining to measuring user engagement
Propose appropriate solutions to complex and changing problems of product success or failure in real-world engineering and science contexts
A business case study is a course designed for the learner to identify a business real world problem and its objective is to help students rigorously solve a real-world, technically-challenging business problem where they would apply all of the concepts, techniques and tools learnt in the program. Students typically pick a problem from a known business problem or identify business cases where data analytics can be used to solve a problem. The choosing of a topic can be done after discussing it with the course instructor(s). Students also have an option of choosing a business problem in their professional organization but the external supervisors should be approved by the instructor(s). Students start by identifying a business problem and proposing a methodology to solve the said business problem. Students then decide what technical and business tools will be used for the solution methodology. Students will first work on the real-world data, clean and process it using techniques learnt in this program. Students then will use algorithms and approach with a coding language and tool they think will get the best results. At the end of the case study student should be able to present the business problem and solution either via Jupyter notebooks or via a blog.
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.