Courses
ID1303  Programming in C/C++ with Lab 


Introduction to C and C++ programming. Problem solving and algorithms. Input and output operations, decision control structure, loop control structure, arrays, strings, etc. Pointers, arrays, structures, functions, file operations, classes, object oriented programming. Lab is also included in this course. 
CS1310  Discrete Structures I 

Concept of Mathemaical Proof, Logic, Proof by contradiction, Mathematical Induction, Constructive Proofs, Sets, Relations. Illustration of Proof Techniques in various mathematical topics 
CS1340  Discrete Structures II 

Combinatorics. Basic Counting Principles, Inclusion  Exclusion, Binomial/Multinomial Coefficients, Bijections, Double Counting, PigeonHole Principle, Recurrence Relations. Introduction to Graphs. Degree, Isomorphism, Diameter, Connectivity, Trees, Matchings, Colorings, Planarity. 
CS1353  Introduction to Data Structures 

Abstract Data Types, BigOh Notation, Basic Data Types, Stacks, Queues, Trees 
CS2233  Data Structures 

More Data Types. Dictionaries. Binary Search Trees, Balanced Search Trees, Hash Tables, Heaps, Priority Queues, Graphs 
CS2323  Computer Architecture 

The objective of this course is to teach fundamentals of Computer Architecture to CSE undergraduate students. The course would cover the following topics Instruction Set Architecture, Micro Architecture, Architecture and Performance, Arithmetic Operations in Processors, Enhancing performance with pipelining, Memory SubSystem Cache and Virtual Memory, Input / Output Organization. 
CS2400  Principles of Programming Languages  I 

Programming Language Syntax, Basics of Compilers, Names, Scopes and Bindings, Control Flow, Data Types, Subroutines and Control Abstraction, Various paradigms of Programming Languages. 
CS2410  Theory of Computation 

Alphabets, languages, finite state machines  deterministic and nondeterministic finite automata. Context Free Grammars, Context Free Languages, Parse trees, Push Down Automata, Pumping lemma for CFLs and applications, CYK algorithm Turing machines, Variants, Undecidability theory 
CS2420  Introduction to Complexity Theory 

Time and Space bounded computation. Reductions, theory of NP completeness, Introduction to time and space complexity. 
CS2433  Principles of Programming LanguagesII 

Functional programming, Object Oriented programming, Logic programming, Lambda calculus, Concurrency, Scripting languages, Programming language semantics. 
CS2443  Algorithms 

Algorithmic Design Paradigms, Divide and Conquer, Analysis for Divide and Conquer, Sorting, Greedy Algorithms. Dynamic Programming, Graph Algorithms (DFS, BFS, Topological Sort, Single Source Shortest Path, Spanning Trees, All Pair Shortest Path, Matching, Max Flow), FFT. 
CS3303  Software Technologies 

Latest technologies like Java Script, JSP, Python, Android, Perl, etc to design software artifacts. 
CS3320  Compilers I 

Syntax directed translators, Finite automata, Regular Expressions, Lexical analysis, Context free languages and grammars, Syntactic analysis, Bottomup and Topdown Parsing, Syntax directed translation, Lex and yacc as tools for lexical analysis and parsing. 
CS3423  Compilers II 

Review of compilation process, semantic analysis, intermediate code generation, runtime, code generation, introduction to simple machine independent optimizations. 
CS3510  Operating Systems I 

History of OSs, Concurrency vs parallelism, Overview of Process management, Memory management, File systems 
CS3523  Operating Systems II 

Process management process states, process vs thread, scheduling algorithms, system calls, IPC. Process synchronization Semaphores, Monitors, Deadlocks, Main memory Paging system, File system; Virtual memory demand paging and page replacement algorithms, File system implementation, Disk management, and I/O management; Case studies on Windows/Linux OSs. Programming assignments related to OS features and their implementation. Further, students enhance functionalities of opensource toy OS named Minix3 by Andrew S. Tanenbaurm as part of the group projects. 
CS3530  Computer NetworksI 

Basics and History of Computer Networks, TCP/IP protocol stack, Application layer (WWW, Email, DNS), Protocols at Transport layer, Network layer and Data link layer. Lab ClientServer Design using Socket programming in C/C++/Java; Wireshark assignments on DNS, HTTP, DHCP, TCP, UDP, IP, Ethernet, ARP, etc. 
CS3543  Computer NetworksII 

Network congestion, TCP vs UDP, IPv4 vs IPv6, Routing algorithms, Routing in Internet, ARQ protocols, Local Area Networks (Ethernet, WiFi) and Multimedia Networking; Implementation of multithreaded Web Server/Web Proxy with Caching/Filtering features, Sliding Window protocol implementation, performance study of various TCP/IP variants. Handson with Cisco/HP routers. 
CS3550  Introduction to Database Management Systems 

