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. 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
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
The ability to solve problems is a skill, and just like any other skill, the more one practices, the better one gets. So how exactly does one practice problem solving? Learning about different problem-solving strategies and when to use them will give a good start. Problem solving is a process. Most strategies provide steps that help you identify the problem and choose the best solution.
Building a toolbox of problem-solving strategies will improve problem solving skills. With practice, students will be able to recognize and choose among multiple strategies to find the most appropriate one to solve complex problems. The course will focus on developing problem-solving strategies such as abstraction, modularity, recursion, iteration, bisection, and exhaustive enumeration.
The course will also introduce arrays and some of their real-world applications, such as prefix sum, carry forward, subarrays, and 2-dimensional matrices. Examples will include industry-relevant problems and dive deeply into building their solutions with various approaches, recognizing each’s limitations (i.e when to use a data structure and when not to use a data structure).
By the end of this course a student can come up with the best strategy which can optimize both time and space complexities by choosing the best data structure suitable for a given problem.
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 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.
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Structured Query Language (SQL) is key to working with data in relational databases, a task at the core of data science and analytics. In this course, students will learn all the major keywords and clauses used to extract data, best practices for formatting SQL queries, and how to generate meaningful insights from the results.
The focus is at all times on real-world uses of SQL queries, syntax, and expression, to allow students to begin professional-level work as quickly as possible.
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 module focuses on representing statistical techniques in code, and may be conducted in Python, R, or another relevant language. Such languages provide libraries that can handle a wide variety of statistical techniques like linear and nonlinear modeling, classical statistical tests, time-series analysis, classification, clustering and graphical techniques, and is highly extensible.
Learning to work in statistically-oriented programming language environments can equip you with the following skills among many others:
An effective way of data handling (using arrays for example) and storing data in a structured manner.
Expertise in diverse tools and libraries for Data Analysis
Ability to present complex data in a graphical and visual format for easy understanding of the data and further solutions.
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 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 introduces basic probability theory , statistical methods and computational algorithms to perform mathematically rigorous data analysis. The course starts with basic foundational concepts of random variables, histograms, and various plots (PMF, PDF and CDF). Students learn various popular discrete and continuous distributions like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, log-normal etc., both mathematically and from an applicative perspective. Students learn various measures like mean, median, percentiles, quantiles, variance and interquartile-range. Students learn the pros and cons of each metric and understand when and how to use them in practice. Studnets will learn conditional probability and Bayes theorem in the applied context of real-world problems in medicine and healthcare. The module teaches the foundations of non-parametric statistics and applies them to solve problems using computational tools. Students learn various methods to determine correlations rigorously in data. This is followed by applied and mathematical understanding of the statistics underlying control-treatment (A/B) experiments and hypothesis testing. The module engages computation tools in modern statics like Bootstrapping, Monte-Carlo methods, RANSAC etc.
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 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 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.
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 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 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
The ability to solve problems is a skill, and just like any other skill, the more one practices, the better one gets. So how exactly does one practice problem solving? Learning about different problem-solving strategies and when to use them will give a good start. Problem solving is a process. Most strategies provide steps that help you identify the problem and choose the best solution.
Building a toolbox of problem-solving strategies will improve problem solving skills. With practice, students will be able to recognize and choose among multiple strategies to find the most appropriate one to solve complex problems. The course will focus on developing problem-solving strategies such as abstraction, modularity, recursion, iteration, bisection, and exhaustive enumeration.
The course will also introduce arrays and some of their real-world applications, such as prefix sum, carry forward, subarrays, and 2-dimensional matrices. Examples will include industry-relevant problems and dive deeply into building their solutions with various approaches, recognizing each’s limitations (i.e when to use a data structure and when not to use a data structure).
By the end of this course a student can come up with the best strategy which can optimize both time and space complexities by choosing the best data structure suitable for a given problem.
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 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.
Spreadsheets for Data Understanding introduces students to the principles and techniques of data cleaning, handling data sets of varying sizes, and visualizing data/data storytelling. Students will also learn the basics of predictive modelling from data sets. These are all introduced through the means of Microsoft Excel, the industry-standard spreadsheet program. Students will learn how to use inbuilt functions, as well as techniques such as creating and modifying pivot tables.
Structured Query Language (SQL) is key to working with data in relational databases, a task at the core of data science and analytics. In this course, students will learn all the major keywords and clauses used to extract data, best practices for formatting SQL queries, and how to generate meaningful insights from the results.
The focus is at all times on real-world uses of SQL queries, syntax, and expression, to allow students to begin professional-level work as quickly as possible.
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 module focuses on representing statistical techniques in code, and may be conducted in Python, R, or another relevant language. Such languages provide libraries that can handle a wide variety of statistical techniques like linear and nonlinear modeling, classical statistical tests, time-series analysis, classification, clustering and graphical techniques, and is highly extensible.
Learning to work in statistically-oriented programming language environments can equip you with the following skills among many others:
An effective way of data handling (using arrays for example) and storing data in a structured manner.
Expertise in diverse tools and libraries for Data Analysis
Ability to present complex data in a graphical and visual format for easy understanding of the data and further solutions.
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 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 introduces basic probability theory , statistical methods and computational algorithms to perform mathematically rigorous data analysis. The course starts with basic foundational concepts of random variables, histograms, and various plots (PMF, PDF and CDF). Students learn various popular discrete and continuous distributions like Bernoulli, Binomial, Poisson, Gaussian, Exponential, Pareto, log-normal etc., both mathematically and from an applicative perspective. Students learn various measures like mean, median, percentiles, quantiles, variance and interquartile-range. Students learn the pros and cons of each metric and understand when and how to use them in practice. Studnets will learn conditional probability and Bayes theorem in the applied context of real-world problems in medicine and healthcare. The module teaches the foundations of non-parametric statistics and applies them to solve problems using computational tools. Students learn various methods to determine correlations rigorously in data. This is followed by applied and mathematical understanding of the statistics underlying control-treatment (A/B) experiments and hypothesis testing. The module engages computation tools in modern statics like Bootstrapping, Monte-Carlo methods, RANSAC etc.
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 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 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.
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