Designed by IIT Guwahati

In collaboration with industry experts

The curriculum of the Micro-credit program in CSE from IIT Guwahati is designed keeping in mind the changing needs of the industry.

Course Outline

MTH101 - Mathematics for Computer Science

  • Foundations of Discrete Mathematics
  • Set Theory and Algebra
  • Logic and Proof Techniques
  • Combinatorics: Basic Counting Principles
  • Advanced Permutations and Combinations
  • Graph Theory Basics
  • Trees and Their Properties
  • Graph Coloring and Planarity
  • Introduction to Probability
  • Conditional Probability and Bayes' Theorem
  • Random Variables and Expectation
  • Discrete Probability Distributions
  • Continuous Probability Distributions
  • The Central Limit Theorem
  • Markov Chains and Processes
  • Game Theory and Strategic Behavior
  • Introduction to Statistics
  • Descriptive Statistics and Data Representation
  • Sampling Theory and Distributions
  • Estimation and Confidence Intervals
  • Hypothesis Testing Fundamentals
  • Analysis of Variance (ANOVA)
  • Regression and Correlation Analysis
  • Non-parametric Statistical Methods
  • Sequences and Series
  • Recurrence Relations and Generating Functions
  • Network Flows and Matching Theory
  • Mathematical Optimisation Techniques

CSE101 - Introduction to Computer Science & Programming

  • Introduction to Programming
  • Introduction To Java : Variable and Data Type
  • Mathematical Operator and Comparison Operator
  • Conditional Statements
  • While Loops and For Loops
  • Nested Loops
  • Arrays
  • Strings
  • Multidimensional Arrays
  • Functions
  • Classes and Functions
  • Inbuilt Functions
  • Primitive & Abstract Data Structures
  • Arrays & Strings
  • Brute Force Approach
  • Introduction to 2D Arrays
  • 3D Arrays and Multidimensional Arrays
  • Input Taking in Java
  • Key Value Pairs
  • Classes and Objects in Java
  • Inheritance and Method Overriding in Java
  • Interfaces, Multiple Inheritance, and Early/Late Binding in Java
  • Exception Handling in Java
  • Collections in Java - List, Set, and Map
  • File Handling in Java
  • Serialization in Java
  • Generics and Functional Programming in Java
  • Concurrency and Multithreading in Java

CSE201 - Data Structures and Algorithms

  • Complexity Analysis - Notations
  • Complexity Analysis - Deep Dive
  • Two Pointer Technique & Sliding Window Technique
  • Introduction to Algorithms - Selection Sort, Bubble Sort
  • Stack Data Structure - Intro
  • Queue Data Structure - Intro
  • Stacks & Queues - Advanced Implementation
  • Linked Lists - Intro & Variations
  • Binary Search - Intro
  • Binary Search - Lower Bound, Upper Bound
  • Introduction to Recursion, Journey from Iteration to Recursion
  • Execution of Recursive Functions
  • Complexity Analysis of Recursive Function, Why & When Recursion
  • Recursive Sorting Algorithms - Merge Sort & Quick Sort
  • Recursion and Backtracking Fundamentals
  • Advanced Recursion and Backtracking Techniques
  • Introduction to Greedy Technique
  • Implementing Greedy Algorithms in Practice
  • Introduction to Dynamic Programming
  • Dynamic Programming Techniques
  • Advanced Dynamic Programming Techniques
  • Introduction to Graphs and Trees
  • Graph Traversal Algorithms
  • Minimum Spanning Tree & Shortest Path Algorithms
  • Introduction to Binary Trees & Binary Search Trees
  • Balanced Binary Trees and Advanced Topics
  • Heaps and Priority Queues
  • Trie - Data Structures

