You are on page 1of 46

M.Tech.

(IT)
Programme Curriculum
(Effective from academic year 2013-14)

International Institute of Information Technology


Bangalore 560100
August 2013

IIIT-Bangalore

Page 1

Table of Contents
1 Overall M.Tech. Programme Structure ................................................................... 4
2 Area of specializations .............................................................................................. 5
3 Preparatory courses .................................................................................................. 5
4 IT Core courses ........................................................................................................... 5
5 Summer Non-IT (Peri-IT) Core courses ..................................................................... 6
6 Electives ...................................................................................................................... 6
7 Project Electives /Supervised Reading ................................................................... 7
8 Thesis/Internship ......................................................................................................... 7
Appendix-A: Course Descriptions................................................................................... 9
CORE COURSES ................................................................................................................. 9
COMPUTER SCIENCE ....................................................................................................... 21
CS/DS 601 Theory of Computation ........................................................................... 21
CS/DS 602 Advanced Algorithms ............................................................................. 21
CS 603 Cryptography ................................................................................................. 22
CS 604 Artificial Intelligence ...................................................................................... 22
CS/DS 605 Information Networks .............................................................................. 23
CS 606 Computer Graphics ....................................................................................... 23
CS/DS 607 Graph Theory and Applications ............................................................ 24
CS/NCE 609 Real-time Systems ................................................................................. 24
CS/NCE 610 Computer Architecture ....................................................................... 24
CS/NCE 611 Information Theory and Coding ......................................................... 25
CS 701 Advanced Operating Systems ..................................................................... 25
CS/DS 702 Distributed Computing ............................................................................ 25
CS/SE 703 Automated Formal Verification ............................................................ 26
CS/DS 704 Multi Agent Systems ................................................................................. 26
CS/DS 706 Machine Learning .................................................................................... 27
CS 707 Logic in Computer Science .......................................................................... 27
CS/NCE 710 Discrete Event Systems Modeling and Simulation ........................... 28
CS/SE 711 Design and Analysis of Safety-Critical Systems .................................... 28
CS 712 Quantum Computing .................................................................................... 28
DATA SCIENCE ................................................................................................................. 30
CS/DS 601 Theory of Computation ........................................................................... 30
CS/DS 602 Advanced Algorithms ............................................................................. 31
DS/SE 603 Data Modeling .......................................................................................... 31
DS 604 Web Information Retrieval ............................................................................ 31
CS/DS 605 Information Networks .............................................................................. 31
CS/DS 607 Graph Theory and Applications ............................................................ 32
IIIT-Bangalore

Page 2

DS 701 Advanced Database Management Systems ........................................... 32


CS/DS 702 Distributed Computing ............................................................................ 32
DS 703 Geographic Information Systems ................................................................ 33
CS/DS 704 Multi Agent Systems ................................................................................. 33
CS/DS 705 Conceptual Modeling and Knowledge Representation .................. 33
CS/DS 706 Machine Learning .................................................................................... 34
DS 707 Data Analytics................................................................................................. 34
DS 708 Semantic Web ................................................................................................ 35
SOFTWARE ENGINEERING ............................................................................................... 36
SE 601 OOAD, UML and Introduction to Web 2.0 .................................................. 36
SE 602 Software Testing............................................................................................... 36
DS/SE 603 Data Modeling .......................................................................................... 36
SE/NCE 612 Fundamentals of Performance and Reliable IT Infrastructures....... 37
SE 701 Design Patterns and Enterprise System Development .............................. 37
CS/SE 703 Automated Formal Verification ............................................................ 37
CS/SE 711 Design and Analysis of Safety-Critical Systems .................................... 38
SE 712 Performance, Reliability Analysis and Optimization of Contemporary
infrastructures ............................................................................................................... 38
NETWORKING & COMMUNICATION ............................................................................. 39
and EMBEDDED SYSTEMS ............................................................................................... 39
NCE 601 Wireless Access Networks ........................................................................... 39
NCE 602 Wireless Communication............................................................................ 39
NCE 603 Digital Signal Processing ............................................................................. 39
NCE 604 Design and Fabrication principles of Digital IC ...................................... 39
NCE 607 Design Techniques for CMOS Integrated Circuits .................................. 40
NCE 608 Informatics in Industrial Process Automation .......................................... 40
CS/NCE 609 Real-time Systems ................................................................................. 41
CS/NCE 610 Computer Architecture ....................................................................... 41
CS/NCE 611 Information Theory and Coding ......................................................... 41
SE/NCE 612 Fundamentals of Performance and Reliable IT Infrastructures....... 42
NCE 701 Mobile Computing with IMS Architecture ............................................... 42
NCE 702 Wireless Sensor Networks ............................................................................ 42
NCE 703 Mechatronics ............................................................................................... 43
NCE 706 Advanced Digital Communication .......................................................... 43
NCE 707 Real-time Embedded Communications Systems................................... 43
NCE 708 Communication in Industrial Process Automation ................................. 43
NCE 709 Real-time Embedded Communications Systems................................... 44
CS/NCE 710 Discrete Event Systems Modeling and Simulation ........................... 44
OPEN ELECTIVES............................................................................................................... 45
ITS 601 Dynamics of the Information Technology Industry .................................... 45
ITS 701 Economic and Social Impacts of Information Technology ..................... 45
ITS 702 Intellectual Property Rights ............................................................................ 45
GEN 601 Introduction to Scientific Computation ................................................... 46
IIIT-Bangalore

Page 3

1 Overall M.Tech. Programme Structure


Tables 1 and 2 provide a summary of the credit distribution in the M.Tech.
programme.
Table 1: Overview of the curriculum

Preparatory Term
(3 weeks)
Semester 1
(15 weeks)
Semester 2
(15 weeks)
Summer
(8 weeks)

0 credits
Introductory Programming (C and Java)
(PASS / FAIL mandatory courses)
16 credits
5 core courses
(3 X 4 credits + 2 X 2 credits = 16 credits)
18 credits
One SE Theory Core and 4 Electives
(1 X 2 credits + 4 X 4 credits = 18 credits)
9 credits
2 Non-IT Courses + *SE Project + Seminar
(2 X 3 credits + 1 X 2 credits + 1 X 1 credit= 9credits)
(*This is a Software Projects with Industry Practices of 6 months duration
will start during 2nd semester and the final evaluation will be in summer
semester)

Semester 3
(15 weeks)

16 credits
4 electives

Semester 4
(26 weeks)

16 credits
Internship / Thesis

Total 75 credits
Table 2: Credit Distribution
IIIT-Bangalore

Page 4

Proposed
IT Core Course Credits
Peri-IT Core Course Credits
Elective Course Credits
Internship / Thesis Credits
Total credits requirement for M.Tech.

Credits
21
6
32
16
75

%
28 %
8%
43 %
21 %

2 Area of specializations
The M.Tech. curriculum has four area of specializations:
Computer Science (CS)
Data Science(DS)
Networking & Communication and Embedded Systems (NCE)
Software Engineering (SE)

3 Preparatory courses
Students entering the M.Tech. programme are expected to come with some
prior knowledge of programming. While we do not wish to conduct full-fledged
programming courses at the Masters level, we will provide an opportunity for the
students to hone up their programming skills in a structured way as part of the
preparatory term. The preparatory term has two courses in programming
(covering C and Java). The two courses will not carry any credit. However, they
are mandatory courses with a PASS/FAIL grade. These Programming courses will
be taught with emphasis on hands-on programming exercises and projects.

4 IT Core courses
Core courses are those that all the students must take mandatorily. The
complete list of core IT courses is provided in Table 1 below.

Course

Table 3: List of core IT courses


Credits Semester

Introductory Programming 1

Prep term

Introductory Programming 2

Prep term

Data Structures and Algorithms

Semester1

Computer Networking &


Communication and Embedded
System

Semester 1

Mathematics for IT

Semester 1

Operating Systems

Semester 1

IIIT-Bangalore

Page 5

Database Systems
Software Engineering Practices
(Theory)
Software Projects with Industry
Practices (Project of 6 months)
Seminar

Semester 1

Semester 2

Summer

Summer