Purpose and evolution of database management systems, Relational model of data, Formal relational languages (relational algebra/calculus), SQL, Introduction to database design 
CS3563  Database Management Systems (with Lab) 

Advanced SQL (procedures/functions/triggers), Database design and normal forms, Database application development, Storage structures and indexing/hashing, Query processing and optimization, Transactions, Lockbased concurrency control. 
CS4443  Software Engineering (includes Lab) 

Introduction to Software Engineering Importance, challenges, approaches. Software Processes. Requirements Engineering, Software Architecture, Planning, Design, Coding, Testing, Software Project Management, Advanced topics like Formal Methods in Software Engineering 
CS5020  Pattern Recognition 

Basics of pattern recognition, Bayesian decision theory, Classifiers, Discriminant functions, Decision surfaces, Parameter estimation methods, Hidden Markov models, dimension reduction methods, Fisher discriminant analysis, Principal component analysis, Nonparametric techniques for density estimation, nonmetric methods for pattern classification, unsupervised learning, algorithms for clustering Kmeans, Hierarchical and other methods 
CS5030  Advanced Topics in Data Management 

Parallel and distributed database systems. Advanced query processing & optimization – Volcano optimizer, decorrelation techniques, holistic optimization of database applications. Adaptive query processing. Streaming databases. Data warehousing and OLAP. Spatial databases and indexing of spatial data. XML. 
CS5060  Advanced Computer Networks 

Basics of Computer Networking, TCP/IP protocol stack, Local Area Networks (Ethernet, WiFi), Network Management, Network Security, Multimedia Transport, Next generation Internet architectures, Green Communication Networks, and Data Center Networking. Performance studies using QualNet simulator and lab assignments using Seattle GENI testbed. 
CS5190  Soft Computing 

Competitive learning models Principle Component Analysis (PCA); Selforganizing maps (SOM); Information theoretic methods Entropy, mutual information, KL divergences; Independent component analysis (ICA), Maximum entropy method; Pulsed neural networks Spiking neuron model, Integrateandfire neurons; Fuzzy Logic and Fuzzy systems, Fuzzy neural networks, Fuzzy Kmeans algorithm; Genetic Algorithms Evolutionary computation, Genetic operators 
NONE  Machine Learning 

Classification, clustering  fuzzy cmeans and hierarchical, decision surfaces, parameter estimation methods, Bayesian decision theory, Markov models, HMMs, dimension reduction methods, principal component analysis, SVD, Fisher discriminant analysis, perceptrons, support vector machines, unsupervised learning and kmeans clustering, nonparametric methods, applications in real world. 
CS5200  Approximation Algorithms 

NPhardness and approximation, approximation ratios and schemes, greedy algorithms, set cover, linear programming and rounding, primaldual method, FPTAS for knapsack problem, bin packing, Euclidean TSP, introduction to hardness of approximation. 
CS5230  Visual Recognition 

Introduction to Representation, Learning, Detection, Recognition of objects, activities and their interactions from images and videos; Human visual recognition system; Recognition methods Lowlevel modeling (e.g. features), Midlevel abstraction (e.g. segmentation), Highlevel reasoning (e.g. scene understanding); Detection/Segmentation methods; Context and scenes, Importance and saliency, Largescale search and recognition, Egocentric vision systems, Humanintheloop interactive systems, 3D scene understanding. 
FC5264  Advanced Compiler Optimization Techniques 

The objective of this course is to learn basic and advanced compiler optimization techniques, either traditional or modern in their scope, or scalarvariable based or loopoptimization based in their application or machine independent or dependent in their variety. The initial part of the course would be devoted to a collection of traditional compiler analyses and optimizations that are primarily based on control flow and data flow analyses. This will be followed by studying more highlevel optimizations that are based on the static single assignment intermediate representation as well as lowlevel optimizations like register allocation and instruction scheduling and software pipelining. The later part of this course would be devoted to a model named polyhedral compilation where forloops can be transformed to run efficiently on advanced architectures like multicore or GPU using rational and integer linear programming techniques. Here, the focus would be on basics of the three phase process of dependence analysis, affine scheduling and code generation. 
FC5265  SoftwareDefined Networks 

SoftwareDefined Networks is an active research topic to address the existing issues in the enterprise and global networks as well as to enable innovative networking that is not restricted by the traditional network architecture. This course conducts the analysis and solution development for the existing challenges in the computer networks. We introduce SDN for the solution development, system design and its implementation. The expected outcome of this course is the running source codes and systems that will be proposed and developed by the students as well as a writing for publishing such outcomes for public. 
FC5268  Indexing Spatial and Temporal Data 