CSE202 - Database Systems

  • Introduction to Database Systems
  • Relational Database Design
  • SQL Basics: Data Definition Language (DDL)
  • SQL Basics: Data Manipulation Language (DML)
  • Advanced SQL Querying
  • Join Operations in SQL
  • Subqueries and Nested Queries
  • Set Operations in SQL
  • Data Integrity and Transactions
  • Indexing and Optimisation
  • Views and Stored Procedures
  • Triggers and Events
  • Advanced Data Types
  • Managing Large Datasets
  • User Management and Security
  • Database Maintenance and Administration
  • SQL Performance Tuning
  • Case Study: Designing a Real-World SQL Database
  • Introduction to NoSQL and MongoDB
  • MongoDB Basics: CRUD Operations
  • Data Modeling in MongoDB
  • Advanced Queries in MongoDB
  • Indexing and Performance Tuning in MongoDB
  • Aggregation Framework
  • Replication and Sharding
  • MongoDB Security
  • Managing MongoDB
  • Databases Way forward

CSE301 - Principles of Computer System Design & Architecture

  • Introduction to System Design
  • System Design Tools and Techniques
  • Distributed Systems
  • Network Protocols and Technologies
  • Network Security
  • Operating System Fundamentals
  • Processes and Threads in OS
  • Memory Management in OS
  • File Systems in OS
  • Network Operating Systems
  • Low-Level Design (LLD)
  • High-Level Design (HLD)
  • Cloud Computing Fundamentals
  • Cloud Networking
  • Cloud Security
  • Introduction to Cloud Computing and AWS
  • AWS Services
  • Deploying and Managing Applications on AWS
  • AWS Security
  • AWS Architecture and Best Practices
  • Virtualisation Technologies and Containers
  • Scalability and Load Balancing
  • Microservices Architecture
  • Database Design for Scalability
  • Monitoring, Logging, and Alerting
  • CI/CD Pipelines and Automation
  • Performance Tuning and Optimisation
  • Scalable System Design

Course Details

MTH101 - Mathematics for Computer Science

  • Foundations of Discrete Mathematics: Explore the building blocks of mathematics focusing on structures that are fundamentally discrete rather than continuous. Understand the importance of integers, graphs, and statements in computer science.
  • Set Theory and Algebra: Dive into the concepts of sets, subsets, and various operations among them, alongside an introduction to algebraic structures that underpin computer algorithms.
  • Logic and Proof Techniques: Learn the principles of formal logic, including propositions, logical connectives, and how to construct rigorous mathematical proofs.
  • Combinatorics: Basic Counting Principles: Master the art of counting without counting through fundamental principles such as the rule of sum, rule of product, and pigeonhole principle.
  • Advanced Permutations and Combinations: Delve deeper into complex counting strategies involving permutations and combinations, focusing on problems with restrictions and repetitions.
  • Graph Theory Basics: Introduction to graph theory, covering concepts of vertices, edges, paths, and cycles, foundational for understanding networks and algorithms.
  • Trees and Their Properties: Study trees, a special class of graphs, exploring their properties, types, and applications in data structures and algorithm design.
  • Graph Coloring and Planarity: Learn about graph coloring problems and planar graphs, including applications in scheduling problems and map coloring.
  • Introduction to Probability: Cover the basics of probability theory, including the calculation of probabilities, probability spaces, and events.
  • Conditional Probability and Bayes' Theorem: Explore the concepts of conditional probability, independence, and Bayes' Theorem, with applications in decision-making and inference.
  • Random Variables and Expectation: Introduce random variables, expectation values, and their significance in predicting outcomes in probabilistic models.
  • Discrete Probability Distributions: Study probability distributions that are discrete, focusing on binomial, geometric, and Poisson distributions.
  • Continuous Probability Distributions: Shift focus to continuous variables, exploring key distributions such as the normal and exponential distributions.
  • The Central Limit Theorem: Understand the Central Limit Theorem and its crucial role in the approximation of distributions and inferential statistics.
  • Markov Chains and Processes: Learn about Markov Chains and their applications in modeling stochastic processes that evolve over time.
  • Game Theory and Strategic Behavior: An introduction to game theory, exploring how individuals make decisions in strategic situations.
  • Introduction to Statistics: Establish the basics of statistical analysis, focusing on the collection, analysis, interpretation, presentation, and organization of data.
  • Descriptive Statistics and Data Representation: Learn how to summarize and visualize datasets using various measures of central tendency and dispersion.
  • Sampling Theory and Distributions: Dive into the principles of sampling and the distribution of sample statistics, foundational for inferential statistics.
  • Estimation and Confidence Intervals: Explore estimation theory with a focus on constructing confidence intervals for population parameters.
  • Hypothesis Testing Fundamentals: Understand the methodology and logic behind testing hypotheses about population parameters.
  • Analysis of Variance (ANOVA): Learn about ANOVA, a statistical method used to compare the means of three or more samples.
  • Regression and Correlation Analysis: Study the techniques for modeling and analyzing relationships between variables using regression and correlation.
  • Non-parametric Statistical Methods: Explore statistical methods that do not assume a specific distribution for the data, useful for analyzing ordinal data or non-normal distributions.
  • Sequences and Series: Understand the concepts of sequences and series, including convergence and divergence, and their applications in mathematical modeling.
  • Recurrence Relations and Generating Functions: Learn about solving recurrence relations and using generating functions, crucial for understanding algorithms' efficiencies.
  • Network Flows and Matching Theory: Study the optimization of network flow and the theory of matching, with applications in logistics and resource allocation.
  • Mathematical Optimisation Techniques: Delve into optimization problems and techniques, including linear programming and gradient methods, applied in various fields of science and engineering.