Apart from courses in the Preparatory term, the core courses to be covered in
the first regular semester are:
Data Structures and Algorithms (4 credits)
Computer Networking and Communication (4 credits)
Mathematics for IT (4 credits)
Database Systems (2 credits)
Operating Systems (2 credits)
The second semester will have one core course on the Theory of Software
Engineering Practices for two credits. This will be followed by a project course
that lays emphasis on usage of industry-oriented software engineering practices
for two credits. Details regarding objectives, syllabus and lecture hours for each
course are provided in the Appendix-A.

5 Summer Non-IT (Peri-IT) Core courses


Table 2 below lists the courses to be offered in the summer semester. The total
number of credits for non-IT summer courses is now 6.

Course

Table 4: List of Peri-IT Core courses


Credits Semester

Marketing and Strategy

Summer

Technical Communication

Summer

Total Peri-IT core credits

6 Electives
The number of electives to be completed by each student is eight. Thus the total
number of credits that can be accumulated through electives is now 32 credits.
Each elective will be associated with one or more area of specializations with

IIIT-Bangalore

Page 6

the exception of elective courses from the Information Technology and Society
area of specialization, which will be offered as open electives.
Each student is required to take at least five electives from his/her area of
specialization. For example, for a student from the Computer Science area of
specialization, all electives that are listed under Software Engineering area of
specialization (and not cross-listed under Computer Science) will be considered
as open electives.
Design of Elective course will be addressed in detail by the faculty concerned.
This design of the course will be presented to faculty-meeting/Senate before
being offered to students.

7 Project Electives /Supervised Reading


1. There are two forms of special electives called: Project Elective
(PE) and Reading Elective (RE). These electives are intended for
experiential and guided learning.
2. Every PE course at least have the following characteristics:
Overall Plan
Visible Output
Direct Supervision
3. PE and RE follow the usual letter grading pattern available to
other courses.
4. Mtech students may opt for at most one PE and at most one RE
course, per semester.
5. Involvement of external institutional entities if any, as part of a PE
course, should be expedited within the framework of the existing
collaboration and IP policies of the Institute.

8 Thesis/Internship
Thesis/Internship shall be of 26 weeks duration and a student can accumulate 16
credits on successful completion of thesis or internship.
For the students pursuing Internship:
Internships to be considered as six months (not less than five months) of
supervised project work carried out at industry or academic institutions.
The internship committee will ensure that a mid-term feedback is
collected (for every student pursuing internship) to ensure smooth progress
towards completion.

IIIT-Bangalore

Page 7

At the time of internship completion the internship committee will also


collect the certificate (satisfactory/unsatisfactory) from concerned person
of the organization. If the certificate is unsatisfactory then the institute
internship committee will review the matter and if they agree with the
certificate given, and then the student has to carry on the internship
again at same or different place. If the certificate is satisfactory then the
student full fills the requirement of internship.
For students pursuing thesis, the following guidelines hold:
There is an M.Tech. thesis committee comprising of the supervisor and at
least two more faculty members. Members of this thesis committee will
serve thesis and oral examiners for each student pursuing thesis.
The thesis style rules should be available in LMS for all thesis students to use.
Additionally we should make available both Word and LaTeX style files,
which comply by these rules. If a student chooses to use a word
processor, other than the ones above, (s)he is welcome to do so as long
as the rules are met.
A soft copy of the thesis in .pdf format should be sent to IIITB librarian, a
week before the final submission of thesis date according to the institutes
calendar (which will be after the thesiss oral exam). The soft copy of thesis
format must be officially approved by the librarian before the thesis goes
in print and for binding.
The M.Tech. academic calendar will have dates fixed for the following
tasks specific to thesis evaluation: constitution of thesis committee,
submission of draft to the committee(s) (a week before the oral
examination), a week dedicated for all the M.Tech. thesis defenses, date
for submission of soft copy to the librarian, and a date for final submission
of the hardbound thesis to the library.

IIIT-Bangalore

Page 8

Appendix-A: Course Descriptions

CORE COURSES
This section provides on the core courses in the curriculum. Each subsection
below contains details regarding the various core courses. Elective courses
topics will be given by the respective faculty member(s) and it will be processed
through the Senate, before addition to the semesters elective.

Introductory Programming
Students come for M.Tech. from many different branches of Engineering. They all
have varying levels of programming knowledge. Good programming skills are
recognized as being a minimum pre-requisite for virtually all the courses (both
core and elective). The goal of the preparatory term is to give a fast-track
introduction to programming. The following table highlights some of the details
of the course:
Course
Name
Term
Course
Credits
Duration

Introductory Programming I & II


Preparatory Term
0
3 weeks

Introductory Programming I
C Programming
(Morning)
Session
3 hours per day
duration
Sessions
5
per week
Total
45 hours (3 weeks)
duration

Introductory Programming I
Java Programming
(Afternoon)
Session
3 hours per day
duration
Sessions per
5
week
45
hours
(3
Total duration
weeks)

Course Objectives: At the end of the course, the students should have
knowledge and competencies in the following areas:
C Programming Language
Knowledge on the proper usage of all C programming constructs.
Ability to compile, debug and run multi-file C programs in a Linux
IIIT-Bangalore

Page 9

environment.
Java Programming Language
Knowledge on the proper usage of core Java.
Ability to compile, debug and run Java programs in a Linux
environment.
The sessions for the modules are theme-based within the backdrop of a single
case study. Students will make individual incremental progress on implementing
that case study in each session while the necessary background knowledge
needed for that will be handled during the lecture session. While the use of case
study is mandatory for teaching this course, the instructor is free to design the
case study as per his / her interests. The only requirement is that the case study
should be designed for incremental development so that the student can be
guided to complete it by following the module-wise schedule of the course.
The course is divided into multiple modules. Each module is comprised of
lecturesession(s) and lab session(s). A session typically has a one hour lecture
followed by a 2 hour lab every day. As mentioned earlier, the sessions for the
modules are going to be theme-based within the backdrop of a single Case
Study. Considering that there are 15 sessions available and 10 modules,
instructor may choose devote more time on certain important modules as
he/she deems fit.
C Programming:
The C Programming labs will be based on Linux programming environment. In
addition to learning the C programming language, the students are expected
to gain good user-level experience and skills of the Unix operating system. The
following topics will be covered during the course. The topics are grouped into
modules and could be used as a guideline during lectures.
Preliminaries: Introduction to Unix, Introduction to case study
Data types and expressions: Variables and data types, scope and
lifetime of variables, type casting and data type conversion, expression
evaluation
Control flow: if statement, if-else statement, switch-case statement, for
loop, while loop, do-while loop
Functions: User-defined functions, parameters and return values, global
variables, static variables, multi-file programming, introduction to builtin libraries (math.h, string.h, etc.).
Recursion: Recursion for divide-and-conquer
Arrays: 1-d array, 2-d array and n-d array
Pointers: Pointers and addresses, pointers and function arguments,
pointers and arrays, address arithmetic, character pointers and
IIIT-Bangalore

Page 10

functions
More on pointers: Pointer arrays, pointers to pointers, pointers to
functions
Structures: Basics of structures, structures and functions, arrays of
structures
Advanced structures and unions: Pointers to structures, self-referential
structures, unions, bit-fields
File I/O: Text I/O sequential access, binary I/O sequential access, binary
I/O random access
Java Programming:
The following topics will be covered during the course.
Module 1: What is Java, JVM, WORA, Java programming environment,
Eclipse
Java Basic Syntax: Variables, scope and lifetime of variables, arithmetic
expressions, control structures
OOP with Java: Class and object, methods, instance variables,
constructors, data hiding and encapsulation, exception handling
Class Relationships: Inheritance and polymorphism, method overriding
and overloading, associations (1-1, 1-N, M:N), composition, interfaces and
abstract classes
The Java library: Text and numbers, collections, input / output, utilities
GUI with JFC/Swing: Swing with Netbeans IDE, Swing components, data
transfer
Serialization and file I/O: Serialization, writing serialized objects to file, deserializing objects from file
Multi-threaded programming: Concurrency concepts, concurrency in
Java (processes, threads, etc.), Java memory model (atomicity,
synchronized, volatile), Java threads, deadlocks
Network programming: Internet addressing, internet streams, sockets,
clients, servers, remote method invocation

IIIT-Bangalore

Page 11