The course introduces indexing techniques for spatial and temporal data, covering even more abstract metric spaces. It describes a range of indexing techniques targeting different types of data, including their underlying principles and properties, as well as their support for queries and updates. The contents of this course are collected from stateoftheart research papers (i.e., not found in textbooks).  Below is a broad breakdown of the course  Indexing lowdimensional data (15 dimensions) E.g. Indexing Spatial Data with Rtrees, Rtree variants, SpaceFilling Curves (Hilbert, Zcurves etc), Quadtrees etc.  Indexing highdimensional data E.g. Locality Sensitive Hashing (LSH), VA File  Indexing Metric Spaces E.g. Metric Trees, GNAT, VPTree, iDistance  Indexing Time Series E.g. TS tree, Chebyshev Polynomials, Waveletbased indexing, MR Index 
FC5269  High performance computing using R 

IntroductionThe parallel R taxonomyLappy and foreachbased parallelismMap reduce based parallelism 
CS5300  Parallel and Concurrent Programming 

This course will provide an introduction to parallel and concurrent programming. It will focus both on correctness and efficiency of multithreaded programs. Introduction; Mutual Exclusion; Concurrent Objects; Foundations of Shared Memory; Consistency condition for concurrent objects Sequential consistency, Linearizability; Consensus; Universality; Spin Locks; Multithread Linked Lists; Queues and Stacks; Counting; Hash Sets; Futures and WorkStealing; Barriers; Transactional Memory; Parallel Graph and Marix Algorithms 
CS5310  Advanced Operating Systems for Pervasive Computing 

Introduction to Advanced OS Systems & ArchitectureLinux Kernel Frameworks & InfrastructureFileSystem Interface & ImplementationLinux I/O Systems 
CS5311  Pervasive Computing Lab 

Linux Kernel Frameworks & InfrastructureMultimedia Framework ArchitectureNetwork FrameworkGraphics and UI FrameworksWeb FrameworkApplication DevelopmentIntroduction to IoT 
CS5320  Distributed Computing 

Termination Detection Algorithms; Reasoning with Knowledge; Distributed Mutual Exclusion Algorithms; Deadlock Detection Algorithms; Global Predicate Detection; Distributed Shared Memory; Checkpointing and Rollback Recovery; Consensus and Agreement; Failure Detectors; Distributed file servers; Distributed programming environments Communication primitives, selected case studies. (Note Some topics may be added/deleted to suit specific offerings of the course) 
CS5330  Introduction to Statistical Natural Language Processing 

Probability Theory Probability space, Random variables, probability distributions, joint and conditional distributions. Information Theory Entropy, mutual information, divergences, Hypothesis testing.Ngram and continuous space language models, distributed representations, probabilistic taggers and sequence labeling (HMM, maximum entropy models, conditional random fields), probabilistic parsing and structured prediction, probabilistic topic models, statistical machine translation. 
CS5343  Computer and Network Security 

It covers foundations of cryptography, system security, network security, WiFi security, web security, mobile platform security with handson assignments and projects. 
CS5380  Introduction to Wireless Networks1 

Fundamentals of Wireless Communication, Wired vs Wireless Networks, Overview of various wireless technologies Wireless LANs, Cellular Systems, Mobile Ad hoc Networks, Bluetooth, Zigbee, etc. 
CS6140  Video Content Analysis 

Introduction to video content analysis, feature extraction, video structure analysis –shot and scene segmentation, content based video classification, video abstraction – skimming and summarization, event detection and classification, indexing for retrieval and browsing, Applications –Movie and sports video analysis, news video indexing and retrieval etc. 
CS6180  Systems Security 

Understand the fundamental principles of access control models and techniques, authentication and secure system design. Have a strong understanding of different cryptographic protocols and techniques and be able to use them. Apply methods for authentication, access control, intrusion detection and prevention. Introduction Motivating examples, Basic concepts confidentiality, integrity, availability, security policies, security mechanisms, assurance.Access to the System, Discretionary Access Control, Passwords for File Access, Capability List, Owner/Group/Other, Access Control Lists, Trojan Horse Threats, Mandatory Access Control, Security Models , Role of a Security Model , Practical Applications of a Model, Types of Security Models, Characteristics of a Security Model, StateMachine Models, Examples of a State Machine Model, Adding Constraints to StateMachine Access Models, The Bell and La Padula Security Model, InformationFlow Models, Informal ModeltoSystem Correspondence, Mapping the Functions, Mapping the Variables, Unmapped Functions and Variables Firewalls and Web Security  Packet filters, Application level gateways, Encrypted tunnels, Cookies, Web security problems Introduction to cryptography, Secret key cryptosystems, Modular Arithmetic and Public key cryptosystems, Public key cryptosystems, DiffieHellman and RSA Message digests, digital signatures, Identification and authentication, Passwords, Biometrics, Onetime passwords and challenge response schemes, Kerberos, Kerberos, SSL, SSH. 
CS6190  Advanced Topics in Cryptology 