CSE101 - Introduction to Computer Science & Programming

  • Introduction to Programming: Discover the fundamentals of programming, including algorithm design, flowcharts, and the significance of coding in solving real-world problems.
  • Introduction To Java: Variable and Data Type: Learn about Java programming basics, focusing on variables, data types, and how to store information.
  • Mathematical Operator and Comparison Operator: Explore how to perform arithmetic operations and make comparisons in Java, a crucial step in data manipulation and decision making.
  • Conditional Statements: Dive into conditional logic in Java, using if-else statements to execute code based on specific conditions.
  • While Loops and For Loops: Master the art of repetition in Java through while and for loops, enabling efficient code execution multiple times.
  • Nested Loops: Understand the concept of loops within loops, a powerful tool for solving complex problems involving multiple levels of iteration.
  • Arrays: Learn how to store and manipulate collections of data in Java using arrays, a fundamental concept for handling multiple data elements.
  • Strings: Explore string manipulation in Java, including string creation, concatenation, and common string methods.
  • Multidimensional Arrays: Delve into arrays with more than one dimension, crucial for representing complex data structures like matrices.
  • Functions: Understand how to define and use functions in Java to modularize and reuse code efficiently.
  • Classes and Functions: Introduce object-oriented programming concepts, focusing on classes, objects, and methods to encapsulate and organize code.
  • Inbuilt Functions: Explore Java's rich library of inbuilt functions for performing a variety of tasks, from mathematical calculations to string handling.
  • Primitive & Abstract Data Structures: Discuss the basic and advanced data structures in Java, including their implementation and usage.
  • Arrays & Strings: Revisit arrays and strings, focusing on advanced manipulation techniques and algorithms for processing data.
  • Brute Force Approach: Learn about the brute force algorithmic strategy, focusing on its simplicity and applications in solving computational problems.
  • Introduction to 2D Arrays: Explore the concept and applications of two-dimensional arrays in Java for representing tabular data.
  • 3D Arrays and Multidimensional Arrays: Extend understanding to three-dimensional and multidimensional arrays for complex data representation and manipulation.
  • Input Taking in Java: Master the methods for taking input from users in Java, essential for interactive applications.
  • Key Value Pairs: Learn about key-value pairs in Java, a foundational concept for understanding data storage and retrieval mechanisms.
  • Classes and Objects in Java: Dive deeper into object-oriented programming, focusing on defining classes and creating objects to model real-world entities.
  • Inheritance and Method Overriding in Java: Explore the concept of inheritance in Java, allowing for code reuse and extension, and understand how to override methods in subclasses.
  • Interfaces, Multiple Inheritance, and Early/Late Binding in Java: Learn about interfaces and the concept of multiple inheritance in Java, along with the differences between early and late binding.
  • Exception Handling in Java: Master the techniques for handling errors and exceptions in Java, ensuring robust and error-free code.
  • Collections in Java - List, Set, and Map: Explore the Collections Framework in Java, including the use of lists, sets, and maps for efficient data storage and manipulation.
  • File Handling in Java: Understand how to read from and write to files in Java, a critical skill for persistent data storage.
  • Serialization in Java: Learn about serialization in Java, enabling objects to be converted into a format that can be stored or transmitted and then reconstructed.
  • Generics and Functional Programming in Java: Dive into generics for type-safe code and explore the concepts of functional programming in Java, focusing on lambda expressions and stream API.
  • Concurrency and Multithreading in Java: Delve into the concepts of concurrency and multithreading in Java, exploring how to write programs that execute multiple tasks simultaneously for improved performance and efficiency. Learn about creating, managing, and synchronizing threads to build responsive and high-performance Java applications.