Mathematics for IT
Course Objectives: This course provides an introduction to Mathematical
Concepts which areused widely in designing engineering systems.The following
four modules recommended to be taught in the course with equalweightage.
Discrete Mathematics:
Basic logic: Propositional logic: logical connectives, truth tables, normal
forms (conjunctive and disjunctive), predicate logic, modus ponens and
modus tollens.
Proof techniques: Notions of implication, converse, inverse, contrapositive, negation, and contradiction, the structure of formal proofs, direct
proofs, proof by counter example, proof by contraposition, proof by
contradiction, mathematical induction,strong induction.
Set Theory: Definition of set, relations, equivalence relations and
equivalence classes, cardinality and countability.
Combinatorics: Pigeonhole principle, inclusion-exclusion principle,
generating functions, recurrence relations.
Groups, rings and fields, with application.
Probability Theory and Statistics:
Sample space, axioms of Probability theory, random variables, distribution
function and density function, mean, variance, characteristic function
and central limit theorem.
Law of large numbers, introduction to Stochastic processes with examples.
Statistical estimation, parametric distribution estimation, non-parametric
distribution estimation, optimal detector design and hypothesis testing,
Chebyshev and Chernobounds.
Linear Algebra and Matrix Theory:
Vector spaces, subspaces and bases, norms, inner product spaces, Gram
Schmidt orthogonization, linear transformations.
Matrices, Eigenvalues and Eigen vectors, LU and QR factorization, trace
and determinant, quadratic forms and canonical forms, singular value
decomposition, least squares problem and Moore Penrose inverse.
Optimization- Convex Programming:
Affine and convex sets, projection on a set, distance between sets,
convex functions.
IIIT-Bangalore

Page 12

Linear programming and convex optimization, quadratic optimization,


Geometric programming, Nonlinear optimization duality, optimality
conditions, Geometric interpretation, Saddle-point interpretation ,
perturbation and sensitivity analysis
Unconstrained minimization problems, Gradient descent method,
Steepest descent method, Newtons method, Newtons method with
equality constraints, interior-point methods

IIIT-Bangalore

Page 13

SE Practices
Knowledge of software engineering principles is critical for any IT professional.
Students can imbibe and internalize these principles only by applying in a
systematic and structured manner. The Software Engineering Practices course is
designed with a greater emphasis on hands-on practices of well-known
principles. The course is divided two components:
1. Lecture (about 25 hours)
- January - April
2. Project (about 6 months duration)

- January - June

While the lecture components will cover all essential concepts and principles,
the project component will provide an opportunity for the students to actually
put the principles into practice. The project component will also help in filling the
void created by the absence of projects in the OS, Databases, and Data
Structures and Algorithm courses as per the revised curriculum.
Assessments will be done based on about 70% weight given to the project and
about 30% weight given to the lecture component, thus emphasizing the
importance of practicing what is being taught.
The Software Engineering Practices course is intended to be offered as a fifth
course in the second semester because the value of the course is fully realized
only when the project component happens in parallel. The following table
highlights some of the details of the course:
Course Name

Software
Practices
4
2

Engineering

Course Credits
Lectures hours per week
Total number of lecture
hours
25
(per semester)
Project Duration
6 Months

Course objectives: At the end of the course, students should have knowledge
and competencies in the following areas:
Practical application of project management practices
Awareness of practices for developing programs with emphasis on quality
Defining project tasks with guidance from well-defined process models
Effective management of source code
Familiarity with basic terminology associated with process models and
quality models.

IIIT-Bangalore

Page 14

Lecture component (Theory part): The lecture component will be conducted


and completed with-in the second regular semester. The following modules are
recommended to be covered as a part of the lectures to be taught in class:
Process Models (3 hours): Waterfall model, spiral model, V model, iterative
models, agile methods (Scrum, XP etc.)
Project management principles (10 hours): Planning, estimation,
monitoring, control, reporting
Testing principles (6hours): Black box testing, white box testing, nonfunctional testing, testing metrics
Configuration management (3 hours): Version control, project space and
version space
Software Quality (3 hours): Quality models (CMMi, Six Sigma, ISO), formal
reviews, quality metrics (product quality and process quality)
Project Component: The course includes a mandatory project of reasonable
complexity. The project is intended to be developed and delivered over a
period of 6 months in a group of 4-6 students.
Students have to choose a project in one of the following areas:
Systems software (operating systems and other system-level software
development)
Information Systems (databases, web, OOAD, supply chain, etc.)
Computing Methodologies1 (graphics, visualization, image processing,
artificial intelligence, machine learning, etc.)
Networking and Communication (covers mobile, sensor networks, wireless
communication, etc.)
Embedded Systems
Every project necessarily needs a faculty member as a supervisor and mentor.
Faculty members can announce and mentor projects one of the following two
ways:
Linking the on-going elective projects with the SE project provided it
belongs to one of the above areas.
Offering independent projects provided it belongs to one of the above
areas.
The final evaluation of the project will be done at the end of the six months
duration. The evaluation of project component will be based on:

1This

name
comes
from
ACM
project.org/web/classifications/ACM.html)

IIIT-Bangalore

classification

system