Reading research papers in the area of cryptology and understanding the state of the art in the subject. 
CS6200  Advanced topics in formal methods 

This course will involve a reading of important papers in the area of formal methods. It will be preceded by a review of prerequisite concepts in logic, verification, model checking and automata theory. 
CS6210  Advanced Machine Learning 

Generative models for discrete data, Gaussian Models, Bayesian Statistics, Linear Regression, Logistic Regression, Directed graphical models (Bayes nets), Mixture models and the EM algorithm, Sparse linear models. Kernels Kernel functions, kernel trick, Support vector machines (SVMs), Kernels for building generative models. Markov and hidden Markov models, State space models, Undirected graphical models (Markov random fields), Monte Carlo inference, Markov chain Monte Carlo (MCMC) inference, Graphical model structure learning, Deep learning, Boosting, OnLine learning, Decision Trees, Ranking. Compressive Sensing and Dictionary Learning Pursuit algorithms and applications for imaging and vision. 
CS6220  Computer Vision 

This course aims for students to (1) understand and apply fundamental mathematical and computational techniques in computer vision and (2) implement basic computer vision applications. Students successfully completing this course will be able to apply a variety of computer techniques for the design of efficient algorithms for realworld applications, such as optical character recognition, face detection and recognition, motion estimation, human tracking, and gesture recognition. The topics covered include image filters, edge detection, feature extraction, object detection, object recognition, tracking, gesture recognition, image formation and camera models, and stereo vision. 
CS6230  Optimization Methods in Machine Learning 

Introduction to Optimization, Convex Sets, Convex Functions, Lagrange Duality, Convex Optimization Algorithms, Secondorder cone models, Semidefinite programming, Semiinfinite programming, Minimax, Sublinear algorithms, Interior Point Methods, Active set, Stochastic gradient, Coordinate descent, Cutting planes method, Applications to Image/Video/Multimedia Processing 
CS6300  Topics in Compiler Optimizations 

This advanced graduate level course will focus on a melange of selected topics in Compiler Optimizations. It is mostly a research based course where the registrants will focus on studying stateoftheart algorithms, in a traditional setting or in the polyhedral compilation studying and improving the existing algorithms published in top compiler conferences or the ones implemented in LLVM, Polly, PPCG, Pluto, etc. 
CS6310  Quantum Computing I 

Introduction to Quantum Mechanicsthe mathematics and physics; Quantum Circuits; Deutsch and Deutsch Jozsa algorithms 
CS6320  Quantum Computing II 

Quantum Algorithms Shor's Integer Factoring, Grover's unordered search, Hidden Subgroup Problem for various groups, Other Quantum Algorithms 
CS6330  Quantum Computing III 

Quantum Error Correction, Quantum Information Theory and Quantum Cryptography 
CS6340  Quantum Computing IV 

Topics in quantum computing and information; Latest advances in the field. 
CS6350  Topics in Combinatorics 

This advanced graduate level course on combinatorics will focus on selected topics such as extremal combinatorics, probabilistic techniques, algebraic method in combinatorics etc. 
CS6360  Advanced Topics in Machine Learning 

This advanced graduate level course on machine learning will focus on selected topics such as deep learning, probabilistic graphical models, optimization in machine learning, etc. The course assumes that the student has basic knowledge in machine learning, and will have a research focus. The objective of the course will be to get a deeper understanding of machine learning algorithms, especially those that are highly relevant for contemporary realworld applications. 
CS6370  Information Retrieval 

Storing, indexing and querying document dataScoring, term weighting document relevance estimationText classification and clusteringProbabilistic information retrievalRanking in a Graph 
CS6380  Introduction to Compiler Engineering 

Realworld compilers have complex algorithms and optimization strategies implemented in them, along with having various implementation techniques that are language/architecture independent as well as having language/architecture specific features. All the above makes engineering modern realworld compilers also a hard softwareengineering problem.This 1 credit course will focus on understanding these issues, taking the popular LLVM compiler as a casestudy.The following are some of the areas that we plan to study  Analyses/Transformations in LLVM.  Methods of adding new FrontEnds and BackEnds to LLVM.  Introduction to Passmanager of LLVM. Adding new passes. 
CS6390  Enabling Large Scale Data Analytics From Theoretical Foundations to Practice 

