UG Courses

Core Course:

Code Course Name No. of Credit Curently Offerings
Brief List of Topics Detailed Course Template

Topics include sets, relations, functions, logic and proofs, mathematical induction, combinatorics and basic graph theory.


This course introduces the basics of data structures and algorithms. Topics span across basic data structures (e.g., arrays, stacks, linked lists, queues, heaps, etc.), algorithm analysis (e.g., asymptotic analysis, master theorem, etc.), search Trees (e.g., AVL Trees, redblack trees, etc.), sorting (e.g., quick sort, linear time sorting, order statistics, etc.), hashing (e.g., dictionaries, tries, etc.) and Graphs (e.g., graph data structures, graph traversal algorithms such as BFS and DFS, minimum spanning Tree, shortest path algorithms, etc.)

Click here to view



Introduction: Motivation to study concepts of programming languages and introduction to major language families Compiler Design: Introduction to Regular Expressions, Syntax Analysis, Lexical Analysis. Implementation using Lex/Yacc. Foundations: Covers fundamental semantic issues of variables with emphasis on Names, Binding,Scope, Lifetime and Type Checking , Core Design Constructs: Covers issues that lie at the core of most programming languages: Data Types, Control Flow, Subroutines, Abstraction & Object Orientation, Alternative Programming Models:Introduction to Functional and Logic Programming Languages, Concurrency: Basic introduction to the fundamentals of Concurrency including communication, synchronization, creation and implementation of threads.

Click here to view

Digital System: Introduction to digital logic and digital system, digital logic states, number systems,Boolean algebra and logic minimization: Boolean functions, expressions, minimizations of Boolean functions, K maps, QM method, two level and multiple level logic. Combinational logic design: Basic components: adder, multiplexer, decoder, ROMs, programmable logic, Introduction to HDL and FPGA. Arithmetic circuits. Synchronous sequential logic design: Flip-flops and latches, finite state machines – mealy and moore, state assignment and state minimizations. Counters, registers, and memories. Top down approach of digital design: Data path-control path design, register transfer level design, pipelining and parallelism. Case studies. Advanced issues in digital design: Parallelism, IP blocks and reuse,timing issues, faults and testing. Technology aspects: FPGA and ASICs, logic mapping and binding, introduction to logic synthesis and EDA tools

Click here to view

This course goes deep into the design and analysis of algorithms. Topics include: advanced data structures (e.g., interval and range trees, segment trees, splay trees), divide and conquer techniques (e.g., karatsuba integer multiplication algorithm, mergesort, strassen’s matrix multiplication algorithm, fast fourier transform, etc.), dynamic programming (e.g., longest increasing subsequence, knapsack problem, matrix chain multiplication, bellman-Ford and Floyd-Warshall algorithms, etc.), greedy algorithms (e.g., minimum spanning trees, huffman coding, etc.), network flows (e.g., ford-fulkerson algorithm, bipartite matching, etc.), NP-completeness reductions and miscellaneous algorithms (e.g., number-theoretic algorithms, euclid's algorithm, modular arithmetic, etc.)

Click here to view

This course is an introduction to the formal models of computation. Topics include finite automata, regular languages, pushdown automata, context-free languages, linear bounded automata, context-sensitive languages, Turing machine and recursively enumerable languages. The course also covers the limits of computation: computational problems that cannot be solved by any algorithms (the undecidable languages), and the problems that are decidable but require almost certainly large computational resources (the intractable problems).

Click here to view

Introduction to computer architecture: Introduction to computer architecture, program performance, history and current state of the art. Stored program concept. Machine level representation of programs: Instruction set architecture, Assembly language, programmer’s prospective, instruction encoding. Case studies. Processor design: Single cycle processor – data path and control path design, pipelined processor design, hazards, data forwarding and branch prediction. Exceptions and interrupts. Memory organization: Caches, main memory and virtual memory. Secondary storages. Optimizing program performance: Performance, role of compiler optimizations, architecture specific code optimizations, cache aware code optimizations. System prospective: Input/output devices, DMA, busses and interconnect system on chip,multi processors.

Click here to view

This course covers some of the fundamental topics relating to Database Systems including relational model, SQL queries, ER models, functional dependency theory, normalization, file structures, index structures, query processing algorithms, query optimization, transaction processing and some trend topics (e.g., Data Warehousing, Deductive databases, etc.).

Click here to view

This course covers some of the fundamental topics relating to Operating Systems. Topics include processes (process concept, multithreading and Scheduling), synchronization techniques, memory management techniques, file systems, Input/output implementation and management.

Click here to view

This course covers some of the fundamental topics relating to computer networks. Topics include: introduction to protocol layering, TCP/IP architecture, circuit switching, packet switching, access networks, physical media, roles of different layers, data link layer (address resolution protocol, Wireless LAN's, error detection and correction, etc.), network layer (routing versus forwarding, routing in the Internet, Internet Protocol, multicast routing, etc.), transport layer (TCP/IP, UDP, principles of reliable data transfer, connection-oriented transport TCP, flow control and congestion control), application layer (world wide web, file transfer protocol, socket programming, etc.), network security, wireless and mobile networks.

Click here to view

Topics include software processes (software development lifecycle), software process models and activities, modeling (requirements, design concepts and modeling), design and implementation (Object-oriented design using UML), implementation issues and use of design patterns, software testing (regression testing, Integration testing, test generation), software management (estimation techniques, Configuration management)

Click here to view