(see

http://cran.r-

Page 15

Product deliverables (as defined and evaluated by the project mentor).


SE practices (as defined and evaluated by the course instructors).
In effect, if 100 marks are allocated for the overall course, following is the
recommended break up of evaluation:
Lecture component 30 marks (exam-based evaluation)
Project SE practices 20 marks (documentation-based evaluation)
Project Product deliverables 50 marks (demo and testing-based
evaluation)

Database Systems
The following table highlights some of the details of the database systems
course:
Course Name

Database
Systems
2
2

Course Credits
Lectures hours per week
Total number of lecture
hours
32
(per semester)

Course objectives: At the end of the course, the students should have
knowledge and competencies in the following areas:
Understand the principles of conceptual modeling
Design databases
Principles of database programming
Knowledge of DBMS components
Other data management technologies (e.g., data exchange, in-memory,
etc.)
Course contents:
Information systems (2 hours): Basic concepts (models, schema, data,
information, knowledge), elements of information systems, overview of
database systems.
Conceptual modeling (3 hours): Introduction to conceptual modeling,
entity relationship models, UML class diagrams.
Relational databases (11 hours): Relational data model, database design
concepts, DB design via OR mapping, relational algebra, SQL tutorial,
functional dependencies, overview of normal forms (till BCNF)
IIIT-Bangalore

Page 16

DBMS (7 hours): Components of a DBMS, storage structures primary,


clustering, secondary, multi-level, query processing overview, query
transformation, query evaluation, transaction processing overview, ACID
properties, concurrency control schedules, serializability, deadlocks.
Application development (3 hours): Database programming (SQL,
embedded SQL, JDBC etc.), overview of 2-tier, 3-tier and n-tier
architectures, XML.
Other topics (4 hours): Datawarehouse and analytics, BigData, NoSQL,
specialized databases (in-memory, stream data etc.)

IIIT-Bangalore

Page 17

Operating Systems
The following table highlights some of the aspects of the Operating Systems
course:
Course Name

Operating
Systems
2
2

Course Credits
Lectures hours per week
Total number of lecture
hours
32
(per semester)

The following topics will be covered course in the first regular semester:
General ideas about operating systems
The evolution of operating systems, types of operating systems
System calls; user vs. super- user
Processes and threads, process scheduling and management
IPC (Inter Process Communication) and the dining philosophers problem
Race conditions and mutual exclusion, scheduling
Memory, virtual memory and memory management
Paging vs. segmentation
Page replacement algorithms
Distributed systems, briefly
Message-passing vs. shared memory
Logical clocks and the ordering of events, impossibility results and proofs
Security issues
Threats, encryption, symmetric vs. asymmetric, attacksfrom within the
system and from outside, protection mechanisms
A selection of advanced and related topics including introduction to
RTOS, Mobile OS etc.
There will be no project component in this course.

IIIT-Bangalore

Page 18

Networking & Communication and Embedded Systems


Objectives: This is a fundamental course in computer networking. In addition to
the concepts of data networking, concepts of cellular networks and embedded
systems in telecommunication have also been incorporated in this course. At
the completion of the course, the student should be able to understand the
following topics:
End to end Architecture (topology + protocols) of Data networks.
End to end Architecture (topology + protocols) of cellular networks.
Functionalities of various layers in ISO model and interaction
betweenthem.
Principle aspects of embedded systems in telecommunication.
Main Modules:
Data Network Architecture (1 week): In depth conceptual understanding
of all the layers of the ISO models and the associated protocols.
Application Layer (2 weeks): HTTP protocol, SMTP protocol (email), DNS,
socket programming
Transport Layer (2 weeks): TCP concepts, UDP concepts, congestion/flow
control, multiplexing/de-multiplexing
Network Layer (2 weeks): Routing algorithms, internet signalling, IP
addressing
Datalink Layer (2 weeks): ARP protocol, MAC protocol, error
correction/detection
Physical Layer (2 weeks): Channel capacity, modulation and basics of
FEC.
Cellular Network Architecture (2 weeks): Focus on 2G and 2.5 G networks.
Embedded Real Time Systems (3 weeks): Principles of real time systems,
communication device driver understanding.

IIIT-Bangalore

Page 19

Data Structures and Algorithms


Objectives: Students passing this course are expected to have basic familiarity
with the presented topics.
This document does not mandate a specific teaching style, text book or load
distribution across the topics. A suggested ideal time distribution is presented
across each topic. Suggested textbook is Cormen et al. Introduction to
Algorithms (popularly called CLR earlier and now CLRS book).
Total credits: 4
Class hours (per week): 3
Algorithmic analysis (1 week): Asymptotic notations for algorithms,
recurrence tree methods, complexity classes
Abstract Data Structures(5 weeks): Properties of: Arrays, stacks, queues,
linked lists, trees, binary trees, heaps, DAGs, balanced trees, hash tables,
graphs, regular graphs
Algorithmic paradigms: Divide and conquer, Dynamic Programming,
greedy algorithms (4 weeks): General method of divide and conquer,
example divide and conquer algorithms: merge sort, quick sort, Strassen's
matrix multiplication, binary search, general method of dynamic
programming, relaxation techniques, knapsack problems.
Search and Traversal (4 weeks): Searching in Binary Trees, Graph
traversals: DFS and BFS, backtracking methods, branch and bound
techniques with examples from graph algorithms, spanning tree
algorithms, Algorithms based on graph cuts.
Randomized Algorithms (1 week): Las Vegas and Monte Carlo paradigms,
some example randomized algorithms.

IIIT-Bangalore

Page 20

ELECTIVE AREA I:

COMPUTER SCIENCE
Objectives:

CS/DS 601 Theory of Computation


Credit hours: 4
The goal of this course is to make students understand the foundations of
computation. We will provide answers to very basic questions like
What are the fundamental capabilities and limitations of computers?
What makes some problems computationally hard and others easy?
Various models of computation have been proposed over the years to capture
certain fundamental aspects of computation. The course will concentrate on
three classes of models, in order of increasing expressive power:
Finite memory
Finite memory with stack
Unrestricted
We will also cover the corresponding hierarchy of language classes defined by
grammars of increasing complexity and their respective equivalence to
computational models above:
Right-linear grammars
Context-free grammars
Unrestricted grammars
This will be followed by the basics of complexity theory, where some prominent
complexity classes will be covered.

CS/DS 602 Advanced Algorithms


Pre-requisites: CS 501; Credit hours: 4
The course will cover Convex Optimization, and Non-Convex Optimization in
depth. Topics will include topics from Duality Theory, Global optimization
conditions, Advanced Linear Programming (such as Dantzig-Wolfe, Column
Generation Techniques), Game Theory, and Statistical Learning Theory.
Application to domains including Operations Research, Robotics, and VLSI will
be discussed.

IIIT-Bangalore

Page 21

CS 603 Cryptography
Credit hours: 4
This course will cover basic mathematics required to understand the
cryptographic
algorithms such as Elementary number theory, Finite fields, Arithmetic and
algebraic algorithms.
It covers topics such as
1. Secret key cryptography (such as DES, AES) .
2. Hard problems (factorings and discrete log) and Trapdoor one way
functions.
3. Public key cryptography (RSA, ElGamal, Diffie Hellman).
4. Pseudo random bit generators.
5. Block and stream ciphers.
6. Cryptographic Hash functions and Massage Authentication.
7. Digital signatures and Authentication Protocols.
8. Key Distribution and Key agreement protocols.
9. Public Key Infrastructure .
10. Multi party computation.
11. Zero knowledge protocols.
12. Elliptic curve crypto systems.

CS 604 Artificial Intelligence


Pre-requisites: 601; Credit hours: 4
This is course gives students a chance to appreciate the theory and applications
of artificial intelligence, including topics such as machine learning, cellular
automata, fuzzy logic, and knowledge-based reasoning.

IIIT-Bangalore

Page 22

CS/DS 605 Information Networks


Pre-requisites: GEN 501; Graph Theory (desirable); Credit hours: 4
Recent times have seen a spurt in several kinds of information networks of
varying size and characteristics. Some examples are: the Internet, mobile
networks, wireless ad hoc networks, VPNs, P2P networks, etc. Information
networks are meant to manage information needs in any large system. Initially
information networks were thought to be analogous to networks managing
material logistics. However, we now know that information possesses
characteristics that are quite distinct from that of material artifacts. In addition,
there is also a growing realization that meaning or semantics is inherent in the
way information is organized in a large network. The human brain for example, is
a huge information network. There is hence a need to study information
networks as a topic in its own right. In this course, we will contrast the nature of
information with that of physical materials. We will then look at different models
of network formation primarily based on two generative models: random graph
phenomena and rational autonomous agents. We will also study dynamics of
information networks concerning problems like information cascades, search
and the formation of semantic overlays.

CS 606 Computer Graphics


Credit hours: 4
This course aims at introducing the theory and practice of computer graphics
with an emphasis on applications programming. The following concepts will be
covered:
Theory & practice of Computer Graphics
Graphics programming using C++ and OpenGL API
Basics of Programmable Shaders & Introduction to GLSL Programming.
Course Content:
Theory of Computer Graphics
-Graphics System, Graphics Architecture, Pipeline Architecture, Images,
Imaging Systems
-Primitives, Attributes, Coordinate Systems, Frames, Interpolation, Curves &
Sur faces, Model Transformations, Projections.
Practice of Computer Graphics
-OpenGL Rendering Pipeline, Camera/Viewing, Material, Lighting Models,
Shad ing, Hidden Surface Removal, Clipping, Rasterization, Frame Bu_ers,
Texture Mapping, Writing OpenGL Applications.
IIIT-Bangalore

Page 23

-Advanced Topics in Visualization, such as, Volume Visualization, Graph


Visua ization, Information Visualization.
-Advanced Topics in Computer Graphics such as, Ray Tracing, Non
Photorealistic Rendering.
-Programmable Shaders: Programmable Pipelines, Shading Languages,
GLSL

CS/DS 607 Graph Theory and Applications


Credit hours: 4
This course introduces concepts of graph theory and some interesting and
important algorithms and problems. Concepts discussed include directed and
undirected graphs, trees and general graphs, planarity in graphs, graph
colorings, network flow and connectivity, matching and independent sets, and
centrality
and
facility
location.
Applications
of
these
to
practical problems may also be discussed, with the student completing a
significant project as part of the class.

CS/NCE 609 Real-time Systems


Credit hours :4
Hard and soft real-time systems, Deadlines and timing constraints, Workload
parameters, Periodic task model, Precedence constraints and data
dependency, Real time scheduling techniques, Static and dynamic systems,
Optimality of EDF and LST algorithms, Off-line and on-line scheduling, Clock
driven scheduling, cyclic executives, scheduling of aperiodic and static jobs,
Priority driven scheduling, fixed and dynamic priority algorithms, Schedulable
utilization, RM and DM algorithms, priority scheduling of aperiodic and sporadic
jobs,
Deferrable and sporadic servers, Resource access control, priority inversion,
priority inheritance and priority ceiling protocols, Real-time communication,
Operating systems.

CS/NCE 610 Computer Architecture


Credit hours: 4
Processor architecture, pipelining, superscalar processors, hardware and
compiler support
IIIT-Bangalore

Page 24

for branch prediction, out-of-order instruction issue, speculative execution and


other techniques for high-performance, instruction and data cache
organizations, multilevel caches, parallel memory systems, support for virtual
memory, multiple processor systems, interconnection networks, introduction to
advanced topics.

CS/NCE 611 Information Theory and Coding


Credit: 4
The objective of the course is to answer this fundamental question : Is it possible
to communicate reliably over a noisy channel. If possible , what is the capacity
of the channel, what are the constraints in communication. In answering this,
the course would introduce the measure of information, its properties, give an
overview on various codes used for data compression, source coding theorem,
dene a communication channel , optimal channel capacity, channel coding
theorem, properties of channel capacity, Source channel separation theorem,
notes on rate distortion, Multiple access channel and its capacity, Correlated
sources, slepian wolf theorem

CS 701 Advanced Operating Systems


Pre-requisites: CS 510; Credit hours: 4
Operating systems (OS) are an integral part of computer systems, and enable
users (or programmers) to work closely with the hardware and computer
architecture. The course aims at providing an overview of the state-of-the-art
directions in the operating systems evolution. This course enables the student to
explore the exciting world of operating systems and the interaction between the
world of software and hardware designs.
Students of this course have already taken at least one course on OS. So, this
course aims to help students gain a deeper understanding of the fundamentals
they already know, while also covering some fundamentals of engineering an
OS and associated design principles.

CS/DS 702 Distributed Computing


Pre-requisites: CS 510; Credit hours: 4
This course will discuss the theoretical and practical aspects of parallel and
distributed systems to provide a broad exposure to some of the special issues
arising in distributed computing. A distributed system is a network of
independent computers that communicate with one another. This structure for
IIIT-Bangalore

Page 25

distributed systems leads to three important features: concurrency of processes


on the nodes of a distributed system, lack of global time, and independence of
component failures from one another. This course gives students the opportunity
to understand and appreciate important algorithmic aspects of distributed
computing, enables a better understanding of some of the fundamental
concepts of distributed systems design that are often applied in related areas,
and exposes the students to current trends and technology in distributed
computing.

CS/SE 703 Automated Formal Verification


Credit hours: 4
Formal verification involves mathematically modeling and verifying a
system/software/hardware with respect to certain requirements and is
considered alternative to other verification techniques like testing and
simulation. Automated formal verification has been extensively researched for
the past three decades and now, several open source and commercial tools
are available. Model checking is a particular technique in automated formal
verification that involves modeling and verifying finite state systems like
hardware design, communication protocols etc. The course will involve
extensive modules on modeling and specification and a group of model
checking algorithms involving branching time specifications will be taught.
Program analysis involves techniques to statically and dynamically verify a given
program. This course will cover some program analysis techniques including the
classic Hoare-style pre-condition/post-condition verification, symbolic testing
and some techniques for formally verifying programs. We will also teach
elementary static program analysis techniques and their usage in program
verification and testing.
In summary, this course will be an introductory, graduate-level course in formal
verification and program analysis and will act as a bridge course for Computer
Science and Software Engineering students.

CS/DS 704 Multi Agent Systems


Pre-requisites: CS/DS 601; Credit hours: 4
An increasingly popular way of thinking about information systems is to model
them as a society of autonomous and interacting agents, in contrast to that of a
large machine containing parts that execute specified instructions. This shift in
paradigm is necessitated by the enormously increased complexity of modeling
when the system becomes large and/or has to operate in uncertain
environments. Designing systems made of autonomous agents is a vastly
IIIT-Bangalore

Page 26

different problem from that of designing large intricately specified systems and
hence derives concepts from various sources like rational choice theory, game
theory, modal logics, general systems theory and theories of emergence. The
objective of this course is to familiarize the student with essential concepts from
these fields towards designing multi-agent systems.

CS/DS 706 Machine Learning


Credit hours: 4
This course will cover a number of machine learning techniques with emphasis
on the theory behind these techniques that affects the practice of these
methods.
There is also a significant amount of literature on the theory of learnability
that attempts to answer questions like:
What is learning can we define learning precisely in a computational
sense?
How can learning be quantified how well has an algorithm learnt
something?
Are there inherent limitations to machine learning can we say some
concepts are more easily learnable than others?
The course will cover some amount of learnability theory, just enough to
appreciate why these questions (and their answers) are important, how these
lead to effective learning algorithms and how these provide benchmarks for
effective learning. Also we would highlight how learnability is deeply related to
information theory. This part will account for approximately 1520%
of the course.
The presentation and coverage of topics will be biased towards breadth and
not so much on depth. Similarly it will be biased towards sound conceptual
understanding of the theoretical underpinnings and not so much on
mathematical rigor. The treatment will be mathematically intense but hopefully
not inaccessible.
A notable omission from this course is Neural Networks and the other recent
extensions of neural networks to Deep Learning Networks.

CS 707 Logic in Computer Science


Pre-requisites: CS/DS 601 ; Credit hours: 4
Logic covers many aspects of Computer Science, including algorithms, software
engineering, programming, artificial intelligence etc. This course will cover the
IIIT-Bangalore

Page 27

basics of logic and some standard logics, with their syntax, semantics, decision
procedures and a selection of other topics that highlight their application in
computer science. Topics in logic that may be selected in a particular offering
of the course include propositional logic, first order logic, modal and temporal
logics, recursion theory, model theory, proof theory, and type theory. Some
introduction to undecidability and Gdel's incompleteness theorems may also
be attempted by the instructor.

CS/NCE 710 Discrete Event Systems Modeling and Simulation


Credit: 4
Discrete event Systems are event-driven finite state systems. A very wide range
of practical systems are discrete event systems. Much of the study of discrete
event systems through modeling and simulation involves probability concepts
and statistical analysis methods. The course will cover concepts in discrete
event system modeling and simulation; queuing systems; random number and
variate generation; input modeling; verification and validation of simulation
models; output analysis; basics of stochastic timed Petrinets; discrete event
simulation of computer networks.

CS/SE 711 Design and Analysis of Safety-Critical Systems


Pre-requisites:, CS 601; Credit hours: 4
The theoretical background in safety will be covered from the perspectives of
classical engineering as well as software engineering. Techniques such as faulttree analyses, duration calculus, temporal logic, three-valued safety logic, etc.,
will be presented. Applications of these to practical problems may also be
discussed. Students will understand and appreciate the notion of safety-critical
systems, and will gain a better understanding of the fundamental concepts of
systems theory and design that are often applied in related areas.

CS 712 Quantum Computing


Credit hours: 4
Quantum computing is a hot topic in computer science, physics, and
engineering. It has changed the way scientists think about the fundamental
operations and limits of computers and computation. In recent times it has
evoked great interest and funding, in academia, government research labs,
and in the IT industry. The course will introduce the main ideas and methods of
quantum computing. It will include background material in mathematics,
IIIT-Bangalore

Page 28

quantum physics, and computer science necessary to understand quantum


computing. However, most discussions will focus on developing the central
results of quantum computation. At the end of the course the student is
expected to develop a working understanding of the fundamental tools and
results of this emerging and field. Hopefully it will also stimulate students to
explore further possibilities offered by this new form of computation with the
objective of solving complex problems which, as of now, do not have efficient
solutions on Turing machines.

IIIT-Bangalore

Page 29

ELECTIVE AREA II:

DATA SCIENCE
Objectives: Large, global information networks pervade all aspects of human
endeavor -- be they scientific, commercial, political or social activities. There is
an urgent need for information technology professionals to understand the
nature of information and information systems, how information affects us and
how information can be managed. Further, this understanding must be based
on sound engineering principles that enable the professional to systematically
and dispassionately address issues of information management. Information
systems require multiple perspectives pertaining to information. These include
theoretical foundations of computing, information science, data structures and
algorithms; engineering issues like database design, data mining and
information systems design; and social and economic aspects of information.
Students taking up this major are expected to graduate with strong foundations
in core computer science subjects and a comprehensive understanding of
large scale information systems.

CS/DS 601 Theory of Computation


Credit hours: 4
The goal of this course is to make students understand the foundations of
computation. We will provide answers to very basic questions like
What are the fundamental capabilities and limitations of computers?
What makes some problems computationally hard and others easy?
Various models of computation have been proposed over the years to capture
certain fundamental aspects of computation. The course will concentrate on
three classes of models, in order of increasing expressive power:
Finite memory
Finite memory with stack
Unrestricted
We will also cover the corresponding hierarchy of language classes defined by
grammars of increasing complexity and their respective equivalence to
computational models above:
Right-linear grammars
Context-free grammars
Unrestricted grammars
This will be followed by the basics of complexity theory, where some prominent
complexity classes will be covered.

IIIT-Bangalore

Page 30

CS/DS 602 Advanced Algorithms


Pre-requisites: CS 501; Credit hours: 4
The course will cover Convex Optimization, and Non-Convex Optimization in
depth. Topics will include topics from Duality Theory, Global optimization
conditions, Advanced Linear Programming (such as Dantzig-Wolfe, Column
Generation Techniques), Game Theory, and Statistical Learning Theory.
Application to domains including Operations Research, Robotics, and VLSI will
be discussed.

DS/SE 603 Data Modeling


Pre-requisites: DS 501; Credit hours: 4
This course will provide an in-depth understanding of data modeling both from a
theoretical as well as a practical point of view. Building on the concepts
introduced in the DBMS course, this course will provide an understanding of
advanced data modeling concepts. In particular, the course will cover in detail
semantic data models with emphasis on XML and object-oriented databases.
An initial overview of Dimensional Modeling is also provided. The emphasis is not
only on the logical aspects of the data model but also the implementation
aspects of these data models using freely available software.

DS 604 Web Information Retrieval


Pre-requisites: GEN 501; Credit hours: 4
The objective of this course is to familiarize the student with the growing field of
web information retrieval, extraction and mining. This encompasses algorithms
from various domains like information extraction and retrieval, semantics
analysis, network theory, distributed computing and learning theory.

CS/DS 605 Information Networks


Pre-requisites: GEN 501: Graph Theory (desirable); Credit hours: 4
Recent times have seen a spurt in several kinds of information networks of
varying size and characteristics. Some examples are: the Internet, mobile
networks, wireless ad hoc networks, VPNs, P2P networks, etc. Information
networks are meant to manage information needs in any large system. Initially
information networks were thought to be analogous to networks managing
material logistics. However, we now know that information possesses
characteristics that are quite distinct from that of material artifacts. In addition,
there is also a growing realization that meaning or semantics is inherent in the
way information is organized in a large network. The human brain for example, is
a huge information network. There is hence a need to study information
IIIT-Bangalore

Page 31

networks as a topic in its own right. In this course, we will contrast the nature of
information with that of physical materials. We will then look at different models
of network formation primarily based on two generative models: random graph
phenomena and rational autonomous agents. We will also study dynamics of
information networks concerning problems like information cascades, search
and the formation of semantic overlays.

CS/DS 607 Graph Theory and Applications


Credit hours: 4
This course introduces concepts of graph theory and some interesting and
important algorithms and problems. Concepts discussed include directed and
undirected graphs, trees and general graphs, planarity in graphs, graph
colorings, network flow and connectivity, matching and independent sets, and
centrality
and
facility
location.
Applications
of
these
to
practical problems will also be discussed, with the student completing a
significant project as part of the class.

DS 701 Advanced Database Management Systems


Pre-requisites: DS 501; Credit hours: 4
This course has two objectives. The practical part is to develop a relational
database, which has elements of database, index, buffer management, query
processing and optimization, in C/C++ or Java on a platform of the students
choice. The theory will look at databases beyond the popular relational
database model and B+Tree indexing. It will explore databases to store different
types of data like XML and multi-media, different database models like
OODBMS, ORDBMS, and special requirements in parallel databases, temporal
databases and data warehousing. Database-specific issues will cover security,
distributed processing/ storage, multi-dimensional indexes involving R-Trees/UB Trees, as well as bitmap indexing are covered.

CS/DS 702 Distributed Computing


Pre-requisites: CS 510; Credit hours: 4
This course will discuss the theoretical and practical aspects of parallel and
distributed systems to provide a broad exposure to some of the special issues
arising in distributed computing. A distributed system is a network of
independent computers that communicate with one another. This structure for
distributed systems leads to three important features: concurrency of processes
IIIT-Bangalore

Page 32

on the nodes of a distributed system, lack of global time, and independence of


component failures from one another. This course gives students the opportunity
to understand and appreciate important algorithmic aspects of distributed
computing, enables a better understanding of some of the fundamental
concepts of distributed systems design that are often applied in related areas,
and exposes the students to current trends and technology in distributed
computing.

DS 703 Geographic Information Systems


Credit hours: 4
This course will help students understand how to obtain and analyze geographic
data sets. It will do so by introducing principles, applications, trends and
pertinent research issues of geographic information systems and sciences,
including remote sensing (RS), cartography, geography and global positioning
systems (GPS). Hands on experience in solving problems with spatial analysis will
be provided using geographic information systems software (specifically open
source tool sets).

CS/DS 704 Multi Agent Systems


Pre-requisites: CS/DS 601; Credit hours: 4
An increasingly popular way of thinking about information systems is to model
them as a society of autonomous and interacting agents, in contrast to that of a
large machine containing parts that execute specified instructions. This shift in
paradigm is necessitated by the enormously increased complexity of modeling
when the system becomes large and/or has to operate in uncertain
environments. Designing systems made of autonomous agents is a vastly
different problem from that of designing large intricately specified systems and
hence derives concepts from various sources like rational choice theory, game
theory, modal logics, general systems theory and theories of emergence. The
objective of this course is to familiarize the student with essential concepts from
these fields towards designing multi-agent systems.

CS/DS 705 Conceptual Modeling and Knowledge Representation


Pre-requisites: CS/DS 601; Credit hours: 4
The proposed course covers different approaches adopted in philosophy,
mathematics and computer science for formally modeling semantic structures
and knowledge. The objective of the course is to gain an appreciation into
IIIT-Bangalore

Page 33

formal modeling techniques and modeling theory to describe abstractions and


relationship structures. The students are expected to execute one fairly major
conceptual modeling project involving describing a realistic system in formal
terms.

CS/DS 706 Machine Learning


Credit hours: 4
This course will cover a number of machine learning techniques with emphasis
on the theory behind these techniques that affects the practice of these
methods.
There is also a significant amount of literature on the theory of learnability
that attempts to answer questions like:
What is learning can we define learning precisely in a computational
sense?
How can learning be quantified how well has an algorithm learnt
something?
Are there inherent limitations to machine learning can we say some
concepts are more easily learnable than others?
The course will cover some amount of learnability theory, just enough to
appreciate why these questions (and their answers) are important, how these
lead to effective learning algorithms and how these provide benchmarks for
effective learning. Also we would highlight how learnability is deeply related to
information theory. This part will account for approximately 1520%
of the course.
The presentation and coverage of topics will be biased towards breadth and
not so much on depth. Similarly it will be biased towards sound conceptual
understanding of the theoretical underpinnings and not so much on
mathematical rigor. The treatment will be mathematically intense but hopefully
not inaccessible.
A notable omission from this course is Neural Networks and the other recent
extensions of neural networks to Deep Learning Networks.

DS 707 Data Analytics


Credit hours: 4
Information explosion pervades all spheres of computing. The computational
and regulatory need of day-to-day transactional data ranges from a few days
to not more than a few months. However, with decreasing costs of data
storage, transactional data is being retained for several years now in order to
derive additional insights from the transactional data. The process of deriving
this additional insight from vast quantities of data is referred to as Data Analytics.
This course builds on the knowledge gained in the core database systems
IIIT-Bangalore

Page 34

course by taking a look at some deeper aspects of data warehouses, online


analytical processing (OLAP), and data mining.

DS 708 Semantic Web


Credit hours: 4
This course gives the student an introduction to the concepts of semantic web
and the associated technologies.

IIIT-Bangalore

Page 35

ELECTIVE AREA III:

SOFTWARE ENGINEERING
SE 601 OOAD, UML and Introduction to Web 2.0
Credit hours: 4
This course will introduce UML concepts and diagrams through a case study. It
will discuss MVC architecture, programming to interface, design principles in the
context of building flexible software systems.
Students will build an object model as a case study for some game or some web
application.
Students need to learn a modeling tool (like RSA, Netbeans etc.) and represent
their model using the tool. Finally a working prototype should be developed in
Java.
Depending on the focus, the course will also discuss:
Introduction to design patterns and web service (wsdl, soap, uddi), or
The history of Web 2.0, its building blocks, RIA (AJAX, Flex, XAML), and
building RIA applications (with Flex, coldfusion, and mashups).

SE 602 Software Testing


Credit hours: 4
Software Testing plays a critical role in the software development lifecycle. This
course exposes students the various concepts, tools, and techniques in the area
of software testing. Topics will include the role of testing in the SDLC, the
verification versus validation, various types of testing, test automation and
managing test results. The emphasis is on hands-on activities that apply the
principles taught in the course.

DS/SE 603 Data Modeling


Pre-requisites: DS 501; Credit hours: 4
This course will provide an in-depth understanding of data modeling both from a
theoretical as well as a practical point of view. Building on the concepts
introduced in the DBMS course, this course will provide an understanding of
advanced data modeling concepts. In particular, the course will cover in detail
semantic data models with emphasis on XML and object-oriented databases.
IIIT-Bangalore

Page 36

An initial overview of Dimensional Modeling is also provided. The emphasis is not


only on the logical aspects of the data model but also the implementation
aspects of these data models using freely available software.

SE/NCE 612 Fundamentals of Performance and Reliable IT Infrastructures


Pre-requisites: Credit hours: 4
This course will introduce fundamental concepts in performance-reliability analysis, including
modeling of software-hardware systems for performance reliability using queuing models, FSM
models, etc. Techniques to optimize performance-reliability will be discussed. A brief survey of
contemporary IT infrastructures will also be conducted.

SE 701 Design Patterns and Enterprise System Development


Pre-requisites: SE 601; Credit hours: 4
This seminar will introduce students to Design Patterns (Good Design principles,
Creational patterns, Behavioral Patterns, Structural patterns). It will cover
Container component architecture, MVC architecture, the Eclipse environment
(Plug-in architecture) and Jazz Environment. The course will provide exposure
to Struts, Hibernet, Junit frameworks,
and J2EE architecture. The student should work on a project which uses the
concepts taught in the course. The project typically involves developing plug-ins
in eclipse environment and/or building frameworks.

CS/SE 703 Automated Formal Verification


Credit hours: 4
Formal verification involves mathematically modeling and verifying a
system/software/hardware with respect to certain requirements and is
considered alternative to other verification techniques like testing and
simulation. Automated formal verification has been extensively researched for
the past three decades and now, several open source and commercial tools
are available. Model checking is a particular technique in automated formal
verification that involves modeling and verifying finite state systems like
hardware design, communication protocols etc. The course will involve
extensive modules on modeling and specification and a group of model
checking algorithms involving branching time specifications will be taught.
Program analysis involves techniques to statically and dynamically verify a given
program. This course will cover some program analysis techniques including the
classic Hoare-style pre-condition/post-condition verification, symbolic testing
and some techniques for formally verifying programs. We will also teach
elementary static program analysis techniques and their usage in program
verification and testing.
IIIT-Bangalore

Page 37

In summary, this course will be an introductory, graduate-level course in formal


verification and program analysis and will act as a bridge course for Computer
Science and Software Engineering students.

CS/SE 711 Design and Analysis of Safety-Critical Systems


Pre-requisites:, CS 601; Credit hours: 4
The theoretical background in safety will be covered from the perspectives of
classical engineering as well as software engineering. Techniques such as faulttree analyses, duration calculus, temporal logic, three-valued safety logic, etc.,
will be presented. Applications of these to practical problems will also be
discussed,
with
the
student
completing
a
significant
project as part of the class. Students will understand and appreciate the notion
of safety-critical system, and gain a better understanding of the fundamental
concepts of systems theory and design that are often applied in related areas.

SE 712 Performance, Reliability Analysis and Optimization of Contemporary


infrastructures
Pre-requisites: SE/NCE 612; Credit hours: 4
The objective of this course is to familiarize students with current industrial
practice in information technology, and to enable them to work at the level of a
middle level architect.
This course will examine modern IT industrial practice in several industries and the
design/analysis/optimization based on principles in IT . The topics will vary
depending on the current practice in industry, and the state-of-art in academia,
but will include examples selected from the banking, insurance, supply logistics,
health care, multi-media/ entertainment, and telecommunication industries

IIIT-Bangalore

Page 38

ELECTIVE AREA IV:

NETWORKING & COMMUNICATION


and EMBEDDED SYSTEMS
NCE 601 Wireless Access Networks
Pre-requisites: NCE 501; Credit hours: 4
This course will mainly cover broadband wireless access networks, with an
emphasis on Wireless-LAN and WiMAX. With many devices coming up with
wireless mode of operation and differential services, this course will examine
medium access control of different wireless access technologies along with
quality of services.

NCE 602 Wireless Communication


Pre-requisites: NCE 501; Credit: 4
Physical modeling of the wireless channel, fundamentals of radio propagation
and channel models; error probability in fading channels. Diversity (time,
frequency, antenna) and channel uncertainty. Narrow-band cellular systems
(GSM). Wideband Cellular Systems (CDMA, OFDM). Capacity of wireless
channel.

NCE 603 Digital Signal Processing


Credit hours: 4
This is a first level graduate course on Digital Signal Processing principles and
implementation. The course covers concepts of analog to digital conversion, LTI
systems, frequency domain representation (Fourier and Z transform), Digital Filter
Design, Filter realization, Fixed Point arithmetic/Quantization Effects. It will also
examine application areas such as, OFDM, DCT for image/speech compression.
Software implementation using Scilab and ADI Blackfin processor.

NCE 604 Design and Fabrication principles of Digital IC


Credit hours: 4
The course includes fabrication and design principles for building digital IC
blocks. The course will discuss about IC fabrication technology principles such as
Lithography, oxidation, diffusion, implantation, etching and other processes.
Design and layout of large scale digital integrated circuit layout, dynamic logic,
IIIT-Bangalore

Page 39

circuit design and layout strategies for large scale CMOS circuits will be
discussed in this course. This introductory course should offer fundamentals to
students who are interested in learning more on VLSI verification, Analog CMOS,
VLSI system design, Advanced IC processing, MEMS-NEMS and Electronics
packaging course.

NCE 607 Design Techniques for CMOS Integrated Circuits


Pre-requisites: Undergraduate course on circuit theory and digital electronics.
Theoretical and practical aspects of the integrated circuit design using CMOS
technology will be discussed to provide the students with an exposure to major
design techniques and tools. Topics to be covered include:
a) Design techniques for CMOS analog circuits
Single and multistage amplifier, differential amplifier & current mirror,
frequency response, feedback, stability & compensation, operational
amplifier and oscillator
b) Design methodology for digital CMOS ICs
Introduction to cell based design, design of standard cells, abstraction
levels and views in HDL, synthesis and simulation
c) Introduction to relevant CAD tools
d) Digital Systems Design with FPGAs
e) Introduction to FPGA design and system architecture
Verilog and VHDL: different models, simulation cycles, process, concurrent
and sequential statements, loops, delay models
Hardware-software co-simulation, SOPC
Lab exercises includes basic TDM and SPI master/slave development, 3D
DMA, SPI generation glue logic, timing analysis
Lab exercises will depend on the progress of the course