CSE201 - Data Structures and Algorithms

  • Complexity Analysis - Notations: Learn the fundamental notations of complexity analysis, including Big O, Big Theta, and Big Omega, to evaluate the efficiency of algorithms.
  • Complexity Analysis - Deep Dive: Delve deeper into analyzing and comparing algorithm performance beyond basic notations, understanding worst, average, and best-case scenarios.
  • Two Pointer Technique & Sliding Window Technique: Explore these techniques for solving array and string problems efficiently, optimizing space and time complexity.
  • Introduction to Algorithms - Selection Sort, Bubble Sort: Understand the basic sorting algorithms, their mechanisms, and applications, laying the groundwork for more complex sorting methods.
  • Stack Data Structure - Intro: Learn about the stack data structure, its LIFO (Last In, First Out) principle, and its applications in computer science.
  • Queue Data Structure - Intro: Understand the queue data structure, its FIFO (First In, First Out) principle, and how it's implemented in various computational scenarios.
  • Stacks & Queues - Advanced Implementation: Dive into advanced topics in stacks and queues, including circular queues and priority queues, and their practical implementations.
  • Linked Lists - Intro & Variations: Introduce linked lists, discussing their types (singly, doubly, circular) and advantages over traditional array data structures.
  • Binary Search - Intro: Cover the basics of binary search, a fundamental algorithm for efficiently finding a target value within a sorted array.
  • Binary Search - Lower Bound, Upper Bound: Explore advanced concepts in binary search, including techniques to find the lower and upper bounds of a value in a sorted array.
  • Introduction to Recursion, Journey from Iteration to Recursion: Transition from iterative to recursive approaches, understanding how problems can be broken down into simpler, self-similar problems.
  • Execution of Recursive Functions: Delve into how recursive functions are executed in memory, understanding the call stack and how to trace recursive calls.
  • Complexity Analysis of Recursive Function, Why & When Recursion: Analyze the time and space complexity of recursive functions and understand scenarios where recursion is the most effective approach.
  • Recursive Sorting Algorithms - Merge Sort & Quick Sort: Learn about sorting algorithms that utilize recursion, understanding their mechanisms, and analyzing their efficiencies.
  • Recursion and Backtracking Fundamentals: Introduce the concept of backtracking, a method of solving problems by trying to build a solution incrementally and abandoning solutions that fail to satisfy the constraints of the problem.
  • Advanced Recursion and Backtracking Techniques: Explore complex problems solvable by recursion and backtracking, enhancing problem-solving skills and understanding of recursive algorithms.
  • Introduction to Greedy Technique: Understand the greedy algorithm approach, where local optimum choices are made with the hope of finding a global optimum.
  • Implementing Greedy Algorithms in Practice: Apply the greedy technique to solve problems such as job scheduling, graph coloring, and making change, emphasizing the choice of algorithm for specific problem types.
  • Introduction to Dynamic Programming: Introduce dynamic programming as a method for solving complex problems by breaking them down into simpler subproblems.
  • Dynamic Programming Techniques: Learn about memoization and tabulation techniques in dynamic programming for optimizing the computational overhead of recursive solutions.
  • Advanced Dynamic Programming Techniques: Explore advanced topics in dynamic programming, including handling complex constraints and optimizing space usage.
  • Introduction to Graphs and Trees: Introduce the concepts of trees and graphs, fundamental data structures for representing hierarchical and networked data.
  • Graph Traversal Algorithms: Learn about depth-first search (DFS) and breadth-first search (BFS) for traversing or searching tree or graph data structures.
  • Minimum Spanning Tree & Shortest Path Algorithms: Understand algorithms like Kruskal's, Prim's, Dijkstra's, and Bellman-Ford for finding the minimum spanning trees and shortest paths in graphs.
  • Introduction to Binary Trees & Binary Search Trees: Cover the basics of binary trees and binary search trees, including their properties, operations, and applications.
  • Balanced Binary Trees and Advanced Topics: Dive into balanced tree structures like AVL trees and Red-Black trees, ensuring efficient operations by maintaining tree balance.
  • Heaps and Priority Queues: Understand the heap data structure and its implementation of priority queues, crucial for efficient sorting and priority-based task scheduling.
  • Trie - Data Structures: Explore tries, a specialized tree-like data structure for storing dynamic sets of strings, optimizing search, insert, and delete operations.

