keshai mechcurriculu

46
©IIIT-Bangalore Page 1 M.Tech. (IT) Programme Curriculum (Effective from academic year 2013-14) International Institute of Information Technology Bangalore – 560100 August 2013

Upload: pruthvi-donti-reddy

Post on 06-Dec-2015

222 views

Category:

Documents


8 download

DESCRIPTION

kothaga veluvadutunna

TRANSCRIPT

Page 1: keshai Mechcurriculu

©IIIT-Bangalore Page 1

M.Tech. (IT)

Programme Curriculum (Effective from academic year 2013-14)

International Institute of Information Technology

Bangalore – 560100

August 2013

Page 2: keshai Mechcurriculu

©IIIT-Bangalore Page 2

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

Page 3: keshai Mechcurriculu

©IIIT-Bangalore Page 3

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

Page 4: keshai Mechcurriculu

©IIIT-Bangalore Page 4

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)

0 credits

Introductory Programming (C and Java)

(PASS / FAIL mandatory courses)

Semester 1 (15 weeks)

16 credits

5 core courses

(3 X 4 credits + 2 X 2 credits = 16 credits)

Semester 2 (15 weeks)

18 credits

One SE Theory Core and 4 Electives

(1 X 2 credits + 4 X 4 credits = 18 credits)

Summer (8 weeks)

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

Page 5: keshai Mechcurriculu

©IIIT-Bangalore Page 5

Proposed Credits %

IT Core Course Credits 21 28 %

Peri-IT Core Course Credits 6 8 %

Elective Course Credits 32 43 %

Internship / Thesis Credits 16 21 %

Total credits requirement for M.Tech. 75

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.

Table 3: List of core IT courses

Course Credits Semester

Introductory Programming 1 0 Prep term

Introductory Programming 2 0 Prep term

Data Structures and Algorithms 4 Semester1

Computer Networking &

Communication and Embedded

System

4 Semester 1

Mathematics for IT 4 Semester 1

Operating Systems 2 Semester 1

Page 6: keshai Mechcurriculu

©IIIT-Bangalore Page 6

Database Systems 2 Semester 1

Software Engineering Practices

(Theory) 2 Semester 2

Software Projects with Industry

Practices (Project of 6 months) 2 Summer

Seminar 1 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.

Table 4: List of Peri-IT Core courses

Course Credits Semester

Marketing and Strategy 3 Summer

Technical Communication 3 Summer

Total Peri-IT core credits 6

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

Page 7: keshai Mechcurriculu

©IIIT-Bangalore Page 7

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.

Page 8: keshai Mechcurriculu

©IIIT-Bangalore Page 8

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 institute’s

calendar (which will be after the thesis’s 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.

Page 9: keshai Mechcurriculu

©IIIT-Bangalore Page 9

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 semester’s 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 Introductory Programming I & II

Term Preparatory Term

Course

Credits 0

Duration 3 weeks

Introductory Programming I

C Programming

(Morning)

Introductory Programming I

Java Programming

(Afternoon)

Session

duration 3 hours per day

Session

duration 3 hours per day

Sessions

per week 5

Sessions per

week 5

Total

duration 45 hours (3 weeks) Total duration

45 hours (3

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

Page 10: keshai Mechcurriculu

©IIIT-Bangalore Page 10

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 built-

in 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

Page 11: keshai Mechcurriculu

©IIIT-Bangalore Page 11

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, de-

serializing 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

Page 12: keshai Mechcurriculu

©IIIT-Bangalore Page 12

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, contra-

positive, 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.

Page 13: keshai Mechcurriculu

©IIIT-Bangalore Page 13

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, Newton’s method, Newton’s method with

equality constraints, interior-point methods

Page 14: keshai Mechcurriculu

©IIIT-Bangalore Page 14

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 Engineering

Practices

Course Credits 4

Lectures hours per week 2

Total number of lecture

hours

(per semester)

25

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.

Page 15: keshai Mechcurriculu

©IIIT-Bangalore Page 15

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, non-

functional 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 classification system (see http://cran.r-

project.org/web/classifications/ACM.html)

Page 16: keshai Mechcurriculu

©IIIT-Bangalore Page 16

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

Course Credits 2

Lectures hours per week 2

Total number of lecture

hours

(per semester)

32

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)

Page 17: keshai Mechcurriculu

©IIIT-Bangalore Page 17

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.)

Page 18: keshai Mechcurriculu

©IIIT-Bangalore Page 18

Operating Systems

The following table highlights some of the aspects of the Operating Systems

course:

Course Name Operating

Systems

Course Credits 2

Lectures hours per week 2

Total number of lecture

hours

(per semester)

32

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.

Page 19: keshai Mechcurriculu

©IIIT-Bangalore Page 19

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.

Page 20: keshai Mechcurriculu

©IIIT-Bangalore Page 20

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.

Page 21: keshai Mechcurriculu

©IIIT-Bangalore Page 21

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.

Page 22: keshai Mechcurriculu

©IIIT-Bangalore Page 22

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.

Page 23: keshai Mechcurriculu

©IIIT-Bangalore Page 23

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.

Page 24: keshai Mechcurriculu

©IIIT-Bangalore Page 24

-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

Page 25: keshai Mechcurriculu

©IIIT-Bangalore Page 25

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,

define 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

Page 26: keshai Mechcurriculu

©IIIT-Bangalore Page 26

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

Page 27: keshai Mechcurriculu

©IIIT-Bangalore Page 27

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 15–20%

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

Page 28: keshai Mechcurriculu

©IIIT-Bangalore Page 28

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 Gödel'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 fault-

tree 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,

Page 29: keshai Mechcurriculu

©IIIT-Bangalore Page 29

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.

Page 30: keshai Mechcurriculu

©IIIT-Bangalore Page 30

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.

Page 31: keshai Mechcurriculu

©IIIT-Bangalore Page 31

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

Page 32: keshai Mechcurriculu

©IIIT-Bangalore Page 32

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 student’s

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

Page 33: keshai Mechcurriculu

©IIIT-Bangalore Page 33

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

Page 34: keshai Mechcurriculu

©IIIT-Bangalore Page 34

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 15–20%

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

Page 35: keshai Mechcurriculu

©IIIT-Bangalore Page 35

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.

Page 36: keshai Mechcurriculu

©IIIT-Bangalore Page 36

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.

Page 37: keshai Mechcurriculu

©IIIT-Bangalore Page 37

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.

Page 38: keshai Mechcurriculu

©IIIT-Bangalore Page 38

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 fault-

tree 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

Page 39: keshai Mechcurriculu

©IIIT-Bangalore Page 39

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,

Page 40: keshai Mechcurriculu

©IIIT-Bangalore Page 40

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

Page 41: keshai Mechcurriculu

©IIIT-Bangalore Page 41

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,

define a communication channel , optimal channel capacity, channel coding

theorem, properties of channel capacity, Source channel separation theorem,

Page 42: keshai Mechcurriculu

©IIIT-Bangalore Page 42

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.

Page 43: keshai Mechcurriculu

©IIIT-Bangalore Page 43

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 DSP-

based 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.

Page 44: keshai Mechcurriculu

©IIIT-Bangalore Page 44

NCE 709 Real-time Embedded Communications Systems

Credit: 4

This is an active learning course that aims at systematic understanding of DSP-

based 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.

Page 45: keshai Mechcurriculu

©IIIT-Bangalore Page 45

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

Page 46: keshai Mechcurriculu

©IIIT-Bangalore Page 46

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.