NCE 608 Informatics in Industrial Process Automation


Pre-requisites: none; Credit: 4
The course aims to give an overview of the application of information
technology in modern industrial and utility automation with the focus on current
technology, terminology, and the practices. The course covers the need,
evolution, types, subsystems in automation systems such as instrumentation,
control, and human machine interaction for realising Programmable Logic
Control (PLC), Distributed Control Systems (DCS), Network Control Systems (NCS),
Supervisory Control and Data Acquisition (SCADA), etc. Finally, the application
areas such as manufacturing processes, life sciences processes, and continuous
IIIT-Bangalore

Page 40

industrial processes are discussed with case studies. To sum up, the main
emphasis is on the deployment of information technology in realizing the
automation systems for various applications.

CS/NCE 609 Real-time Systems


Credit hours :4
Hard and soft real-time systems, Deadlines and timing constraints, Workload
parameters, Periodic task model, Precedence constraints and data
dependency, Real time scheduling techniques, Static and dynamic systems,
Optimality of EDF and LST algorithms, Off-line and on-line scheduling, Clock
driven scheduling, cyclic executives, scheduling of aperiodic and static jobs,
Priority driven scheduling, fixed and dynamic priority algorithms, Schedulable
utilization, RM and DM algorithms, priority scheduling of aperiodic and sporadic
jobs,
Deferrable and sporadic servers, Resource access control, priority inversion,
priority inheritance and priority ceiling protocols, Real-time communication,
Operating systems.