CSE202 - Database Systems

  • Introduction to Database Systems: Explore the fundamentals of database systems, their importance in modern computing, and an overview of database architectures.
  • Relational Database Design: Learn the principles of designing relational databases, focusing on schema design, normalization, and entity-relationship models.
  • SQL Basics: Data Definition Language (DDL): Understand how to use SQL's DDL to define, alter, and manage database schemas.
  • SQL Basics: Data Manipulation Language (DML): Learn how to use SQL's DML to insert, update, delete, and query data in databases.
  • Advanced SQL Querying: Dive into complex SQL features, including advanced functions, conditional expressions, and how to optimize queries.
  • Join Operations in SQL: Explore the different types of joins in SQL and their applications in combining rows from two or more tables.
  • Subqueries and Nested Queries: Understand the use of subqueries and nested queries in SQL for complex data retrieval scenarios.
  • Set Operations in SQL: Learn about SQL set operations like UNION, INTERSECT, and EXCEPT, and their use in querying databases.
  • Data Integrity and Transactions: Discover the concepts of data integrity and transactions, including transaction management and isolation levels.
  • Indexing and Optimisation: Understand the role of indexing in optimizing database queries and how to effectively use indexes for faster data retrieval.
  • Views and Stored Procedures: Learn about creating and using views and stored procedures to encapsulate SQL queries and logic.
  • Triggers and Events: Explore the use of triggers and events in databases to automatically execute SQL statements in response to specific changes or events.
  • Advanced Data Types: Delve into advanced data types supported by modern database systems, including JSON, XML, and spatial data.
  • Managing Large Datasets: Understand strategies for managing large datasets, including partitioning, compression, and efficient data storage techniques.
  • User Management and Security: Learn about database security principles, including user management, access control, and securing data against unauthorized access.
  • Database Maintenance and Administration: Explore the tasks involved in database maintenance, including backup and recovery, performance monitoring, and tuning.
  • SQL Performance Tuning: Dive deeper into techniques for tuning SQL queries and databases to improve performance and resource efficiency.
  • Case Study: Designing a Real-World SQL Database: Apply the concepts learned through a case study involving the design and implementation of a real-world SQL database.
  • Introduction to NoSQL and MongoDB: Explore the principles of NoSQL databases, focusing on their types, use-cases, and an introduction to MongoDB.
  • MongoDB Basics: CRUD Operations: Learn the basics of performing Create, Read, Update, and Delete (CRUD) operations in MongoDB.
  • Data Modeling in MongoDB: Understand how to model data in MongoDB, covering concepts like documents, collections, and schema design.
  • Advanced Queries in MongoDB: Explore advanced querying techniques in MongoDB, including aggregation and complex query operations.
  • Indexing and Performance Tuning in MongoDB: Learn about indexing strategies and performance tuning in MongoDB for optimizing query performance.
  • Aggregation Framework: Dive into MongoDB's aggregation framework, a powerful tool for performing complex data processing and analysis.
  • Replication and Sharding: Understand the concepts of replication and sharding in MongoDB for high availability and scalability.
  • MongoDB Security: Learn about securing MongoDB instances, including authentication, authorization, and encryption practices.
  • Managing MongoDB: Explore administration and management practices for MongoDB, including monitoring, backup, and recovery.
  • Databases Way forward: Discuss the future trends in database technology, including emerging database models, scalability challenges, and the evolution of database systems.