SmallSpace Algorithms, Estimating Statistical Properties, Distance Estimation, Clustering & Ranking, Algorithms over Massive Networks, Learning Algorithms 
CS6400  Constraint Solving 

Many real world problems reduce to solving a set of constraints. From time table scheduling to inventory management and fault localization to efficient resource utilization, it all ultimately boils down to expressing these problems as a set of constraints. Not only it is at the heart of most of the problems in operation research but constraint solving has applications ranging from computational biology to program analysis. These applications use the constraint solvers mostly as a black box. However, one can gain tremendously from the study of constraint solvers and the techniques they employ so as to adapt them to the problem at hand. This course will attempt to study the underlying techniques employed by modern day constraint solvers. In particular, solving techniques behind SAT, MaxSAT, PseudoBoolean constraint solving will be studied. In addition, this course will also attempt to take a look at SMT (Satisfiability Modulo Theories) solving. 
CS6410  Software Verification 

Course Outline Software has penetrated almost every aspect of our lives. From banking applications to air traffic control, from pacemakers to smart cars uses some software component. It is therefore of paramount importance that these software work correctly. In this course, we will study various ways to formally analyze and reason about software systems. The course may cover topics such as Hoare logic, abstract interpretation, abstraction refinement, kinduction, symbolic execution, variants of bounded model checking for sequential as well as concurrent programs such as loop bounding, context bounding and reorder bounding. Use of formal techniques for software testing and reasoning about termination can also be covered 
CS6420  Bayesian Data Analysis 

Course Outline Bayesian data analysis fits a probability distribution over the data and summarize the results by a probability distribution on the parameters of the model and on unobserved quantities. Bayesian models allow the incorporation of prior information and domain knowledge which helps to better model the data and observations. This is especially useful for applications such as healthcare and computational biology with limited data availability. The course will cover various topics on bayesian data analysis such as single and multiparameter models, regression models, hierarchical models, generalized linear models, spatiotemporal models, bayesian decision theory, Model selection, Bayesian inference algorithms based on Monte Carlo methods, variational inference, quadrature and expectation propagation, Bayesian nonparametric approaches such as Gaussian processes and Dirichlet processes, Point processes, Bayesian optimization and Bayesian deep learning. 
CS6430  Computational number theory & algebra 

Finite fields, quadratic residues, primality testing, polynomial factorization, applications in cryptography/coding theory. Optional topics Integer factoring, lattices. 
CS5360  Advanced computer architecture 

This course will cover several stateoftheart and emerging topics in computer architecture, including multicore processor architecture, GPUs, CPUGPU heterogeneous system, multicore cache/memory architectures and resource management techniques, emerging memory technologies, processor power management techniques. The students are also expected to review and critique one recent research paper during the course. 
CS6450  Advanced Topics in Computer Vision 

This course will discuss advanced topics and current research in computer vision. Students are expected to read papers selected from various subareas such as deep learning, segmentation and grouping, object and activity recognition, scene understanding, and vision and language. Approaches for learning from image and video data will be covered and include topics from convolutional neural networks, recurrent neural networks, structured predictions and others. The course will be a mix of lecture, student presentation and discussion. 
CS6460  Introduction to Deep Learning for Vision 

This course will introduce students into the complex, abstract world of computer vision and deep neural networks. Topics covered will include Basics of deep learning and its history, Stateoftheart deep neural net models in computer vision; Specific tools and packages to train these deep nets; and what it takes to train and run these models in the realworld. 
CS6660  Mathematical Foundations of Data Sciences 

Matrices, Vectors and Properties; Vector Spaces, Norms, Basis, Orthogonality; Matrix Decompositions Eigen decomposition, Singular Value Decomposition; Differential Calculus Derivatives and its significance, Partial derivatives; Optimization of single variable and multiple variable functions Necessary and sufficient conditions; Real problems as optimization problems Formulation and analytical solutions; Finding roots of an equation Newton Raphson Method; Optimization via gradient methods; Probability basics, density function, counting, expectation, variance, independence, conditional probability, Poisson process, recurrences, Markov chains 
CS6670  Topics in Data Mining 

Data Preprocessing, Data Warehousing & OLAP, Mining Frequent Patterns and Associations, Classification, Cluster Analysis, Mining Complex Types of Data (Sequence Data, Graphs, Social Networks, etc.), Text Mining, Stream Data Mining 