CS/NCE 610 Computer Architecture


Credit hours: 4
Processor architecture, pipelining, superscalar processors, hardware and
compiler support
for branch prediction, out-of-order instruction issue, speculative execution and
other techniques for high-performance, instruction and data cache
organizations, multilevel caches, parallel memory systems, support for virtual
memory, multiple processor systems, interconnection networks, introduction to
advanced topics.

CS/NCE 611 Information Theory and Coding


Credit: 4
The objective of the course is to answer this fundamental question : Is it possible
to communicate reliably over a noisy channel. If possible , what is the capacity
of the channel, what are the constraints in communication. In answering this,
the course would introduce the measure of information, its properties, give an
overview on various codes used for data compression, source coding theorem,
dene a communication channel , optimal channel capacity, channel coding
theorem, properties of channel capacity, Source channel separation theorem,
IIIT-Bangalore

Page 41

notes on rate distortion, Multiple access channel and its capacity, Correlated
sources, slepian wolf theorem

SE/NCE 612 Fundamentals of Performance and Reliable IT Infrastructures


Pre-requisites: Credit hours: 4
This course will introduce fundamental concepts in performance-reliability analysis, including
modeling of software-hardware systems for performance reliability using queuing models, FSM
models, etc. Techniques to optimize performance-reliability will be discussed. A brief survey of
contemporary IT infrastructures will also be conducted.