CSE301 - Principles of Computer System Design & Architecture

  • Introduction to System Design: Explore the fundamentals of system design, focusing on the process of defining the architecture, components, and interfaces of systems.
  • System Design Tools and Techniques: Learn about the tools and techniques used in the design of computer systems, including UML diagrams and architectural patterns.
  • Distributed Systems: Delve into the principles of distributed systems, understanding how components located on networked computers communicate and coordinate their actions.
  • Network Protocols and Technologies: Explore the foundational protocols and technologies that enable computer networking, including TCP/IP, DNS, and HTTP.
  • Network Security: Understand the challenges and strategies related to securing computer networks against unauthorized access and attacks.
  • Operating System Fundamentals: Cover the basic concepts and components of operating systems, including process management, memory management, and file systems.
  • Processes and Threads in OS: Learn about process and thread management in operating systems, including scheduling, synchronization, and communication.
  • Memory Management in OS: Dive into memory management techniques in operating systems, including paging, segmentation, and virtual memory.
  • File Systems in OS: Explore how operating systems manage file storage, including file systems organization, directory structures, and file access methods.
  • Network Operating Systems: Understand the role and architecture of network operating systems that manage network resources and provide services over a network.
  • Low-Level Design (LLD): Focus on the details of system design at a low level, including module design, data flow diagrams, and detailed class diagrams.
  • High-Level Design (HLD): Explore the conceptual and logical design aspects of systems, focusing on system architecture, components, and high-level interactions.
  • Cloud Computing Fundamentals: Introduce the basics of cloud computing, including service models (IaaS, PaaS, SaaS) and deployment models (public, private, hybrid).
  • Cloud Networking: Learn about networking in the cloud, including virtual networks, cloud routing, and content delivery networks.
  • Cloud Security: Understand the security challenges in cloud computing and learn about the strategies and tools for securing cloud environments.
  • Introduction to Cloud Computing and AWS: Provide an overview of cloud computing with a focus on Amazon Web Services (AWS), covering its core services and benefits.
  • AWS Services: Dive deeper into AWS, exploring its key services such as EC2, S3, RDS, Lambda, and how they are used to build scalable applications.
  • Deploying and Managing Applications on AWS: Learn about deploying and managing applications on AWS, including deployment models, scaling, and monitoring.
  • AWS Security: Cover the security features and best practices for securing applications and data on AWS.
  • AWS Architecture and Best Practices: Explore the architectural principles and best practices for designing and operating reliable, secure, efficient, and cost-effective systems on AWS.
  • Virtualisation Technologies and Containers: Understand the concepts of virtualization and containerization, including hypervisors, VMs, Docker, and Kubernetes.
  • Scalability and Load Balancing: Learn about strategies for scaling applications and distributing traffic among resources to ensure performance and availability.
  • Microservices Architecture: Delve into the principles of microservices architecture, including its benefits, challenges, and implementation strategies.
  • Database Design for Scalability: Explore strategies for designing databases that can scale effectively to handle large volumes of data and high levels of traffic.
  • Monitoring, Logging, and Alerting: Understand the importance of monitoring, logging, and alerting in maintaining the health and performance of systems.
  • CI/CD Pipelines and Automation: Learn about continuous integration, continuous delivery, and automation pipelines for efficiently deploying and managing applications.
  • Performance Tuning and Optimisation: Explore techniques for tuning and optimizing the performance of computer systems, including profiling, benchmarking, and optimization strategies.
  • Scalable System Design: Conclude with advanced concepts in designing systems that are scalable, resilient, and maintainable, focusing on practical approaches to solving scalability challenges.