(IT)
Programme Curriculum
(Effective from academic year 2013-14)
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
Page 3
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
Introductory Programming 1
Prep term
Introductory Programming 2
Prep term
Semester1
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.
Course
Summer
Technical Communication
Summer
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.
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
IIIT-Bangalore
Page 8
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
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
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
1This
name
comes
from
ACM
project.org/web/classifications/ACM.html)
IIIT-Bangalore
classification
system
(see
http://cran.r-
Page 15
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
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
IIIT-Bangalore
Page 19
IIIT-Bangalore
Page 20
ELECTIVE AREA I:
COMPUTER SCIENCE
Objectives:
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.
IIIT-Bangalore
Page 22
Page 23
Page 24
Page 25
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.
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.
Page 28
IIIT-Bangalore
Page 29
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.
IIIT-Bangalore
Page 30
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.
Page 32
Page 33
Page 34
IIIT-Bangalore
Page 35
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).
Page 36
Page 37
IIIT-Bangalore
Page 38
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.
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.
Page 41
notes on rate distortion, Multiple access channel and its capacity, Correlated
sources, slepian wolf theorem
IIIT-Bangalore
Page 42
IIIT-Bangalore
Page 43
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.
Page 45
IIIT-Bangalore
Page 46