NCE 701 Mobile Computing with IMS Architecture


Pre-requisites: Credit hours: 4
Electronic communication and personal-computational devices are becoming
more pervasive and complex.
The applications requirements over
communication networks are increasingly more demanding (with respect to
QoS and reliability, etc.). Moreover, the networks over which the data traverses
are becoming more heterogeneous (devices cross different kinds of networks
like cellular and Internet, due to mobility). Such requirements lead to systems
that are challenging to study and build. One way of solving above the complex
problem is to study existing well accepted communication architectures
(topology and protocols) and identify the technologies envisioned for better
mobility across various networks. This course focuses on signalling, hand off, soft
switching and data transportation architecture over heterogeneous networks.
Moreover, it also focuses on possible ideas to overcome different challenges
due to mobility with respect to connectivity and QoS.

NCE 702 Wireless Sensor Networks


Credit hours: 4
Smart environments represent the next evolutionary development step in
building, utilities, industrial, home, shipboard, and transportation systems
automation. Like any sentient organism, the smart environment relies first and
foremost on sensory data from the real world. Sensory data comes from multiple
sensors of different modalities in distributed locations. Along with sensing abilities,
the ability of the sensor nodes to communicate using radio channels enables
the sensor nodes to form cooperative networks. In this course, we will explore the
wireless sensor networks, the challenges involved, architectures, communication
protocols and applications. It is expected that labs and a project will be a
significant part of the course.

IIIT-Bangalore

Page 42

NCE 703 Mechatronics


Credit: 4

NCE 706 Advanced Digital Communication


Credit: 4
Multi-user capacity and opportunistic communication: MIMO systems, multi-user
communication. Cognitive Radio based systems: Theory and introduction,
application to 4G systems.

NCE 707 Real-time Embedded Communications Systems


Credit: 4
This is an active learning course that aims at systematic understanding of DSPbased communications system fundamentals and real-time implementation.
Students will design a digital communication system (Digital Radio Mondiale
DRM, see www.drm.org) in both desktop simulation and then subsequent
mapping onto an embedded platform using an ARM9 processor.

NCE 708 Communication in Industrial Process Automation


Pre-requisites: none; Credit: 4
With heavy influence of information, communication, networking, embedded
technologies, the automation technology is fast moving towards total
decentralization (networked embedded systems with open interconnections).
The course mainly deals with the application of data and network
communication in automation systems, types of networks such as
sensor/actuator, device, control, etc., communication protocols, proprietary
and open, OSI Reference model. The course discusses the protocols (proprietary
and open) commonly employed in manufacturing (ASi, CAN, LON, etc) and
continuous process industries (Foundation Fieldbus, Profibus, HART, etc.). Finally,
the course discusses the communication between application programs (DDE,
OPC, etc.) which is a necessity for third party application software integration.

IIIT-Bangalore

Page 43

NCE 709 Real-time Embedded Communications Systems


Credit: 4
This is an active learning course that aims at systematic understanding of DSPbased communications system fundamentals and real-time implementation.
Students will design a digital communication system (Digital Radio Mondiale
DRM, see www.drm.org) in both desktop simulation and then subsequent
mapping onto an embedded platform using an ARM9 processor.

CS/NCE 710 Discrete Event Systems Modeling and Simulation


Credit: 4
Discrete event Systems are event-driven finite state systems. A very wide range
of practical systems are discrete event systems. Much of the study of discrete
event systems through modeling and simulation involves probability concepts
and statistical analysis methods. The course will cover concepts in discrete
event system modeling and simulation; queuing systems; random number and
variate generation; input modeling; verification and validation of simulation
models; output analysis; basics of stochastic timed Petrinets; discrete event
simulation of computer networks.

IIIT-Bangalore

Page 44

OPEN ELECTIVES
ITS 601 Dynamics of the Information Technology Industry
Pre-requisites: none; Credit hours: 4
This course is designed to analytically comprehend the institutional forces that
have shaped the changes to the technical, social and spatial divisions of labor
in the ICT industry. Such comprehension will help participants think strategically
about how changing social and economic conditions determine what
technologies are developed in the industry and how they are produced, who
produces them and where they are produced. The course will survey the
phenomenon of convergence, the organization of production in the global
hardware and software industries, and the manifestation of the industries in
various regions of the world.

ITS 701 Economic and Social Impacts of Information Technology


Pre-requisites: none; Credit hours: 4
This goal of this course is to critically assess the institutional forces that shape and
create the demand for ICTs. It will also discuss how the consumption of ICTs
impacts economy and society. The course will help participants think about
how changing social and economic conditions determine what technologies
are consumed and how they are consumed, who consumes them and where
they are consumed. Broadly, the course will examine the historical specificity of
the contemporary ICT revolution, the economic and organizational impacts of
ICTs, the digital divide, and the environmental costs of ICTs.

ITS 702 Intellectual Property Rights


Pre-requisites: none; Credit hours: 4
The objective is to train students in the handling of intellectual property rights
(IPR) issues, especially those related to litigation. It introduces general legal
principles, international treaties and agreements, etc., related to IPR, and the
roles played by legislatures, patent offices, international organizations, and the
judiciary in shaping, granting, and maintaining those rights. The focus will then
shift to software, business methods, and biotechnology patents: their relevance;
raging debates; applicable laws and procedures related to patent acquisition,
maintenance, revocation, infringement, and litigation; and landmark judicial
decisions. Finally, a survey will be made of IPR policies and reforms being
IIIT-Bangalore

Page 45

pursued by various governments in relation to their respective national


economies and their interaction with the global economy.

GEN 601 Introduction to Scientific Computation


Credit hours: 4
The goal of this course is give an introduction to the fundamental issues and
techniques of numerical computation for mathematical, computational, and
engineering problems. The course contents include
Basics: Scientific Computing, IEEE floating point arithmetic, sources of
computational errors, well-posed problems, stability, conditioning.
Software Implementation: Various software implementations for scientific
computing applications, MATLAB for numerical computing
Matrix Operations: Decompositions (LU factorization, Cholesky
decomposition, singular value decomposition), Gaussian elimination,
matrix-vector multiplication, pivoting, banded matrices.
Iterative Methods for Linear Systems: Jacobi, Gauss-Seidel, Conjugate
gradient, power method, Multigrid methods, Software for linear systems
LINPACK, LAPACK, etc.
Data fitting and discrete approximation: Interpolation, least-squares,
discrete methods, splines.
Numerical integration and differentiation: Rectangle, trapezoid and
Simpson's rules, Gauss quadrature, finite difference formulas.
Numerical solution to initial value problems: Euler's method, Implicit vs.
Explicit methods, Runge-kutta methods, Multi-step methods.
Numerical solution to eigenvalue problems: Characteristic polynomial,
Power method, Rayleigh quotient.
Non-linear Equations: Solutions, convergence rates, solutions in one
dimension, equation systems.
Applications: (will cover few depending on time available) e.g., Fast
fourier transform, spectral graph partitioning, data analysis using
graphics/visualization.

IIIT-Bangalore

Page 46