Outcome Based Computing Education: Designing Learning Outcomes for 100+ Computing Courses at JIIT

Posted on December 21, 2017

5


Author:  Sanjay Goel with  nearly 50 colleagues at the department of CSE & IT, JIIT

This article is a work in progress. Last updated: 24 Feb 2018.

____________________________________________________

With the increasing emphasis on the Outcome based Education in higher education, the engineering educators are required to design the Learning Outcomes for their courses. Often they do a very poor job at it.  Often, the learning outcomes turn out to be a mere restatement of the syllabus and are full of ambiguous outcomes like  “to understand”,  “to learn”,  “to know”, “to appreciate”, etc.,  about the selected topics.  Such ambiguous learning outcomes only reflect the content in terms of the topics of the syllabus.  They can be interpreted in many different manners and hence, they fail to guide the pedagogy as well as the assessment.  Hence, contrary to the common perception, designing LOs  is neither a straightforward nor a simple task. Even the faculty members having several years of experience in their specific subjects, find it challenging to design the appropriate learning outcomes. Consequently, in spite of the demand from various regulating and accreditation agencies, it is indeed very rare for universities, departments, and also industry’s training departments to do a systematic and meaningful exercise to develop the specific and unambiguous learning outcomes of their courses.   Mostly this exercise  ends up like an insignificant and meaningless ritual for the purpose of writing some reports for the agencies rather than as a tool for transforming the teaching-learning process.  Neither the well-intended teachers nor the administration takes the required level of interest in developing these.   At best, their focus remains on changing the topics of the syllabus.   In fact, there is a general lack of appreciation of the purpose, philosophy, and transformative power of outcome-based education and learning outcomes amongst engineering and computing educators. 

After several years of failed and unsystematic attempts (obviously without proper commitment) to develop the learning outcomes of all our courses, I finally got very serious about it in December 2017.  Since then I have been closely working with nearly all faculty colleagues at the department of CSE&IT, JIIT to design the learning outcomes of our several computing courses taught at JIIT in this academic year.  Identification of Graduate Attributes in the specific discipline is the first step towards developing the learning outcomes of all the courses in a particular education program.  In the last 40-50 years, many efforts have been made to define these attributes.  ABET and several other accreditation agencies including NBA in India have prescribed a minimum set of such attributes.  The CDIO approach very nicely summarises the overall goal of engineering education  as “to educate students who can: understand how to conceive, design, implement, and operate complex value-added engineering products, processes, and systems in a modern team-based engineering environment and are mature and thoughtful individuals.”   Several earlier posts on this blog list the desired competencies of graduates, engineers, and computing graduates.   The last post in this regard was posted on this blog on 9th January 2017 at https://goelsan.wordpress.com/2017/01/09/what-should-future-computing-graduates-learn-a-comprehensive-framework-of-desired-attributes/.   

Learning outcomes should express what students will achieve after going through a learning unit and how they are expected to demonstrate that achievement. Bloom’s original and revised taxonomies of learning objectives has been a great help in defining these learning outcomes.  In addition, the SOLO taxonomy and various other theories of knowledge and learning have also been very useful.   It took 2-5 iterations for completing the task for each course.  The faculty members were requested to develop the LOs wrt the factual, conceptual, procedural, and metacognitive content of their courses as well as the assessment tools used by them. The following  template was used for writing the LOs:

On successful completion of this course, the students should be able to:

1. describe/explain/outline/exemplify/differentiate/compare/summarize/Interpret/ extrapolate/estimate/infer/relate/model/categorize/convert….

2. apply/execute/implement/perform/…

3. analyse/detect/conclude/check/organise/attribute/justify/reason out/decompose/ validate/verify/test/inquire/…

4. synthesize/create/design/plan/formulate/generalise/generate/ produce/integrate/optimize/  hypothesize/collate/theorise/discover/…

5. evaluate/judge/critique/….

After some iterations for each course, we were able to come out with a reasonably good set of learning outcomes for nearly 100 of our computing courses.  I thank all my colleagues who have enthusiastically contributed to developing these LOs.     An attempt has been made to write these specific outcomes with a view to develop various technical competencies and graduate attributes among students. 

Just as we completed the first draft of our learning outcomes for  100+ courses, in February 2018, AICTE announced its new model curriculum for all BTech programs.  Interestingly, for the first time,  it has also specified the learning outcomes for all core courses in the BTech (CSE) program.  Consequently, the learning outcomes defined by JIIT faculty were further refined and expanded to incorporate the desired learning outcomes as recommended by the AICTE.   Creating learning outcomes is a work in progress in view of the rapidly changing technology as well as desired  professional competencies.  We hope to further improve these in view of the feedback and our own insights.  We also need to include more learning outcomes required for meeting responsible citizenship and workplace expectations from  our graduates. In this regard, we have started formulating course specific learning outcomes related to development of competencies that empower them to promote and contribute to sustainable development by carefully considering the current and future social, cultural, economic, and environmental impacts of their own actions. 

Simultaneously,  another and even more important parallel work is to transform the courses by bringing more alignment between these desired learning outcomes and the teaching-learning-assessment methods.   The computing educators at other universities and colleges may also like to benefit from this work to transform their own courses.  The LOs for more than 100 BTech and MTech courses taught by our department are given below:

I.  BTech Courses:

1.  Software Development Fundamentals-I (Coordinator: Dr.Chetna Dabas; 1st Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Develop HTML code for building web pages using lists, tables, hyperlinks, and frames.
  2. Develop the logic for solving problems – logical, analytical, mathematical puzzles.
  3. Comprehend, Write, Test, and Execute very simple python programs using the constructs such as lists, tuples, dictionaries, conditions, and loops.
  4. Write, test and execute simple SQL queries using MySQL to create database tables and retrieve the data from a single table.
  5. Comprehend and formulate flowcharts, algorithms, and C programs  for simple computational problems using the following constructs:
    • Control structures (conditional branching, iteration loops, etc.)
    • 1D and 2D arrays
    • User defined functions
    • Structures and Unions
    • Simple Recursion
  6. Test and execute the simple C programs and correct their syntactical and logical errors.

  7. Develop  C programs to generate various simple visual patterns.
  8. Develop C programs to perform basic vector, matrix, polynomial, and polygon operations, compute Factorials and Fibonacci series.

  9. Develop C programs to solve  elementary  numerical problems problems, namely approximating the square root of a number, finding the greatest common divisor. 

  10. Decompose a simple computational problem into functions and synthesize a complete program.

2.  Software Development Fundamentals-II (Coordinator: Dr.Aparajita Nanda; 2nd Sem)  

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Develop programs to solve simple numerical method problems, namely root finding of function, differentiation of function and simple integration.

  2. Comprehend and Develop Algorithms and C programs using structures, pointers, recursion, and files.
  3. Comprehend and Develop Algorithms and C programs related to linked list and its applications.
  4. Develop algorithms and programs for data centric problems, their storage, retrieval, searching, and sorting by application of array, linked list, stack, queue, and binary tree.
  5. Decompose a computing problem into functions and synthesize a complete program using divide and conquer approach.

  6. Test and execute C programs and correct syntactical and logical errors.

  7. Specify simple abstract data types and design implementations, using abstraction functions to document them.
  8. Recognize features of object-oriented design such as encapsulation, polymorphism, inheritance, and composition of systems based on object identity.
  9. Comprehend, implement, test, and execute simple C++ programs using the basic concepts of OOPs such as encapsulation, Inheritance and Polymorphism, and also Standard Template Library.
  10. Briefly describe important stages of Software Development Life cycle.

3.  Theoretical Foundations of Computer Science (Coordinator: Mahendra Gurve; 2nd Sem)

(Core Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the concepts of set theory, relations, functions and Boolean algebra in the context of various fields of computer science e.g. Database, Automata, Compiler etc.
  2.  Apply the partial order relations, Hasse diagrams and lattices for hierarchical priority and privilege based security problems.
  3. Convert formal statements to logical arguments and correlate these arguments to   Boolean logic, truth tables, rules of propositional and predicate calculus.
  4. For a given logic sentence express it in terms of predicates, quantifiers, and logical connectives.

  5. Evaluate Boolean functions and simplify expressions using the properties of Boolean algebra.

  6. For a given a problem, derive the solution using deductive logic and prove the solution based on logical inference.

  7. Apply the fundamental principle of counting, combinatorics and recurrence relations to find the complex pattern and sequences in given datasets.
  8. For a given a mathematical problem, classify its algebraic structure.

  9. Find the semi-group, group, subgroup, ring and fields in various sets with respect to operators.
  10. Develop the given problem as graph networks and apply the graph theory concepts for designing solutions of various computing problems e.g. shortest path, graph coloring, job sequencing, ranking the participants in a tournament problems etc.
  11. Explain basic concepts of automata theory and formal languages e.g. formal proofs, finite automata, regular expressions, regular languages, context-free grammars, context-free languages, Turing machines.
  12. Write a formal notation for strings, languages and machines.
  13. Design simple finite automata and regular expressions for given formal languages, convert regular expressions to finite automata and vice versa.

4. Data Structures  (Coordinator: Dr. Vikas Saxena; 3rd Sem) 

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Specify abstract data types and design implementations, using abstraction functions to document them.
  2. Develop programs using object oriented programming (C++)  including  STL;
  3. Develop test cases for their programs and debug the code.
  4. Implement and compare various searching algorithms (Linear, Binary, Interpolation, Median) and derive their time complexities;
  5. Implement and compare various sorting algorithms (Bubble, Selection, Insertion, Merge, Radix, and Quick) and derive their time complexities
  6. Convert a recursive algorithm to non recursive algorithm using stack;
  7. Develop the stack and queue based solutions for various computing problems;
  8. Implement the basic programs for  various operations (Storage, Search, Traverse, Insertion, Deletion, Updation, etc.) on various tree data structures, especially binary trees, k-ary trees, binary search trees, AVL tree, heap, B tree and B+ tree;
  9. Implement the basic programs for various operations (Storage, Search, Traverse, Insertion, Deletion, Updation, Path finding, Minimum spanning tree etc) on various Graph data structures.
  10. Implement Priority queue using Heap and Hashing techniques.

5. Database Systems and Web (Coordinator: Dr. Parmeet Kaur; 3rd Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Outline database system components and their functions
  2. Model the real world systems from the given requirements specification using Entity Relationship Diagrams.
  3. Convert the ER model into a relational logical schema using various mapping algorithms
  4. Apply SQL commands to define, query and manipulate a relational database
  5. For a given query, write relational algebra expressions for that query and optimize the developed expressions.

  6. Convert relational algebra expressions into SQL commands and vice versa.

  7. Normalize a given database up to Boyce Codd Normal Form (BCNF) based on identified keys and functional dependencies
  8. Develop a simple web application with client and server side scripting using Javascript and PHP and connect with a given relational database
  9. For a given transaction-processing system, determine the transaction atomicity, consistency, isolation, and durability.
  10. Implement the isolation property, including locking based on concurrency control and Serializability of scheduling.

6.  Computer Organisation and Architecture (Coordinator: Dr. Taj Alam; 3rd Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Draw the functional block diagram of single bus architecture of a computer and describe the function of the instruction execution cycle, RTL interpretation of instructions, addressing modes, instruction set.
  2. Summarize and compare different computer systems.
  3. Categorize different types of computers based on Instruction set Architecture.
  4. Apply the basic knowledge of performance metrics to assess the performance of systems.
  5. Develop assembly language programs for multiplication, division, and I/O interface using Mano-Computer, 8085, 8086 and MIPS 32.
  6. Given a CPU organization and instruction, design a memory module and analyze its operation by interfacing with the CPU.
  7. Write a flowchart for Concurrent access to memory and cache coherency in Parallel Processors and describe the process.
  8. Design hardware based models using 8085 kit and Arduino Board.
  9. Given a CPU organization, assess its performance, and apply design techniques to enhance performance using pipelining, parallelism and RISC methodology.
  10. Analyze the performance of pipeline and cache based systems.
  11. Briefly describe the architecture of Multi-computer and Multi-core systems.

7.  Operating Systems and Systems Programming (Coordinator: Hema N.; 4th Sem)

(Core Course:  Theory+ lab)

On successful completion of this course, the students should be able to:

    1. Explain and categorize the key functions of an operating system (OS).
    2. Explain the key design ideas that have been instrumental in the development of modern operating systems.
    3. Differentiate between different types of operating systems – Multiprogramming systems, Time-sharing systems, Parallel systems, Real-Time systems, Distributed systems and Mobiles systems. Compare Windows, Android and LINUX OS with respect to their key features and functionality.
    4. Develop programs to create different types of processes under Linux environment. Differentiate between various states of process and their representation using process control block (PCB).
    5. Analyse data structures used by an OS to manage the processes.
    6. Distinguish between long-term, medium-term, and short-term process scheduler.
    7. Assess the performance of different scheduling policies based on QoS parameters such as Turnaround Time, Waiting Time, Response Time, Utilization, Throughput, and Latency etc. Design and develop hybrid-scheduling algorithms for customized system requirement and compare them with existing scheduling algorithm.
    8. Differentiate the co-operative and non-cooperative processes. Use Inter Process Communication (IPC) methods for process communication.
    9. Develop program to create multitasking threads using pthread library under Linux environment. Distinguish between process and thread creation cost. Compare user level threads and kernel level threads. Assess the thread management facility in LINUX.
    10. Design and implement multithread process without and with synchronization.
    11. Examine process synchronization problem related to inconsistency and race conditions in shared variables. Compare hardware approaches to support mutual exclusion for shared resources.
    12. Implement and test various synchronization techniques like semaphores, binary semaphore and monitors via different classical test suites. Compare the concurrency and synchronization methods used in LINUX and Windows.
    13. Categorize the conditions that cause deadlock in resource allocation. Assess deadlock prevention strategies e.g. Deadlock prevention, Avoidance and detection, Recovery from deadlock. Design, program and test various deadlock handling techniques.
    14. Compare virtual memory (VM) with main memory and their advantage in building Virtual OS. Analyze various memory partitioning techniques used in memory management.
    15. Design and analyse Paging, Segmentation, and Segmentation with Paging for VM support in memory management.
    16. Contrast the virtual memory management mechanisms in LINUX and Windows.
    17. Differentiate synchronous and asynchronous interrupts. Design software and hardware exception handling in OS.
    18. Design and analyse interrupt hander for INT, Trap handing and device interrupt.
    19. Develop the I/O management functions for a given I/O devices and specific OS with uniform device abstraction by performing operations for synchronization between CPU and I/O controllers.
    20. Design, implement and assess file management systems (file organization and file directories) for different OS.
    21. Assess the key issues in the design of OS support for Input/Output Management. Compare the I/O mechanisms used in LINUX and Windows.
    22. Design and analyse various disk-scheduling algorithms.
    23. Examine the models used for memory protection in OS.
    24. Compare and contrast the architectures for standalone and distributed OS (DOS). Explain the need of additional features required by DOS for synchronization and deadlock handling.
    25. Analyse the key trade-offs between multiple approaches to operating system design. Evaluate and report appropriate OS design choices when building real-world systems.

8.  Algorithms and Problem Solving (Coordinator: Dr. Bharat Gupta; 4th Sem)

(Core Course:  Theory+ lab)

On successful completion of this course, the students should be able to:

  1. Analyse the complexity of different algorithms using asymptotic analysis.
  2. Differentiate between P, NP, NP-Complete, and NP-Hard problems.
  3. Analyse and select an appropriate data structure for a computing problem.
  4. Differentiate between different algorithm designs technique: Divide and Conquer Technique, Greedy, Backtracking, and Dynamic Programming. Also explain when an algorithmic design situation calls for using these.
  5. Develop programs using Divide and Conquer technique to solve various computing problems, e.g., Sorting, Strassen’s matrix multiplication, and Closest pair.
  6. Develop programs using Greedy approach to solve various computing problems, e.g., Minimum Spanning Trees, Shortest Path, Knapsack, Coinage, Job scheduling, Graph colouring, and Text compression.
  7. Develop programs using Backtracking technique to solve various computing problems, e.g., N queen, Rat in a maze, M-coloring, Hamiltonian Cycle detection, Travelling salesman, and Network flow.
  8. Develop programs using Dynamic Programming technique to solve various computing problems, e.g., Knapsack, Shortest path, Coinage, Matrix Chain Multiplication, Longest common subsequence, and String editing.
  9. Explain Query optimisation algorithms using Greedy and Dynamic programming approaches.
  10. Develop programs for String Matching problems using various approaches e.g., Finite Automata Matcher, Rabin Karp matching algorithm, Knuth Morris Pratt, Tries, and Suffix Tree.
  11. Explain, analyse, compare various search based problem solving methods e.g., Uninformed search (BFS, DFS, DFS with iterative deepening), Heuristics, and Informed search (hill-climbing, generic best-first, A*).
  12. Evaluate and apply appropriate algorithmic design technique for solving complex computing problem.
  13. Explain the ways to analyze randomized algorithms (expected running time, probability of error).

  14. Explain what an approximation algorithm is. Compute the approximation factor of an approximation algorithm (PTAS and FPTAS).

9.  Fuzzy Logic and Neural Networks (Coordinator: Dr.Kavita Pandey + Parul Agarwal; 4th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Differentiate between vagueness, ambiguity and uncertainty in natural language.
  2. Explain the concepts of fuzziness involved in various systems and fuzzy set theory.
  3. Formulate fuzzy rules to model the real world problems.
  4. Apply the different methods of de-fuzzification for decision making.
  5. Apply Fuzzy Logic, approximate reasoning and fuzzy inference systems to various application domains such as user’s behavioural modelling, control systems, etc.
  6. Explain the fundamental concepts of Artificial Neural Networks.
  7. Explain the various learning algorithms of supervised, unsupervised and associative memory networks.
  8. Use artificial neural networks in various applications of classification e.g. pattern recognition, character recognition, etc.
  9. Assess the suitability of fuzzy logic and artificial neural networks for a given problem.
  10. Design and implement artificial neural networks and fuzzy systems to solve practical problems.

10.  Computer Graphics and Image Processing (Coordinator: Dr.Vikas Saxena; 4th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the core concepts of computer graphics.
  2. Implement common 2D & 3D graphics algorithms, including viewing transformations, clipping, and projections;
  3. Explain the different color models;
  4. Explain general terminology of image processing systems;
  5. Implement Image processing algorithms for intensity transformations and spatial filtering;
  6. Implement Image processing for DFT, DCT, and DWT for gray-scale images.
  7. Write programs to implement image enhancement techniques to improve the image quality;
  8. Write programs to implement edge detection techniques, e.g., gradient, Laplacian, DOG, and LOG; and
  9. Model the solution for image processing based applications in areas like object counting, motion detection, and Optical Character Recognition.

11.  Systems, Engineering, and Computational Thinking (Coordinator: Dr. Sanjay Goel; 4th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Differentiate between the academic and real life problems and briefly describe the nature of work place engineering practices and software development activities.
  2. Improve upon their engineering and computing habits of mind for formulating and solving problems and designing system.
  3. Develop their awareness and sensitivity towards engineering and computing ethics.
  4. Develop their awareness and sensitivity towards systems thinking.
  5. Develop their awareness and sensitivity towards taxonomies of Cyber Security and Software Development Risks.
  6. Use generalized frameworks to formulate relevant and appropriate questions to direct their analytical and design thinking about engineering and computing products, systems, and processes.
  7. Use generalized problem solving frameworks to analyse and solve specific computing problems.
  8. Develop and critique low fidelity prototypes for various interactive systems.
  9. Develop a deeper appreciation of pervasive computing concepts.
  10. Use various software bug taxonomies, debugging heuristics, strategies, and tactics to more efficiently find the bugs in programs. Also use these to write better programs.
  11. Use some programming techniques to write better performing programs.

12.  Artificial Intelligence (Coordinator: Dr. Satish Chandra; 5th Sem)

(Flexi-Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Design, implement and analyze the problem solving agents using various informed, uninformed and evolutionary search strategies.
  2. Represent and solve constraint satisfaction problems using minimum remaining value (MRV), forward checking, least constraining value (LCV) heuristics and backtracking.
  3. Apply various adversarial search algorithms for solving problems of game theory.
  4. Represent knowledge, ontology of action, situation & events and plan selection using PROLOG.
  5. Apply inference mechanisms using propositional logic (PL) and first order predicate logic (FOPL).
  6. Apply model of probabilistic reasoning in incomplete and uncertain environment
  7. Design and simulate learning based agent
  8. Empower the agents with natural language understanding.
  9. Apply AI concepts to solve real world problem in different domains such as interactive intelligent game, healthcare, transportation system, expert systems and information retrieval.

13.  Cloud Based Enterprise Systems (Coordinator: Dr. Bharat Gupta; 5th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Design and develop Enterprise applications based on XML, JavaScript, Java Servlets, Java Server Pages, etc.
  2. Design and develop web service based solutions by using REST, JSON, SOAP, WSDL, UDDI, etc.
  3. Differentiate between Public, Private, and Hybrid Clouds.
  4. Evaluate different Public Cloud Platforms e.g., GAE, AWS and Azure.
  5. Apply the Hadoop based solution for big data scenarios.
  6. Deploy the Enterprise applications on Amazon AWS.
  7. Learn and apply emerging technologies in cloud environment.

14.  Information Security Lab (Coordinator: Niyati Aggrawal; 5th Sem)

(Core Course:  Lab)

On successful completion of this course, the students should be able to:

  1. Differentiate among encryption Techniques such as classical symmetric key encryption techniques and public key encryption techniques.
  2. Implement Client server message passing using Socket programming to transfer the encrypted data.
  3. Differentiate between a virus, a worm and a Trojan horse.
  4. Create a virus in C to Restart Computer, shutdown the windows operating system, test the working of virus, and create an Antivirus.
  5. Capture Network packets with Wire shark, Filter out noise.
  6. Convert IP Addresses to Host Names; apply a display filter, save the packet trace, and work with captured Traffic.
  7. Analyze the trace file and Packet capture (PCAP) files, Grab passwords
  8. Capture a username and password from transferred packets.
  9. Implement the Secure Sockets Layer (SSL) protocol by focusing on the SSL records sent over a TCP connection.
  10. Analyze a trace of the SSL records sent between your host and an e-commerce server.
  11. Explain the various SSL record types as well as the fields in the SSL messages.
  12. Implement decision trees in python for network anomaly detection.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a moderate-sized information security system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the software specification, design, test plan, and implementation details.
  3. Conduct preliminary security audit, identify security vulnerabilities, and develop tools for the same.

15.  Unix Programming Lab (Coordinator: Hema N; 5th Sem, ECE students)

(Core Course for ECE:  lab)

On successful completion of this course, the students should be able to:

  1. Use various Unix /Linux commands of a common UNIX/LINUX Operating System, e.g., Ubuntu and Federo.
  2. Apply Unix/Linux file redirection and pipelining to combine utilities to perform complex tasks.
  3. Create and manage files and directories, set and use file permissions, and navigate the Unix/Linux file system.
  4. Develop shell scripting using Selection Statements, Loops, Decision making statements and Case statements.
  5. Develop command-line argument based programs for execution.
  6. Develop shell scripts to solve various problems using commands like grep, line number, test, expressions, compare, command line input and so on.

16.  Software Engineering (Coordinator: Dr. P. Raghu Vamsi; 5th Sem)

(Flexi-Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Explain software engineering principles and software process models
  2. Use software development lifecycle models for project development.
  3. Identify functional and non-functional requirements of a software project.
  4. Design, represent and document software requirements specification.
  5. Plan and execute activities for a software project.
  6. Apply UML modelling for software design from software requirements specification.
  7. Estimate the cost and quality metrics in software development
  8. Apply coding standards and guidelines.
  9. Prepare code checklist. Perform code Reviews, Code Refactoring, and Code optimization.
  10. Evaluate software in terms of general software quality attributes and possible trade-offs presented within the given problem
  11. Apply testing principles, develop and implement various manual and automated testing procedures.

17. Computer Networks  (Coordinator: Ankita Gupta; 5th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Demonstrate their familiarity with the basic problems of computer networking and the principles that govern the techniques for solving them.
  2. Explain concepts and theories of networking.
  3. Draw the functional block diagram of local area networks (LANs) and  describe the function of each block.
  4. Compare the function and services provided by different layers of OSI and TCP/IP network architectures.
  5. Find out the errors in the transmitted segments through error correction and detection techniques like Checksum, Hamming Code, Cyclic Redundancy check etc.
  6. Explain how the data amongst the networking nodes is exchanged with the help of 5 networking layers of TCP/IP.
  7. Visualise and analyse the data packets of different layers using Wireshark. Store the data packets as *.pcap files, and write programs for analysis of these files.
  8. Analyze the underlying architectures and protocols of networking applications like File Transfers, Mail Transfers etc.
  9. Describe the concepts of IP addressing and routing algorithms.
  10. Simulate and compare different routing algorithms, e.g., link state algorithm, distance vector, DSDV, and their variations.
  11. Estimate the delay caused in the network due to congestions and link breakages using NS2 and AWK Script.
  12. Simulate and compare the sliding window – Transmission Control Protocols like Go-Back N, Stop-N-Wait and Selective Repeat using the criteria of segment loss, acknowledgement loss etc.
  13. For a given requirement (small scale),  design the  LAN  based on the market available component.
  14. For a given problem related to TCP/IP protocol,  develop networking programs, e.g., creating sockets, small/large file transfer and simple email.
  15. Configure HTTP, DNS DDNS, TELNET, EMAIL, File Transfer Protocol (FTP), WWW,  SNMP, Bluetooth, Firewalls using open source software and tools.

18.   Data Mining and Web algorithms  (Coordinator: Somya Jain; 6th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Describe the basic statistical features of nominal, binary, categorical and ordinal data.
  2. Visualize the univariate and bivariate distribution of the data using quantile plots, quantile-quantile plots, histograms, and scatter plots etc.
  3. Write programs for data cleaning process using bin by means, bin by median, bin by boundaries and linear/multiple regression method.
  4. Write programs for feature extraction and selection using PCA, LDA, SVD and rough set approach.
  5. Preprocess, classify, cluster and compare the data of varied domains using WEKA tool.
  6. Write programs to build the classification model to predict future data trends using decision tree, random forest, naïve Bayes and KNN algorithms.
  7. Write programs to determine the intrinsic grouping in a set of unlabeled data using connectivity, centroids, distribution, and density-based clustering methods.
  8. Write programs to modify the classic classification and clustering algorithm for improving the accuracy.
  9. Write programs to find frequent patterns, correlations, associations, or causal structures from data sets found in various kinds of databases such as relational databases, transactional databases, and other forms of data repositories using association rule mining procedure.
  10. Analyse the link structure of web using page rank and HITS algorithms.
  11. Write programs to build simple recommendation systems through collaborative filtering.

19. Open Source Software Lab (Coordinator: Dr. Anuja Arora; 5th Sem)

(Core Course:  lab)

On successful completion of this course, the students should be able to:

  1. Set up GitHub Account, Use git commands to manage files and support version control.
  2. Apply a mix of Client, Server and Database technologies to solve Open Source Software issues/ to enhance projects.
  3. Develop Server side programs using python with Database Servers- SQL, MongoDb.
  4. Develop Server side programs using PHP with Database Server-SQL and Apache/Tomcat as web Servers.
  5. Develop J2EE Programs using JDBC Connectivity with SQL Database and Apache/ Glassfish as web servers.
  6. Contribute to open source community GitHub by providing enhanced versions.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Comprehend the open source software to find and fix its issues.
  2. Apply basic software engineering/reengineering process and work in small team to enhance / restructure open source software.
  3. Implement open source project using appropriate client, server and databases technologies.
  4. Prepare technical report detailing the project specification, design, test plan, implementation and version control details

20.  Multimedia Development Lab-I (Coordinator: Prashant Kaushik; 5th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Use Unity3D toolset for multi platform application designing.
  2. Develop basic games using C# in Unity3D using inbuilt regular shapes.
  3. Design the game assets in Photoshop and Illustrator.
  4. Design basic 3D models in Blender.
  5. Export the Unity applications on various platforms like android, iOS and windows.

21.  Introduction to Mobile Application Development (Coordinator: Prashant Kaushik; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Use Android Studio for writing mobile application and use its profiler to debug and profile the applications.
  2. Package the mobile application for Instant Apps, Regular apps and various other flavours of apps like free version and paid version.
  3. Design mobile applications using various third party libraries like Firebase for functions like, messaging and push notifications.
  4. Design the mobile application for various screen sizes with scalable vector graphics.
  5. Design the mobile application with the use of SQLite database.
  6. Integrate the Mobile application with Google Now for Voice based user inputs.
  7. Evaluate the designed application for their use of various system resources like memory, gpu and cpu.
  8. Distribute the application on various PlayStores like Google Play store and Amazon Play Stores after process of generating the digital signature for their Applications.

22.  IoT Wokshop  (Coordinator: Dr.K. Rajalakshmi; 6th Sem)

(Optional Course:  lab)

On successful completion of this course, the students should be able to:

  1. Setup and Install Node.js and Node-RED as IDE platform for IoT application development.
  2. Demonstrate I/O nodes, flows, third party palettes, import/export of flows in Node-RED and interconnection with IoT boards like Raspberry Pi, Arduino etc.,
  3. Develop java scripts for user defined functional nodes and deploy it in Node-Red flows.
  4. Deploy user defined functional nodes into Node-RED flows and FRED cloud.
  5. Design and develop UI modules for peripheral sensors and devices that can be controlled through smart phones and web pages.
  6. Implement MQTT brokers for publishing and subscribing between IoT sensors and devices.
  7. Demonstrate HTTP, TCP and UDP traffic flow for IoT applications.
  8. Design and develop IoT applications using web sockets through

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a moderate-sized IoT software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the IoT application specification, design, test plan, and implementation details.
  3. Analyse the hardware and software requirements for developing various IoT applications.
  4. Analyse and identify the use of various application specific APIs in developing the IoT applications.
  5. Design IoT applications using various third party libraries like MQTT brokers, Websockets, RESTful APIs to connect IoT devices and leverage data in real-time IoT applications.
  6. Develop and publish user friendly IoT applications using open source IoT frameworks like Node-RED in cloud environment.

23.  Agile Software Development (Coordinator: Indu Chawla; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Analyse the trade-offs between traditional software engineering methods and agile development for a project effectively.
  2. Describe agile development method XP: pair programming, user stories, CRC cards.
  3. Describe agile development method Crystal: Crystal clear, Crystal yellow, Crystal orange and Crystal orange web.
  4. Describe agile development method Scrum: Scrum roles, events and artifacts; scrum of scrums, team collaborations for large projects.
  5. Evaluate and apply an appropriate agile software engineering approach viz. extreme programming, Scrum or Crystal techniques as a part of software development.
  6. Apply Refactoring techniques on source code for improved design.
  7. Use open source automated testing tools viz. Cucumber, Appium, Selenium WebDriver to minimize bugs.
  8. Plan, track and monitor agile projects with techniques like burn down charts, velocity calculation and task boards.
  9. Assess and address the challenges in change management associated with adopting an agile method.

24.  Data Structures and Algorithms (Coordinator: Vimal Kumar; 6th Sem, ECE)

(Core Course for ECE:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Explain the fundamental Data Structures including linked-lists, trees, binary search trees, AVL trees, heap trees, graphs, and hash-tables.
  2. Implement abstract data types (stack, queue, graph etc.) using basic data structures and their functionalities.
  3. Analyze the algorithms in terms of asymptotic time complexity
  4. Evaluate different sorting algorithms – Merge Sort, Quick sort, Shell sort and Bucket Sort.
  5. Develop small scale programs with data structures and algorithms in various practical problems
  6. Formulate new solutions for programming problems or improve existing code using learned algorithms and data structures
  7. Develop new and efficient data structures for different kind of problems according to the requirements.

25.  Mobile Application Development Workshop (Coordinator: Mradula Sharma; 6th Sem)

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Describe the Android architecture and compare it with other mobile platforms.
  2. Implement basic mobile applications that enable the usage of various widgets (TextView, Button, ProgressBar, Spinner etc.)
  3. Implement Intents to communicate between various activities.
  4. Describe the life cycle of activity in a mobile application and also use this concept to implement a crash-free mobile applications
  5. Use of various APIs e.g., Google Maps API, Sensors API, Opendata API, SocialMedia API, etc.
  6. Design and implement an android application that can store data on the mobile devices using SQLite.
  7. Use AI algorithms to develop intelligent mobile applications such as temperature prediction, stock prediction, review analysis, disease Prediction, etc.
  8. Apply JSON to communicate data from mobile device to servers and vice versa.
  9. Describe the process of deployment of mobile application on Google playstore.
  10. Critically inquire about the future trends in mobile application development

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a moderate-sized software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the mobile application specification, design, test plan, and implementation details.
  3. Analyze the server/client side requirements for developing various mobile applications.
  4. Analyze and identify the use of various application specific APIs in developing the mobile applications.
  5. Design mobile applications using various third party libraries like Firebase for functions like, messaging, push notifications and crash analysis.
  6. Design and develop mobile application to provide open data centric services.
  7. Publish the application on various PlayStores like Google Play store and Amazon Play Stores after process of generating the digital signature for their Applications.

26.  Data and Web Mining (Coordinator: Dr. Neetu Sardana; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Describe the basic statistical features of nominal, binary, categorical and ordinal data.
  2. Apply the preprocessing techniques like PCA, z-score normalization for data extraction, transformation, and reduction.
  3. Design a Data warehouse using star, snowflake and galaxy schema.
  4. Perform OLAP operations like roll-up, drill-down, slicing and dicing, etc.
  5. Apply a wide range of classification techniques like Naïve-bayes, decision tree, and KNN for the numerous application including fraud detection, target marketing, medical diagnosis, etc.
  6. Cluster the similar/dissimilar objects using different methods like partitioning, hierarchical and density based clustering.
  7. Analyse the transactional data for finding frequent and interesting patterns using association rule mining techniques like Apriori and FP-Growth.
  8. Classify, cluster and compare the data of varied domains using WEKA tool.
  9. Analyse the link structure of web using page rank and HITS algorithms.
  10. Apply collaborative filtering techniques for recommendation system

27.  Theory of Programming Languages (Coordinator: Dr. P. Raghu Vamsi; 6th Sem)

(Flexi-Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Identify and differentiate the characteristics of programming languages.
  2. Explain the functionality of various phases of a compiler.
  3. Construct the Finite Automata for the given regular grammars.
  4. Explain the formal grammars and their hierarchy.
  5. Identify and remove the ambiguities present in the Grammars.
  6. Construct deterministic top-down and bottom-up parsers.
  7. Examine fundamental issues underlying the design decisions of different programming languages such as data types, sub programs, sequence control, storage management, event handling, parameter passing, etc.
  8. Perform comparative evaluation of programming languages with respect to readability, writability, reliability, and cost of execution.
  9. Select an appropriate programming language for solving a computational problem.
  10. Apply the principal programming abstractions for implementing computational problems.
  11. Design and implement concurrency using C++, Java and Python.
  12. Implement functional programming paradigms using Haskell.
  13. Implement Logic programming paradigms using Prolog.
  14. Design and implement multi-language programs.

28.  Object Oriented Analysis and Design (Coordinator: Deepti Singh; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Describe key concepts of OOP (Object-oriented programming), OOA (Object-oriented analysis), OOD (Object-oriented design) and their inter-relationships.
  2. Differentiate between algorithmic decomposition and Object-Oriented decomposition.
  3. Analyze complex software systems in terms of their attributes: Hierarchic Structure, Relative Primitives, Separation of Concerns, Common Patterns and Stable Intermediate Forms.
  4. Analyze approaches of handling software complexity in terms of organized complexity and unorganized complexity.
  5. Analyze Object Model in terms of four major elements: Abstraction, Encapsulation, Modularity and Hierarchy and three minor elements: Typing, Concurrency and Persistence.
  6. Critically evaluate modeling techniques in object oriented analysis and design.
  7. Develop UML diagrams such as class diagram, object diagram, package diagram, etc., for structural modeling.
  8. Develop UML diagrams such as use case diagram, state chart diagram, interaction diagram, etc., for behavioral modeling.
  9. Apply object oriented design principles to solve real world problems.
  10. Design and implement complex software systems using the Gang of Four (GoF) design patterns, e.g., creational patterns, structural patterns, behavioral patterns, etc.
  11. Analyze object oriented design metrics to assess the testability of an object oriented system.
  12. Validate and test object oriented systems using object oriented testing techniques.

29.  Social Media Workshop (Coordinator: Niyati Aggrawal; 6th Sem)

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Analyze the basic statistics of social network analysis such as degree distribution, centrality, clustering coefficient, diameter, path length etc.
  2. Analyze the ego networks and evaluate their own social networks.
  3. Rank the pages using rank algorithms like Page Rank and HITS.
  4. Apply centrality metrics (Degree, between-ness, closeness) and related algorithms to determine the topological significance of the nodes in a network.
  5. Extract clusters of related nodes using efficient community detection algorithms and evaluate the effectiveness of the partitioning.
  6. Predict the link between members of social networks using link prediction algorithms i.e. Adamic/Adar, Preferential Attachment, Katz etc.
  7. Use hands-on tools (Gephi, Net Logo, NetworkX etc.) to analyze datasets corresponding to complex real-world networks.
  8. Model the diffusion of innovations, information or opinions.
  9. Explore the problems of maximizing the spread of influence and minimizing the spread of misinformation in social networks.
  10. Detect strong ties and weak ties using network motifs, Cliques, and k-cores.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a moderate-sized social media or social media analytics related software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the software specification, design, test plan, and implementation details.
  3. Extract social media statistics and characteristics using Analytics and Reporting APIs for various social plateforms, e.g., Youtube, Twitter, Instagram, Facebook, etc.
  4. Extract data through web crawlers and various data extraction tools such as Netvizz, TubeKit, NodeXL etc.
  5. Analyze the posted content on the basis of content statistics, e.g., view/like count and content characteristics, e.g., title, content size.
  6. Predict the engagements on the posted content using machine learning APIs.
  7. Recommend the content and products.

30.  Computational Intelligence (Coordinator: Dr.Satish Chandra; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Model and analyze the intelligent agents using various informed and uninformed search algorithms.
  2. Represent and solve constraint satisfaction problems using minimum remaining value, least constraining value heuristics, forward checking and backtracking.
  3. Apply the First-Order Logic approach to the simple problems of computational intelligence.
  4. Design computational intelligence algorithms for simple problems and analyse more complicated ones related to various classification and summarization tasks.
  5. Apply evolutionary algorithm such as Genetic algorithms for solving optimization, scheduling, path finding problems.
  6. Design and apply simple neural networks for character recognition, disease analysis etc.
  7. Demonstrate awareness of the major challenges and risks facing computational intelligence and the complexity of typical problems within the field.
  8. Communicate the results through writing technical reports.

31.  Advanced Data Structures and Applications (Coordinator: Prantik Biswas; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Analyze the amortized complexity of various data structures using techniques like aggregate method, potential method and accounting method.
  2. Implement various variants of binary search trees like Optimal Binary Search Tree, Splay tree, AA-Tree and Treap.
  3. Implement various variants of heap viz. Pairing heap, Beap, Leftist tree
  4. Implement various variants of space partitioning trees like Binary space partitioning, KD tree, Quad tree, Interval Tree, Segment Tree, Priority Search Tree
  5. Implement various variants of hashing techniques like Cuckoo hashing, Coalesced hashing, Universal Hashing.
  6. Explain the fundamentals of disjoint set data structures and their functionalities (representation, operations like union etc).
  7. Develop small scale programs with these data structures and algorithms in various practical problems. (eg. Motif Finding, Memory indexing, Searching, etc)
  8. Design a range of approaches for sorting huge datasets with limited memory (External Sorting, Selection trees & k-way merging etc).

32.  R programming Workshop (Coordinator: Megha Rathi; 6th Sem)

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Use R Interactive environment.
  2. Develop R Program using the following  – Object Oriented Concepts; Built-in data structures (e.g. Vector, Array, List, Factor, Data Frame); String, Regular Expression, Pattern Matching and their built-in-functions; Other Built-in-functions like Rep, Paste, Factor, Sequence, Sort, Search
  3. Import and Load data from various sources [database, excel file, csv file, Binary File, XML and JSON File] and apply data cleaning techniques.
  4. Develop Data Driven approaches by integrating R with MySQL and Hadoop.
  5. Develop R Program for machine learning techniques using R Packages for descriptive and predictive statistics.
  6. Develop R Program for Data Analysis using R packages for information gain and decision making.
  7. Develop R Program for Data Visualization using R Packages.
  8. Develop Application by integrating R with atleast one other Programming Language [e.g. Python].

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply lifecycle processes and work collaboratively in a small team to develop a moderate-sized software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the software specification, design, test plan, and implementation details.
  3. Contribute to Open source Software by either enhancing or adding new R Packages for data analysis, data processing, and data mining.                                                                                 OR

           Develop and publish user friendly Web/Android applications for       Comprehensive data analytics services for open data repositories in various formats.

33.  Theory of Computation and Compiler Design (Coordinator: Dr.Dharmveer Singh Rajput; 6th Sem)

(Flexi-Core Course:  Theory + lab; CSE)

On successful completion of this course, the students should be able to:

  1. For a given language determine whether the given language is regular or not.
  2. Design and write programs for identification of patterns in linear textual data using the knowledge of tokens, regular expressions and regular languages.
  3. For a given grammar specification, design and develop programs of scanners for Lexical analysis using LEX tool.
  4. Design context free grammars to generate strings of context free language .
  5. Determine equivalence of languages accepted by Push Down Automata and languages generated by context free grammars.
  6. For a given parser specification, design and develop programs of parsers for Syntax and Semantic analysis using YACC tool.
  7. Develop syntax directed translation schemes.
  8. Produce and implement intermediate code for the given source code using intermediate code generation techniques, e.g.,  three address code.
  9. Develop optimized code to improve the performance of programs in terms of time and space using code optimization i.e. directed acyclic graphs.  
  10. Develop program to generate the machine/target code using dynamic programming code generation algorithm.
  11. Compare the compilers in terms of memory requirement and number of instructions in the machine/target code.
  12. Acquire the knowledge of modern compiler and their features.

34.  Advanced Java Workshop (Coordinator: Shardha Porwal; 6th Sem)

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Apply concepts like multithreading, interfaces, generics in Java program design and implementation.
  2. Name and apply some common object-oriented design patterns and give examples of their use.
  3. Design applications with an event-driven graphical user interface.
  4. Design and create web based and other applications using practices of object oriented concepts.
  5. Use java collection API.
  6. Evaluate different integrated development environment e.g. NetBeans, Eclipse with respect to creation, debugging and testing using testing tool like JSUnit, Jasmine and Selenium WebDriver of enterprise-level applications.
  7. Develop server side solution using Servlet and JSP technologies (J2EE).
  8. Use JDBC API for database-independent connectivity between the Java programming language and MySQL database.
  9. Develop programs in java to implement socket programming.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a database driven web application from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the Java application requirement specification (SRS), good object oriented design using UML Diagrams, test plan, and implementation details.
  3. Design Java applications using Multithreading, JDBC, Socket Programming, Java Server Pages, Servlet, Generics & collections, and Design patterns.
  4. Use a few of the other Java technologies like Annotations, Swing, Hibernate and Struts, Node.js, Java script, etc., to support the project.
  5. Analyze the server/client side requirements in developing various Java applications.
  6. Analyze and identify the use of various application specific Java collection APIs in developing the Java applications.

35.  Multimedia Content and Animation Design (Coordinator: Dr.Suma Dawn; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Describe the theories (aesthetic, metamedia, and interactivity) of New Media (Cyberculture, Writing with Sound, Writing through Video, Media Ecologies, Tactical Media, Digital Writing, Digital Art) and explore various media environments (TV, newspapers, radio, campaigns).
  2. Differentiate between raster and vector graphics and evaluate them for content development.
  3. Express typographical requirements necessary for design of articles, blogs, and narration.
  4. Illustrate the role of design elements (the visual components of color, form, line, shape, space, texture, and value) and principles (Balance, emphasis, movement, proportion, rhythm, unity, and variety) for various forms of visual communications such as posters, pamphlets, leaflets, advertisements, calendars, etc.
  5. Develop multimedia applications based on design specifications and UI specifications using Photoshop and Illustrator (Adobe Web Premium Suit) for print, branding and web designing.
  6. Use acoustic model for creation and usage of audio content and production model for creation, usage and tagging of video content in Adobe Flash, and Blender.
  7. Explain issues (diffusion & participatory models, defaults and triggers, deliverable iterations, build and rendering requirements) for development and optimization of script-based animations.
  8. Visualize and design animations based on principles as proposed in the book “The Illusion of Life: Disney Animation”.
  9. Critique and conceptualize multimedia environments and education, social, scientific and business applications.

36.  Wireless Networks (Coordinator: Dr. Gagandeep Kaur; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Compare and contrast principles and challenges of various wireless communication generations, namely, GSM, GPRS, 3G, 4G, and 5G.
  2. Explain basic concept of wireless networks.
  3. Use simulation tools, namely GloMoSim, OmnetPP and NS3 to simulate wireless networks and protocols.
  4. Explain cellular concepts, traffic theories, channel coding and mobile radio propagation.
  5. Explain IEEE 802.11 wireless services & data delivery approaches and choose appropriate services for a given application.
  6. Explain transport layer protocols, with an emphasis on congestion control, including TCP over wireless, Split-TCP, congestion sharing mechanisms, explicit and precise rate control and utility optimization-based approaches.
  7. Simulate and analyze MAC & Mobile IP based network layer routing protocols with respect to link metrics (e.g. ETT, ETP, ETX, Inverse ETX, IBETX, etc. ) computed over routing tables for proactive & reactive routing, opportunistic routing, cooperative routing and routing with mobility. Also implement and compare these protocols.
  8. Simulate wireless IEEE 802.11 security parameters, open system authentication, shared key authentication and wired equivalent privacy.
  9. Adapt common routing protocols to meet special needs.

37.  Cloud based Enterprise Applications (Coordinator: Dr. Bharat Gupta; 6th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Design and develop Enterprise applications based on XML, JavaScript, Java Servlets, Java Server Pages, etc.
  2. Design and develop web service based solutions by using REST, JSON, SOAP, etc.
  3. Differentiate between Public, Private, and Hybrid Clouds.
  4. Evaluate different Public Cloud Platforms e.g., GAE, AWS and Azure.
  5. Apply the Hadoop based solution for big data scenarios.
  6. Deploy Enterprise applications on one of the Cloud Service Providers, i.e., Amazon AWS or Microsoft Azure.
  7. Learn emerging technologies in cloud environment.

38.  Distributed Database Workshop (Coordinator: Aditi Sharma and Dr. Chetna Dabas; 6th Sem)

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Outline the need of distributed databases for managing huge amount of structured as well as unstructured data
  2. List the potential advantages and risks associated with distributed databases.
  3. Compare the data distribution techniques of Replication and Sharding
  4. Differentiate between Relational, NoSql and NewSql database systems.
  5. Choose appropriate distributed database among NoSql and NewSql according to the application.
  6. Design database and execute Create, Read, Update and Delete queries in document based distributed database MongoDB.
  7. Perform aggregation and indexing with MongoDB.
  8. Implement data sharding on distributed databases and demonstrate its working with MongoDB on multiple computers.
  9. Compare Row Store with Column Store databases.
  10. Design database and execute Create, Read, Update and Delete queries in Column family distributed database Cassandra.
  11. Integrate Mongodb and Cassandra Databases as backend with Java as the front end.
  12. Implement queries in NewSql based Cloud Database NuoDB.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply lifecycle processes and work collaboratively in a small team to develop a moderate-sized software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management. 
  2. Prepare technical report detailing the software specification, design, test plan, and implementation details.
  3. Design and develop distributed system applications with NoSql/NewSql Databases as backend with Java/Python as the front end.
  4. Analyze the application requirements and choose appropriate distributed database among NoSql based Mongodb/Cassandra databases or NewSql based Nuodb database.
  5. Analyze and identify the use of various aggregation functions and indexing techniques in developing the distributed database applications.

39.  Competitive Programming Workshop (Coordinator: Sherry Garg, Dr. Manish K Thakur; 6th Sem)  

(Optional Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Use the functionality of online judges e.g., Codechef.
  2. Quickly map a variety of real world scenarios to computing problems.
  3. Quickly assess advantages and shortcomings of different algorithmic approaches for solving a computing problem.
  4. Improve their algorithm development skills.
  5. Quickly assess their algorithms for time and space complexity.
  6. Quickly assess their algorithms w.r.t. positive, negative and positive test cases.
  7. Quickly review and improve their algorithm for better handling of failing test cases and for better efficiency.
  8. Quickly debug their programs.  
  9. Participate in national and international online programming competitions.
  10. Improve their collaboration skills through pair programming.

Additional Learning Outcomes for those who also work on the Minor Project in this area:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop a moderate-sized software system  to facilitate programming practice and competitions, e.g., online judge or IDEs from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management.
  2. Prepare technical report detailing the application specification, design, test plan, and implementation details.

 

40.  High Performance Web & Mobile Applications (Coordinator: Prashant Kaushik; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Test the Server for multi threading application structure for various types of load like Database load, Object storage load etc.
  2. Test the mobile application for the threads running on CPU or GPU of the mobile device.
  3. Test the mobile application for battery performance with graphics load on Android.
  4. Develop server programs with NodeJS in multi thread and multi GPU environment.
  5. Use performance metrics for evaluating the application server load.
  6. Use performance metrics for evaluating the mobile application for various loads.
  7. Develop asynchronous programs with objects and databases for mobile devices.
  8. Evaluate the various IDEs for analysing the package files for mobile application as well as the server in binary form.
  9. Analyze the crash reports for various types of crashes due to multiple platforms of mobile devices in a consolidated manner.

41.  Machine Learning and Natural Language Processing (Coordinator: K. Vimal Kumar; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Identify the features that can contribute for the part-of-speech tagging phase in NLP
  2. Implement the state-of-art part-of-speech tagging algorithms over a given corpus including, Hidden Markov Model, SVM, CRF, RNN, LSTM.
  3. Apply the parsing strategies over the sentences and analyze their performance.
  4. Apply document classification algorithms to a given set of documents, and explain the merits and demerits of these algorithms
  5. Apply the topic modeling over the set of documents and analyze the way it will work on other natural languages too.
  6. Apply various phases of NLP that will be required for the specific applications such as document classification, named entity recognition, machine translation
  7. Use various libraries (e.g., SCIKIT, NLTK) required for implementation of document classification algorithms
  8. Design, implement and analyze the applications of Natural Language Processing (NLP) using various machine learning algorithms – supervised, unsupervised, semi supervised and reinforcement.
  9. Create and critique some natural language processing applications, e.g., Document summarization, Co-referencing, noun phrase chunking, named entity recognition, co-reference resolution, parsing, information extraction, Machine Translation, Spell Correction, News Article Title Generation, Code Categorization, Question Answering (Eliza)
  10. Critically inquire about the future trends in machine learning and NLP.

42.  Cloud Computing (Coordinator: Dr. Prakash Kumar; 7th Sem)

(Elective Course:  Theory)

On successful completion of the course, the students should be able to:

  1. Differentiate, compare and correlate between Distributed and Cloud Models.
  2. Install, use and implement applications on Virtual Machine Monitors (VMMs-preferably open source VMMs, Cloud Simulators), e.g. Xen, CloudSim, WorkflowSim etc.
  3. Create Virtual Machines (VMs) using open source VMMs and Cloud Simulators. Execute, analyze and evaluate various aspects of IaaS, PaaS and SasS cloud models on VMs for applications.
  4. Perform VM migrations based on system performance metrics.
  5. Design, implement and evaluate energy aware computations for various applications running on cloud models.
  6. Develop Cloud based Trust and Fault aware application specific VMs.
  7. Optimize the performances of VMs for application specific cloud environments.
  8. Deploy and run their self-developed applications and evaluate their performances on the open source and commercial cloud platforms.

43.  Computer Graphics (Coordinator: Dr. Suma Dawn; 7th Sem)

(Elective Course:  Theory)

On successful completion of the course, the students should be able to:

  1. Explain the core concepts of computer graphics.
  2. Implement common 2D & 3D graphics algorithms, including viewing transformations, clipping, projections, and rendering.
  3. Apply convex hull to a polygonal region, and apply various data structures to perform Hidden surface removal and collision detection.
  4. Apply models for surfaces representations – geometric and polygonal; hierarchical; mesh; curves and splines.
  5. Apply models for lighting – distant and multiple light sources; reflection and models for shading – flat, smooth, Gourand, Phong.
  6. Use OpenGL and WebGL for building graphics applications.
  7. Creating animation using Disney’s “12 Principles of Animation” and tweening.
  8. Create and critique computer graphics applications including computer games, information visualization, and scientific applications.
  9. Review & assess graphics hardware and its pipeline.
  10. Critically inquire about future trends in computer graphics.

44.  Mobile Computing (Coordinator: Dr. K Rajalakshmi; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Assess the suitability of different techniques in multiplexing, modulation, spread spectrum, frequency reuse factor for specific wireless network requirements.
  2. Analyze performance aspects of medium accessing, transport layer methodologies and routing techniques in wireless networks (WLAN, WPAN) and mobile networks (GSM, UMTS, UTRAN).
  3. Design smart mobile applications keeping in mind the performance parameters like bandwidth requirement, battery power, memory, computing power, etc.
  4. Apply functional aspects of Android and IOS mobile operating systems in developing mobile applications.
  5. Implement contemporary mobile applications based on widgets, inbuilt device sensors, SMS, mail, and location aware services through Internet for mobile environments.
  6. Identify important issues and concerns on security and privacy of a mobile computing environment.
  7. Develop technical solutions for security and privacy of user data and user behaviour through APIs of mobile operating systems.

45.  Computer and Web Security (Coordinator: Dr. Sangeeta Mittal; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Use Vulnerability-Threat-Control Paradigm for assessing computing system’s security challenges
  2. Compare features of secure version of TCP/IP protocols with classical ones
  3. Identify and classify client-side web access threats due to browser vulnerabilities
  4. Assess Illicit leakage of user or website data by cross site scripting and SQL injection
  5. Apply mechanisms of correct Identification and Authentication for access control of computing resources
  6. Develop protections against malicious web pages with misleading content
  7. Implement proactive computing system security using formal lattice based and role based models
  8. Design rule based intrusion detection systems for computers and networks
  9. Implement cryptographic primitives for secure transactions
  10. Design Firewalls according to system security policies

46.  Concurrent Programming (Coordinator: Rohit Pal Singh; 7th sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. To think away from traditionally sequential programming to modulate a concurrent solution to real life problems.
  2. Recognize, synthesize and solve problems concerned with concurrent execution of tasks by exploiting the inherent parallelism in the algorithm or applications.
  3. Explore and analyze interesting connections to earlier languages that resulted in the evolution of present structuring of concurrent programming languages.
  4. Compare and use different modes in which the threads may communicate (Message passing vs. shared memory).
  5. Implement synchronizing concurrent operations with the understanding of mutexes, condition variables and locks.
  6. Effectively use C++14 memory model and the inbuilt supporting libraries for concurrency.
  7. Synthesize, create, verify and use lock based and lock free concurrent data structures.
  8. Design and implement thread pool paradigm of concurrent programming with task queues and live threads.
  9. Analyze, develop and implement functional asynchronous programs with futures and promises.
  10. Integrate the implementation of SCALA actor model, data parallel collections, and reactive extensions to develop highly scalable concurrent programs.
  11. Adapt Software Transactional Memory concept in the context of concurrent programming.
  12. Validate and test concurrent programs using testing and debugging techniques and tools e.g. Valgrind, CHESS: Systematic Concurrency Testing, CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs.

47.   Program Analysis and Transformation (Coordinator: Ms. G. Dhanlekshmi; 7th Sem)

(Elective Course:  Theory)

On successful completion of the course, the students should be able to:

  1. Convert computer program into different forms of representations including Control flow graph, Static Single Assignment, Control dependence graph to perform the Static Analysis.
  2. Perform data flow analysis – Reaching definition data flow analysis, Available expression data flow analysis and live variable analysis
  3. Analyze the program for static and dynamic compiler optimization through Constant propagation, Copy propagation, algebraic simplification, Common subexpression elimination, dead code elimination, invariant code motion
  4. Apply the live variable data flow analysis for register allocation
  5. Perform data dependence analysis for recognizing parallelization of loops using distance and direction vector.
  6. Formulate the data flow equation for a given purpose (e.g., (i) to find uninitialized variables in a program , (ii) checking whether a variable is live at a point ) using forward and backward analysis
  7. Construct Program dependence graph for program slicing, transformations, optimisations.
  8. Perform interprocedural data flow analysis for context sensitive analysis

48.   Bioinformatics Algorithms (Coordinator: Prantik Biswas; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the algorithmic concepts commonly used in Bioinformatics.
  2. Characterize a given algorithm class, describing its basic properties and its usage wrt genomic structure requirements such as Gene Restriction Mapping and Motif finding.
  3. Compare and contrast between algorithms of the same class that may have different applications wrt genomic dataset / protein bases such as String Reconstruction from k-mers, Euler path.
  4. Develop and execute a program for a given bioinformatics problem such as finding longest common nucleotide sequence; comparing biological sequences; sequence alignment as a change problem, DAC or Manhattan-like graph for local and global alignment.
  5. Perform statistical analysis for searching biological databases – BLAST and FASTA, scoring alignment – edit distance and fitting alignment.
  6. Apply the concepts of data redundancy and homology reduction based on clustering for Genetic data classification and Phylogeny tree construction.
  7. Implement and develop prediction tools on a detailed level using the following algorithm class: Dynamic programming, Sequence clustering, Weight matrices, artificial neural networks, Hidden Markov models.
  8. Select and apply an appropriate algorithmic technique to solve a given bioinformatics related task.

49.   Graph Algorithms and Applications (Coordinator: Sherry Garg; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Enhance their computational thinking and represent computational problems as graph operations.
  2. Use Cypher Query Language for graph creation, updation, deletion, traversal, and filtering.
  3. Use conventional, randomized and evolutionary algorithmic approaches for graph and problem solving
  4. Implement graph traversal algorithms – Minimum spanning tree, shortest path, breadth first search, depth first search, traveling salesman problem.
  5. Develop efficient solutions for finding maximum matching and weight matching in bipartite graphs in context of various applications, e.g., stable marriage, stable roommate, hospital resident allocation.
  6. Develop programs for finding vertex cover, edge cover, and set cover.
  7. Develop solutions for problems based on network flow.
  8. Develop solutions for the problems based on graph coloring and graph planarity.

50.   Image Processing (Coordinator: Dr. Aparajita Nanda and Dr. Vikas Saxena; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain general terminology of image processing systems.
  2. Implement algorithms for intensity transformations and spatial filtering.
  3. Implement algorithms for DFT, DCT, and DWT for gray-scale images.
  4. Apply image enhancement techniques to improve the image quality.
  5. Reconstruct the original scene from a degraded image.
  6. Apply image edge detection techniques, e.g., gradient, Laplacian, DOG, and LOG.
  7. Write programs for boundary detection, object representation using various data structures like Quad tree, BSP, etc.
  8. Write programs to segment an image into meaningful regions.
  9. Apply morphological operators for binary image processing.
  10. Model the solution for image processing based applications in areas like object counting, motion detection, and Optical Character Recognition.

51.  IT Entrepreneurship and Design Thinking  (Coordinator: Dr. Sanjay Goel; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Develop a multidimensional perspective towards design thinking.
  2. Evaluate the suitability of IT products or services wrt various theories related to human needs, desires, and motivations.
  3. Develop the requirements for new IT products and services in view of stated and unstated customer needs, desires, motivations, expectations, and pain points.
  4. Analyse business organisations wrt Porter’s value chain model, as well as identify its primary and secondary business activities.
  5. Develop the requirements for new IT products and services to support an organisation’s primary or secondary business activities.
  6. Evaluate the suitability of IT products or services wrt UN defined Sustainable Development Goals and targets.
  7. Develop the requirements for new IT products and services to support the fulfilment of UN defined Sustainable Development Goals and targets.
  8. Apply the concepts of affordance, the gulf-of-execution, and the gulf-of-evaluation for evaluating and designing IT products and services.
  9. Explain, justify, expand, adapt, and refine the HCI guidelines in view of a functional understanding of human senses and mind.
  10. Mindfully apply the HCI guidelines for evaluating and designing IT products and services.
  11. Use Value Proposition Canvas model for evaluating and designing IT products and services for consumers, business automation, or e-governance using the available and emerging IT technologies.
  12. Use the Wheel and the Canvas Models for evaluating and designing IT Business Models.
  13. Develop Business Plans for chosen IT Businesses.

52.  Nature Inspired Computing (Coordinator: Parul Agarwal; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Differentiate between exploration and exploitation concepts.
  2. Explain core concepts of evolutionary and swarm intelligence based algorithms.
  3. Use evolutionary and swarm intelligence based algorithms to optimize benchmark functions.
  4. Apply evolutionary algorithms to solve NP Complete problems like travelling salesman problem, subset sum problem etc.
  5. Employ differential evolution and artificial bee colony algorithm to perform clustering in various datasets.
  6. Design evolutionary algorithms for multi objective problems.
  7. Analyze computational complexity of nature inspired algorithms.
  8. Apply nature inspired algorithms to solve real world problems like time table scheduling problem, dial-a-bus problem etc.
  9. Assess the suitability or benefits of nature inspired computing techniques for solving a given problem.
  10. Improve performance and reduce the complexity of algorithms through population reduction techniques.
  11. Design and implement a new variant of evolutionary or swarm intelligence based algorithm.

53.  Social Network Analysis (Coordinator: Dr.Neetu Sardana; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Describe social network growth models and their characteristics.
  2. Analyze social network structure and its connectivity pattern using degree distribution, clustering coefficient, motifs, density, etc.
  3. Apply centrality metrics like degree, betweenness, closeness and eigenvalue to find the prominent actors in the social network.
  4. Visualize, summarize and compare networks using modelling tool, Gephi.
  5. Apply link prediction techniques like Jaccard Coefficient, Adamic Adar, Preferential attachment, Katz score, etc. to discover new links in the social network
  6. Apply statistical techniques to discover web based communities.
  7. Model the cascading/flow of information in social network for maximizing the cascade, locating the seed nodes and influential nodes.
  8. Apply mechanisms like K-anonymity, L-diversity, T-closeness, etc. to ensure privacy and security in social networks .

54.  Data Compression (Coordinator: Dr.Tribhuwan Kumar Tewari; 7th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Model compression as an example of data representation.
  2. Explain and summarize theoretical and practical significance of various mathematical concepts of multimedia compression.
  3. Analyse the techniques for compression of binary data, image, audio and video.
  4. Implement encoding algorithms e.g., (adaptive) Huffman, arithmetic coding, etc., and formally analyze the properties of coding algorithms.
  5. Empirically and perceptually analyze lossy compression efficiencies using SNR, BER, MOS, etc.
  6. Gives a high-level explanation of some succinct data structures, e.g., wavelet-tree, compressed suffix array, etc.
  7. Justify the limits of lossless compression.
  8. Synthesize appropriate pipeline using various compression and encoding techniques.
  9. Critique new trends and new possibilities of data compression that are available.

55.  Algorithms and Artificial Intelligence (Coordinator: Dr. Satish Chandra; 7th Sem; ECE students)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Analyze and implement the sorting algorithms such as Insertion Sort, Selection Sort, Heap, Quick and Merge sorting.
  2. Analyze and apply Graph Algorithms such as : DFS, BFS, Shortest path algorithms.
  3. Propose solutions for real life computing problems in the form of any of the following: Greedy, Divide and Conquer and Dynamic Programming techniques.
  4. Apply various heuristics algorithms such as, A*, Hill Climbing and Simulated Annealing in Artificial Intelligence related problems.
  5. Represent and solve constraint satisfaction problems using minimum remaining value (MRV), forward checking, least constraining value (LCV) heuristics and backtracking.
  6. Apply various adversarial search algorithms for solving problems of game theory.
  7. Apply inference mechanisms using propositional logic (PL) and first order predicate logic (FOPL).
  8. Apply model of probabilistic reasoning for drawing inferences in incomplete and uncertain environment
  9. Design and simulate learning based agents.

56.  Theory of  Knowledge and Learning (Coordinator: Dr. Sanjay Goel; 7th Sem open Elective)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain, correlate, compare, and use the orders of ignorance, and also various knowledge taxonomies.
  2. Explain, correlate, compare, and use various taxonomies of mental abilities and intelligence.
  3. Explain, correlate, compare, and use various models of learning styles.
  4. Differentiate between surface, strategic and deep learning.
  5. Explain, correlate, compare, and use various models of reflective thinking, practice, and design.
  6. Explain, correlate, compare, and use various models of ladders of competency and intellectual development, identity development, faith development, moral development, and conscious development.
  7. Explain, correlate, compare, use various taxonomies of educational objectives and learning outcomes.
  8. Evaluate and design face to face and IT enabled learning systems and environments in view of various theories related knowledge, mental abilities, learning styles, reflective thinking, and deliberate practice.

57.  Computer Games (Coordinator: Prashant Kaushik; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Analyse the game-play of existing games for their underlying physics and algorithms.
  2. Design the basic scene with 2D infinite run in Unity3D.
  3. Develop basic programs for the player movements.
  4. Design algorithms and programs for collecting user inputs on various kinds of input like arrow keys and touch systems.
  5. Design the full game play with all motions, destroy events, firing and other game effects.
  6. Test the game play for physics, motion effects, frame rates, platform stability, score logic and server connectivity.
  7. Evaluate the designed game on various platforms like Windows, Android, iOS for platform performance.
  8. Add the Unity3D VR plugin for providing additional features for VR based game-play.

58.  Knowledge Engineering and Semantic Web (Coordinator: Dr.Niyati Baliyan; 8th  Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. View the web of data (Semantic Web) as a layered technology that enhances the Web by creating machine comprehendible data.
  2. Use propositional, first order, and description logic as the building blocks of ontology.
  3. Apply RDF, OWL, and SWRL syntax for semantic annotations and rule specification for web resources.
  4. Build and visualize rich ontologies using editors such as Protégé.
  5. Describe Linked Data principles and architecture, as in dbpedia, Wiki, FOAF etc.
  6. Perform Linked data analysis and visualization using SPARQL with R/Python.

59.  Heuristic and Meta-heuristic Optimisation (Coordinator: Dr.Taj Alam; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the Optimization concepts and various ways to classify the optimization problem based on constraints, design variables, characteristics of design variables, number of objective objective functions and convexity of functions and decision variables.
  2. Analyze rules pertaining to modern heuristic approaches like First Come First Serve, earliest due date first, largest processing time first, shortest distance first, etc. and design the same for problems like Knapsack, Traveling Salesman Problem, Subset Sum etc.
  3. Analyse the core concepts of trajectory and evolutionary search based algorithms and identify the same in different methods like Simulated Annealing, Genetic Simulated Annealing, Differential Evolution, Hill Climbing, Tabu Search, Cuckoo Search, Harmony Search GA, QEA, PSO, BFO NSGA I- II, QGA, ACO etc.
  4. Analyse computational complexity of various heuristic based approaches as given above for the given problem.
  5. Analyse computational complexity of various metaheuristic algorithms like GA, QEA, PSO, BFO NSGA I- II, QGA, ACO etc. for a given problem in terms of fitness evaluation, selection method, refinement of solution, termination criteria etc.
  6. Assess the feasibility and benefits of applying the various state-of-art meta-heuristic techniques in terms of problem representation, population  initialization for solving a given optimization problem.
  7. Apply metaheuristic algorithms (GA, QEA, PSO, BFO NSGA I- II, QGA, ACO etc) to solve NP Complete problems like travelling salesman problem, job scheduling problem, etc.
  8. Design and implement  new variant of existing Heuristic and Metaheuristic algorithms through demonstration project on real world problems similar to given above.

60.  Distributed Computing (Coordinator: Dr.Prakash Kumar; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Identify and solve event ordering related problems occurring due to various synchronization related issues in distributed systems (e.g., using Lamport, Vector, Matrix clock implementations).
  2. Take the consistent global snapshots of various events occurring in individual processes.
  3. Detect the termination of computing task in distributed environments.
  4. Identify and address the mutual exclusion and deadlock related issues for various application specific scenarios that may occur in Distributed environments (e.g., using token and non-token based techniques).
  5. Design a distributed computing system that may work even in case of processor failures (e.g. addressing Byzantine failures).
  6. Identify, address and implement Data Consistency and Replication related issues for various distributed scenarios.
  7. Identify and address fault tolerant related issues and also design and implement reliable systems for distributed environments.
  8. Design and develop simple self-stabilizing distributed systems.

61.  Database, Web, and Mobile Applications (Coordinator: Mradula Sharma; 8th Sem, ECE)

  1. (Elective Course for ECE and Biotech:  Theory)
  2. On successful completion of this course, the students should be able to:
  3. Describe Database Architecture and compare various Data Models.
  4. Apply SQL commands to create tables and indexes, insert/update/delete data, and query data in a relational DBMS
  5. Use PL/SQL to create applications.
  6. Explain basic transaction processing concepts [ACID Properties].
  7. Apply the locking protocols to ensure Isolation.
  8. Apply the logging techniques to ensure Atomicity and Durability.
  9. Implement Recovery techniques to recover from crashes.
  10. Develop a web application with client and server side scripting using JavaScript and PHP and connect with a MySQL relational database.
  11. Compare relational and distributed database.
  12. Implement basic mobile applications that enable the usage of various widgets (TextView, Button, ProgressBar, Spinner, etc.)
  13. Develop a mobile application using Android Studio and connect with SQLite database.
  14. Apply JSON to communicate data from mobile device to servers and vice versa.
  15. Describe the process of deployment of mobile application on Google playstore

62.  Image Processing and analysis (Coordinator: Dr. Aparajita Nanda; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain basic concepts of image processing systems.
  2. Apply image transformation techniques: DFT, DCT, KL, and DWT.
  3. Select and apply appropriate image enhancement techniques to improve the quality of a given image.
  4. Select and apply inverse filtering techniques to reconstruct the original scene from a degraded image.  
  5. Segment an image into meaningful regions using image segmentation techniques.
  6. Apply different gradient operators for edge detection and implement edge linking algorithms to establish the link between edge points.
  7. Apply morphological operators for binary image processing.
  8. Select and use appropriate color model specific to image processing applications.
  9. Apply image compression techniques to reduce storage or transmission cost of an image.
  10. Model the solution for image or video processing based applications in areas such as object counting, object detection, object recognition, and motion detection.

63.  Autonomous Decision Making (Coordinator: Dr.Shikha Jain; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Model decision making problems in observable & deterministic environment using uninformed search algorithms such as BFS and DFS.
  2. Apply heuristic search for modeling decision making process in observable & deterministic environment using Best first search and A* algorithm.
  3. Design agent’s decision making and learning process using unsupervised approaches of K-means and Particle Swarm Optimisation. 
  4. Formulate reasoning and path optimization using Black hole algorithm and Genetic Algorithms.
  5. Model decision making problems in the domain of multimedia.
  6. Perform exact reasoning in uncertain environment.
  7. Represent knowledge in an uncertain world using Bayesian Networks.
  8. Perform approximate reasoning in uncertain environment using direct sampling and Markov Chain Monte Carlo algorithm.
  9. Demonstrate the hand execution of basic reasoning in uncertain environment over time using Hidden Markov Model (HMM).
  10. Design simple decision making process for a utility based agent in uncertain environment using decision network.
  11. Design complex decision making process for a utility based agent in uncertain environment using Markov Decision Process (MDP) and Partially Observable MDP (POMDP).
  12. Model decision making problems with multiple agents in game theory.
  13. Design fuzzy expert system to handle vagueness in input data.

64.  Cryptography and Network Security (Coordinator: Dr.sangeeta Mittal; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Implement block and stream classical cipher techniques
  2. Analyse avalanche effect to assess security of classical ciphers
  3. Implement and compare security of modern symmetric ciphers, DES and AES on linear cryptanalysis attacks
  4. Explain the role of prime number theory and quadratic congruence in cryptography
  5. Implement asymmetric encryption algorithms of RSA , ElGamal and Elliptic Curve Cryptography
  6. Implement and compare SHA-512 and SHA – 1024 hashing algorithms
  7. Integrate Digital Signatures and certificates in existing applications
  8. Apply zero knowledge protocols for entity authentication
  9. Implement key management for symmetric key distribution
  10. Apply PGP email security protocol to existing email server-client apps

65.  Multimedia Computing (Coordinator: Dr. Tribhuwan K Tewari; 8th Sem)

(Core Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Use multimedia authoring tools such as Macromedia Flash, Macromedia Director etc., for creating a complete multimedia presentation, including interactive user control.
  2. Describe the characteristics, representation and format of different multimedia data.
  3. Develop a variety of multimedia applications such as audio encoder-decoder, video players, content-based multimedia retrieval app etc.
  4. Consider Quality of Service (QoS) as a collective measure for service performance determining the degree of satisfaction of the user of that service.
  5. Assess limitations of classical networking protocols for real time multimedia applications.
  6. Perform analytical as well as empirical performance evaluation of data compression techniques for multimedia streaming applications.
  7. Critically analyse emerging multimedia computing technologies.

66.  Mobile Application Engineering (Coordinator: Dr. K. Rajalakshmi; 8th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Assess the mobile database applications related requirements, issues and challenges such as data dissemination, data broadcasting and data synchronization.
  2. Analyse activity life cycle of mobile application with Model View Controller (MVC) of Android OS.
  3. Design and implement mobile applications with view controllers to access different Activity methods and UI interfaces.
  4. Design and develop Android applications user interfaces by using layouts and widgets.
  5. Develop Mobile Generic User Interface, Voice User Interface and create XML web services.
  6. Implement programs to handle operations like creating, updating, deleting and searching records in an Android database using SQLite.
  7. Debug and deploy mobile applications on simulator and physical device.

67.  Parallel Processing (Coordinator: Dr.Chetna Dabas and Kashav Ajmera; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Categorize diverse parallel architectures on the basis of the relationship amongst processing elements, instruction sequence, interconnections network and memory (shared and distributed).
  2. Differentiate between sequential, potentially parallel and embarrassingly parallel problems
  3. Asses the suitability to apply parallel programming patterns to a given problem.
  4. Implement programs using parallel programming patterns.
  5. Decompose and allocate the parallel tasks on multiple processors while using POSIX thread API or OpenMP.
  6. Design and formulate parallel algorithms for shared and distributed memory models 
  7. Analyse the performance of a parallel algorithm using processor simulator CPU Z
  8. Evaluate the performance of a parallel algorithm for specific architectures and topologies (like parallel sorting techniques, e.g., Bitonic merge sort, Odd even transposition sort, etc., and the classical dining philosophers problem)

68.  Search-based Software Engineering (Coordinator: Dr.Amarjeet Prajapati; 8th  Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the concepts of various types of optimization problems (e.g., linear and non-linear, convex and non-convex, single and multi-objective, etc.) in the context of software engineering.
  2. Define and formulate various software engineering activities/tasks e.g., requirement analysis, software design and software restructuring as search-based optimization problem.
  3. Develop methods for encoding the software engineering problems for finding optimal solutions from larger search space using search-based techniques.
  4. Gain insight and experience of tailoring various optimization methods and algorithms such as Harmony Search (HS), Artificial Bee Colony (ABC), Particle Swarm Optimization (PSO), etc., according to their suitability with respect to various classes of software engineering problems.
  5. Implement and apply different optimization techniques on various forms of software optimization problems e.g., software architecture recovery, software refactoring, and software re-modularization.
  6. Evaluate the performance of different single and multi-objective optimization techniques using different quality indicators such as Generational Distance (GD), Inverted Generational Distance (IGD), hyper-volume (HV), Error Ratio, Set Coverage Metric, Spacing and Spread.

69.  Advanced Computer Graphics (Coordinator: Dr. Suma Dawn)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain the fundamentals of advanced computer graphics concepts, GPUs, Graphics Processing pipeline.
  2. Perform Window to Viewport Coordinate Transformation; Clipping Operations on rectangular and non-rectangular windows for point, lines, polygons, curves and text.
  3. Derive 3D objects from 2D primitives using sweep representations.
  4. Apply 3D transformations, 3D viewing, parallel and perspective projections, and 3D clipping (direct and Canonical clipping using Cohen Sutherland, Liang-Barsky, and Sutherland Hodgeman algorithms).
  5. Apply models for surface representation – Polygon Surfaces, Tables, Meshes, Planes and surfaces (Quadric, Superquadrics), Blobby Objects, Spline Curves and surfaces (Cubic, Bezier, Splines), Wireframes, Constructive Solid Geometry Methods, Octrees and BSP Trees.
  6. Simulate Fractal Geometry, Particle Systems and Physics-based Modeling for fire, water, cloud, smoke, snow, and cloth simulations.
  7. Select and apply Visible Surface Detection Algorithms such as – Object–space methods and Image-space methods, and demonstrate application of coherence w.r.t. ROI, and LOD requirements.
  8. Use Standard Primaries and Chromaticity Diagram, and differentiate between various Color Models such as CMYK, RGB, HSV, HSI, YCbCr.
  9. Explain and implement Halftone, Patterns and Dithering Techniques used in Print industries.
  10. Implement models for the interaction of light and materials, Transparency and shadows, and rendering techniques based on Ray Tracing Methods, Space Subdivision Methods and Distributed Ray Tracing, Radiosity, and Raycasting.
  11. Use OpenGL and WebGL for building graphics applications and evaluate the performance of 2D & 3D environments.
  12. Develop applications of interactive computer graphics for scientific visualization, and other areas such as engineering, design, simulation and entertainment.

70.  Pervasive Computing (Coordinator: Dr. K. Rajalakshmi; 8th Sem)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Assess the requirements, issues and challenges in pervasive computing especially for small, battery powered, wireless computing (WiFi, WPAN, and Mobile Networks) and sensing devices.
  2. Analyse the data processing requirements for context aware web applications in different domains.
  3. Explain adaptation models namely Odyssey, CODA, and Transaction Proxies in order to collect, analyse, adapt and use the contextual information for web applications.
  4. Evaluate and propose suitable solutions for data dissemination and data caching in pervasive computing applications.
  5. Describe and evaluate middleware solutions based on JINI technology that bridge web applications to the underlying systems that support mobility.
  6. Evaluate mobile agents and service discovery protocols based on JADE platform in pervasive computing applications.

71.  Performance Assessment of Computing Systems  (Coordinator: Dr. Adwitiya Singha; 8th Sem)

(Core Course:  Theory + lab)

On successful completion of this course, the students should be able to:

  1. Explain significance of performance to assess operational and functional lifetime of computing systems
  2. Define performance goals for models, methods and algorithms in computational systems
  3. Execute appropriate steps for analysing performance of computing systems owing to static and dynamic parameters
  4. Identify system-specific metrics to evaluate workload performance of processor, database, network and server
  5. Implement suitable performance analysis techniques, involving modelling, simulation and measurement; owing to specific criteria, involving – execution time, level of accuracy, etc.
  6. Employ probability theory and computational statistics to analyze system performance
  7. Apply random variables to model the outcome of random experiments, using discrete and continuous probability distributions
  8. Analyze multi-dimensional performance of computing systems with variation in workload and existing trade-offs
  9. Apply Markovian model to analyze continuous & discrete-time queuing process
  10. Analyze performance of pre-emptive and non-pre-emptive prioritized task scheduling
  11. Evaluate impact of diffusion over connected network of computing systems
  12. Design parameters analytically and experimentally to evaluate system performance
  13. Predict propagating impact of numerical and non-numerical errors in performance analysis
  14. Apply simulation methodology to explore dynamism in system behaviour
  15. Optimize utilization of available resources to achieve set of objectives subject to constraints and capacities, using Linear Programming Problem (LPP)

II.  MTech Courses:

1.  Data Structures and Algorithms for Big Data (Coordinator : Deepti Singh)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Analyze and apply basic data structures and algorithms for solving big data problems.
  2. Explain Hadoop cluster architecture and its components.
  3. Apply the MapReduce framework to big data problems.
  4. Differentiate Hadoop Distributed File System (HDFS) from other storage techniques, e.g., NFS and UNIX file system.
  5. Critically appraise different NoSql database models, e.g., RDBMS, Hbase and Cassandra.
  6. Apply hashing on large scale multi-dimensional data sets using Locality Sensitive Hashing.
  7. Differentiate between Probabilistic data structures and deterministic data structures w.r.t streaming applications.

2.  Cloud Based Big Data Systems-I (Coordinator: Dr. Shikha Mehta)

(Elective Course for Data Analytics)

On successful completion of this course, the students should be able to

  1. Explain and relate database systems and cloud computing.
  2. Differentiate between conventional (relational) databases and cloud databases.
  3. Differentiate techniques of data distribution – Partitioning and Replication.
  4. Outline SQL based Cloud Database systems architecture and data model.
  5. Develop a simple JDBC application with SQL based Cloud Database-NUODB
  6. Categorize Cloud NoSQL Data Models
  7. Explain Cloud NoSQL- Cassandra architecture, transaction processing and repair mechanisms for big data storage.
  8. Analyze the Cassandra consistency levels with read/write loads for diverse applications requirements.
  9. Apply Cassandra CQL commands to define, query and manipulate a NoSQL database
  10. Design and develop a simple database application and connect with a NoSQL Cassandra database

3.  Parallel and Distributed Databases (Coordinator: Dr. Shikha Mehta)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Explain and apply techniques of distributed and parallel database design and schema mapping.
  2. Differentiate between Mobile, Spatial and temporal databases
  3. Apply techniques of data distribution and distributed query evaluation for solving real-world problems.
  4. Categorize techniques of distributed information retrieval.
  5. Apply NoSQL database technology to distributed applications.
  6. Apply tools such as Hadoop and Spark for big data processing.
  7. Analyze the transaction semantics in a parallel/distributed setting as well as concurrency control.
  8. Design cost effective solutions for distributed query optimisation.
  9. Evaluate the performance of solutions over different parameters such as CPU time, I/O time, communication time etc.

4.  Pattern Recognition and Machine Learning (Coordinator: Dr. Dharmveer Singh Rajpoot)

(Core Course for Integrated MTech (CSE))

On successful completion of this course, the students should be able to:

  1. Identify relation between products using association rule mining algorithm, which helps the businesses to target the customers for cross-selling.
  2. Apply various clustering algorithms (e.g. K-Means, K-Medoids, Agglomerative, Divisive approach) for grouping of data objects based on the similarity and identification of the outliers.        
  3. Determine the decision boundary between two classes using Classification methods (e.g. ID3, SVM, HMM).
  4. Develop functions to predict the price of used products using Regression method.
  5. Analyze the action sequence to predict the outcome of a game using Reinforcement learning (e.g., Q-Learning).
  6. Apply dimension reduction methods (e.g. PCA, SVD, LDA, RST) to reduce the dimensionality of high dimensional datasets.
  7. Validate the results produced by machine learning algorithms using SSE, precision, recall, accuracy and tf-idf.

5.  Machine Learning and Data Mining (Coordinator: Dr. Bharat Gupta)

(Core Course)

On successful completion of this course, the students should be able to:

  1. Differentiate between classification, clustering and Association Rules techniques.
  2. Apply and Compare different classification techniques, e.g., k-Nearest Neighbours, Naïve Bayes, ID3 Decision Trees, Support Vector Machine, etc.
  3. Evaluate different classification techniques by using accuracy metrics, e.g., Confusion Matrix, True Positive, False Positive, True Negative, False Negative Precision, Recall, F-measure, Sensitivity, Specificity, Total Accuracy, Receiver Operating Characteristic (ROC) curve, etc.
  4. Apply linear Regression technique for predicting the value of a variable.
  5. Apply and compare different clustering techniques, e.g., k-means, k-mediods, etc.
  6. Apply Apriori algorithm to generate the frequently used rules in a market basket analysis.
  7. Apply different dimensionality reduction techniques e.g. PCA, SVD, Factor Analysis, Linear Discriminant Analysis, etc., in big data scenarios.
  8. Use Artificial Neural Network techniques, i.e., Back propagation, Feed forward Network, Kohonen Self-Organising Feature Maps, Learning Vector Quantization, etc,’ for solving classification and clustering problems.
  9. Apply Ensemble Bagging and Boosting methods in solving classification problems.
  10. Analyse the real world problem to identify the appropriate Machine Learning techniques for classification, clustering and Association rules.
  11. Design Machine Learning based solution for simple real world problems.

6.  Flexible Computer Networks (Coordinator: Dr. Sangeeta Mittal)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Outline the requirements of modern networking scenarios
  2. Describe the current network-traffic characteristics
  3. Assess limitations of classical networking techniques in supporting recent applications
  4. Describe Software Defined Network architecture, need and concepts
  5. Explain interaction and management of SDN data , control and application planes
  6. Examine the challenges and opportunities associated with adopting SDN
  7. Implement Openflow based southbound API in Mininet emulator
  8. Design and create SDN network consisting of SDN switches and a centralised controller
  9. Analyse performance of Pox and OpenDaylight SDN Controllers using verification tools
  10. Design traffic engineering modules for load balancing, quality of service and multicast data transport in SDN
  11. Conduct research on flexible networking issues

7.  Distributed Systems (Coordinator: Dr. P. Raghu Vamsi)

(Core Course for integrated MTech (CSE))

On successful completion of this course, the students should be able to:

  1. Differentiate the conventional computer networks and distributed systems.
  2. Explain the challenges and architectures of distributed system e.g., Google Distributed System.
  3. Apply suitable network protocols, principles and communication mechanisms in distributed systems.
  4. Develop and implement applications using various inter-process communication (IPC) APIs.
  5. Apply Remote Method Invocation (RMI) and Remote Procedure calls (RPCs) using Java and CORBA technologies in distributed programming.
  6. Implement process and thread control with the support of operating system for IPC in distributed systems.
  7. Analyze and detect the deadlock possibility and its avoidance in IPC.
  8. Design fault tolerant distributed systems for automatic fault detection and recovery from failures.
  9. Model the global predicate detection and Consensus and agreement algorithms in distributed computing environment.
  10. Analyze the distributed file systems (DFS), starting from conventional DFS to latest technologies, e.g, Hadoop File System, Google File System.
  11. Outline cryptographic primitives to secure distributed systems.

8.  Data Science Programming lab (Coordinator: Ms.Sarishty Gupta)

(Core Course for DA)

On successful completion of this course, students should be able to :-

  1. Create, modify and test programs in R programming  language for data analysis problems.
  2. Apply the statistical analysis techniques to the data set.
  3. Plan the various phases of data analysis – cleaning, transforming and analyzing data.
  4. Perform data visualisation to build informative graphs and plots.
  5. Transform the data in the desired form for further analysis.
  6. Perform exploratory data analysis using visual and quantitative methods to describe and summarize a dataset.

9.   E-Commerce and Social Media (Coordinator: Dr.Sandeep K Singh)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Analyse and categorize various components of Social Web and Social Commerce.
  2. Compare and categorize different commercial models of E-commerce.
  3. Develop marketing strategies based on interactions and insights from Social web.
  4. Perform data extraction and cleaning using Open source API s from various social networking sites.
  5. Design and develop programmable E-commerce solutions.
  6. Create suggestions and recommendations for Social Shopping
  7. Evaluate the effect of different zones of Social web using Social Media metrics.
  8. Apply MVC design pattern and implement proposed E-Commerce solutions to enhance revenue, promote brand and reach out to customers.

10.  Wireless Sensors and Actuator Networks  (Coordinator: Dr. Adwitiya Sinha)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Develop distribution models for deterministic and stochastic network deployment
  2. Assess the impact of radio propagation for remote communication with terrain irregularities
  3. Build mathematical models for energy consumption analysis
  4. Design communication protocols for wireless sensor network standards
  5. Generalize models to broadly accommodate requirements of general purpose sensor networking
  6. Implement medium access control to channelize the usage of bottleneck network resources
  7. Analyze routing algorithms and protocols for scenario-specific communication
  8. Implement protocols and mechanisms to record improvement in network operations
  9. Apply load balancing to improve functionalities over duty cycles or epochs
  10. Detect inherent cluster formation owing to spatial & temporal stochastic distribution of sensors
  11. Estimate performance of sleep scheduling strategy in terms of network lifetime
  12. Synthesize energy-aware data prediction and aggregation methods over node hierarchies
  13. Examine mobility in wireless scenario with benchmark mobility models and other existing counterparts
  14. Analyze mobility pattern generated from actuator-driven mechanisms
  15. Evaluate network performance with actuator-imparted mobility in wireless sensor network
  16. Demonstrate sensor movement with actuation to application-specific remote scenarios
  17. Judge suitability of various cross layer schemes, as per applicability in networking domain
  18. Optimize network lifetime with maximized data and network coverage
  19. Validate the working of existing methods and models in terms of network-specific parameters
  20. Compare underlying infrastructure and working of protocols and standards in context of sensor network
  21. Explore and select enabling technologies with explicit challenges & design principles for smart sensor applications

11.  Design, Innovation, and Incubation-I (Coordinator: Dr. Sanjay Goel)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Develop a multidimensional perspective towards design thinking.
  2. Evaluate the suitability of IT products or services wrt various theories related to human needs, desires, and motivations.
  3. Develop the requirements for new IT products and services in view of stated and unstated customer needs, desires, motivations, expectations, and pain points.
  4. Analyse business organisations wrt Porter’s value chain model, as well as identify its primary and secondary business activities.
  5. Develop the requirements for new IT products and services to support an organisation’s primary or secondary business activities.
  6. Evaluate the suitability of IT products or services wrt UN defined Sustainable Development Goals and targets.
  7. Develop the requirements for new IT products and services to support the fulfilment of UN defined Sustainable Development Goals and targets.
  8. Apply the concepts of affordance, the gulf-of-execution, and the gulf-of-evaluation for evaluating and designing IT products and services.
  9. Explain, justify, expand, adapt, and refine the HCI guidelines in view of a functional understanding of human senses and mind.
  10. Mindfully apply the HCI guidelines for evaluating and designing IT products and services.
  11. Use Value Proposition Canvas model for evaluating and designing IT products and services for consumers, business automation, or e-governance using the available and emerging IT technologies.
  12. Use the Wheel and the Canvas Models for evaluating and designing IT Business Models.
  13. Develop Business Plans for chosen IT Businesses.

12.  Project  Based Learning-I (Open Source Software Development, Coordinator: Mahendra Gurve)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Set up a GitHub account and use it to manage files.
  2. Use git commands to support version control.
  3. Implement project enhancements by creating and merging branches.
  4. Interact with the open source community via appropriate questions and forums.
  5. Choose a suitable open source code from GitHub to reuse for their projects.
  6. Develop Java based projects and upload it on GitHub.
  7. Apply simple software project planning, documentation, and management techniques.

13.  Project Based Learning-I  (Open Data Centric Services Development; Coordinator: Dr. Gagandeep Kaur and Sarishty Gupta)

(Core Course for DA)

On successful completion of this course, the students should be able to:

  1. Fetch, parse and visualize API enabled real time open data under Open Government Initiatives.
  2. Use Python Libraries for handling high-powered data APIs
  3. Design and implement processes for handling client-server responsibilities & content negotiation using JSON API request and response methods
  4. Create and implement JSON API objects, data resource objects by fetching data resources, relationships, sparse fieldsets and pagination
  5. Identify and implement data types, attributes, methods, through list of lists, dataframe, JSON normalization, using features of ijson, pandas, matplotlib, seaborn, and folium libraries
  6. Plan various phases of data cleaning, preprocessing, transforming, analysis and prediction
  7. Apply statistical, regression techniques for data analysis using Numpy & Scipy
  8. Perform data plotting with histogram, bar plot, scatter plot, pair plot, box plot, implot, pie chart, JSON API with plotly, plotly.js, static and dynamic plotting with plotly
  9. Perform data visualization heatmaps, polar charts, wind rose charts, dendrograms, plotly dashboards

14.  Web Algorithms (Coordinator: Dr.Neetu Sardana)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Explain structural and evolutionary characteristics of the web.
  2. Apply collaborative filtering and content based recommendation algorithms to resolve real world research problems.
  3. Implement and evaluate News feed search (NFS) algorithms of varying social media platforms
  4. Perform and assess web caching strategies at varied levels-user, web server and gateway server
  5. Analyse  link-structure of web using Power, Zipf or Pareto laws
  6. Apply statistical techniques like Newman Girvan, K-Lin, CPM, Max-Min cut, etc. to discover web based communities
  7. Model information diffusion on web using information cascade model, linear threshold model, epidemic models etc.

15.  Advanced Algorithms Lab (Coordinator: Deepti Singh)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Experimentally Verify  the properties of advanced data structures.
  2. Implement algorithms and use appropriate advanced data structures for solving computing problems.
  3. Apply amortised analysis on data structures, including dynamic linked list, binary search trees, B-Trees, and Graphs.
  4. Implement the major algorithms for sorting and analyse these algorithms based on their design strategies.
  5. Implement randomized algorithms to solve various problems, and validate their correctness and complexity.
  6. Validate the principle of optimality and sub-optimization.
  7. Formulate recursive equations for a dynamic programming.

16.  Mobile and Pervasive Computing (Coordinator: Dr. K. Rajlakshmi)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Assess the requirements, issues and challenges in pervasive computing especially for small, battery powered, wireless computing and sensing devices.
  2. Analyse the data processing requirements for context aware web applications in different domains.
  3. Write programs to collect, analyse, adapt and use the contextual information for web applications running on mobile computing devices.
  4. Evaluate and propose suitable solutions for data dissemination and data caching in mobile pervasive computing applications.
  5. Write programs to incorporate routing and location management techniques in pervasive computing environments.
  6. Design middleware solutions that bridge mobile computing applications to the underlying systems that support mobility.
  7. Write programs to create mobile agents and service discovery protocols in mobile pervasive computing applications.

17.  Software Systems Lab-II (Coordinator: Dr.Sandeep K Singh + Deepti Singh)

(Core Course for integrated MTech (CSE)))

On successful completion of this course, the students should be able to:

  1. Apply APIs for developing J2EE applications.
  2. Demonstrate the application of Servlet in reading and processing of data from html files.
  3. Implement session tracking in websites using techniques like url rewriting, cookies, hidden form fields and session objects.
  4. Develop server and client side scripts in JSP using expressions, scriplets, page directives, and declarations.
  5. Implement server component models, database connectivity, and server-side programming in JAVA/Python/PHP.
  6. Demonstrate the use of MVC design pattern to integrate JSP, Servlet and database for implementation of E-Commerce solutions
  7. Design and develop web application in Net beans and Eclipse IDE and also deploy the same.
  8. Set up and Install Hadoop in its three operating modes: Standalone, Pseudo distributed and Fully distributed.
  9. Implement the file management tasks in Hadoop: Adding files and directories, Retrieving files, and Deleting files.
  10. Implement Map Reduce programs.

18.  Cloud Technology Lab (Coordinator: Dr.Prakash Kumar)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Install and configure Virtual Machine Monitors (VMMs-preferably open source VMMs, Cloud Simulators), CloudSim, WorkflowSim and other free VMMs.
  2. Create Virtual Machines (VMs) with different configurations using open source VMMs and Cloud Simulators.
  3. Execute, analyze and evaluate various aspects of IaaS, PaaS and SasS cloud models on VMs for wide range of applications (e.g., load balancing, request allocations to different VMs based on resource demands.)
  4. Deploy heterogeneous VMs to Data Centers having different properties.
  5. Allocate the underlying system resources to the VMs running on different Data Centers (e.g, CPU, memory, network bandwidth etc.)
  6. Design and develop different VM-based applications and write the programs to allocate the resources for optimal system performance.
  7. Implement and evaluate the effect of various system parameters (e.g Response Time, memory usage, CPU cycles, network bandwidth consumed) for different applications.
  8. Deploy and test applications in Fault aware environments (e.g., reducing the number of faults per unit time).
  9. Optimize the performances of VMs for application by using efficient VM migration techniques (e.g. based on CPU intensive, Memory intensive tasks).

19.  Cloud based Big Data Systems-II (Coordinator: Dr. Parmeet Kaur)

(Core Course for DA)

On successful completion of this course, the students should be able to:

  1. Store and process large volumes of structured and unstructured data with NoSQL Systems as MongoDB, Redis and Neo4j.
  2. Distinguish between Consistency, Availability and Partitioning (CAP theorem), and classify cloud applications based on these features.
  3. Analyse and characterize the potential speedup of cloud applications using Amdahl’s law and data locality principles.
  4. Outline the importance as well as challenges of cloud computing deployments in terms of interoperability, monitoring and control.
  5. Demonstrate the use of Map-Reduce, Vertex-Centric and Continuous Dataflow programming models and apply an appropriate programming model for a Big Data Application on Cloud.
  6. Identify issues related to economics and security of data storage within a multi-tenant database environment.
  7. Manage Big Data and perform data analysis by loading and querying data using Hive
  8. Build scalable data stores with a cloud based Database as a Service.
  9. Analyse problems for big-data applications  and assess the suitability of a cloud based solution.
  10. Select the appropriate technologies to set up a development environment consisting of local machine configurations and cloud based servers.

20.  Cloud and Web Services Software Engineering (Coordinator: Dr.Sandeep K Singh)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Recognize the key issues in designing and implementing distributed software systems
  2. Apply patterns (e.g. Master slave, two tier, multi tier etc) in distributed systems architecture.
  3. Explain the basic concepts of a web service, web service standards and service oriented architectures.
  4. Differentiate between restful and soap based services.
  5. Use service engineering process to design, develop, test, deploy and execute reusable web services.
  6. Use industry standard open source tools such as apache axis2, tomcat, derby and eclipse.
  7. Classify cloud services into compute, storage, database, application, analytics, network, and deployment services.
  8. Use, compare and adapt cloud services using open source cloud programming platforms – Google app engine and Amazon Web Services (AWS)
  9. Identify the changes in design, security and testing patterns for service and cloud computing paradigms.

21.  Cloud and Web Services Lab (Coordinator: Dr.Sandeep K Singh)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Write programs in JAVA using core concepts like classes, files, packages, modules, inheritance, exception handling and data structures.
  2. Design, create and validate well-formed XML documents using DTD and XML Schema
  3. Use open source API and XML parsers in order to parse and format XML data to the desired format
  4. Design, develop, test, deploy and execute reusable web services
  5. Write programs in Python using data types, control flow, packages, modules, files, date and time operations and data structures.
  6. Use cloud services offered by Amazon and Google for compute, storage, database, application, analytics, network and deployment services.
  7. Build simple applications using both web and cloud service

22.  Information Integration and Visualisation (Coordinator: Dr.Sangeeta Mittal)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Apply pre-processing to prepare datasets for Integration
  2. Rewrite query expressions to find query equivalence
  3. Write query expressions in GAV, LAV and GLAV Languages for specifying semantic mappings across different databases
  4. Apply string matching and heuristics to identify same entities in different sources
  5. Create Semantic Mappings at schema level
  6. Design query for optimized and adaptive processing in integrated systems
  7. Create multivariate visual representations using SPLOMs, brushing and linking
  8. Apply Tufte’s visual design principles to assess visual representations of data
  9. Use Tableau tool for creating interactive visuals
  10. Create index charts, horizontal and stacked graphs for visualization of time series data
  11. Visualize Statistical distribution using Q-Q plots and parallel coordinates
  12. Represent hierarchical data using node-link diagrams, dendograms and adjacency diagrams

23.  Empirical Research and Performance Evaluation (Coordinator: Dr.Sanjay Goel)

(Core Course, CSE (Data Analytics))

On successful completion of this course, the students should be able to:

  1. Objectively and knowledgeably criticize published research.
  2. Write a literature review on the topic.
  3. Identify, describe, and critique the scientific method (hypothesis, test/artefact, evaluation) or similar engineering research and development methods used in various research projects and programs in the domains of engineering, management, and development.
  4. Be able to objectively consider gaps in knowledge, understanding or ability and be aware of possible sources of support such as the skills of colleagues.
  5. Define research problems from a coherent analysis of gaps in existing knowledge base.
  6. Formulate hypotheses and/or research questions for the purposes of designing a personal research project.
  7. Write research proposals, describing research questions, context, sources and methodology.
  8. Write proposals for empirically evaluating the performance or impact of engineering, management, and development  techniques, systems, and programs, describing evaluation purpose, context, metrics, data sources, and methodology.
  9. Able to make and execute research and evaluation plans.
  10. Use engineering principles to research, design, develop, and evaluate instruments and applications for data collection, analysis and management.
  11. Use research and evaluation principles to investigate and evaluate structures, instruments, machines, experiments, processes, programs, or systems.
  12. Direct systematic study toward a fuller knowledge or understanding of the observable facts, and discovers new approaches to achieve research or organisational goals
  13. Analyse the strengths and weaknesses of one’s own and other’s research and evaluation work.
  14. Communicate own research orally and in written reports. Write progress reports about the research and evaluation work.
  15. Undertake research and evaluation work, making systematic use of investigation or experimentation, to discover or revise knowledge of reality.

24.  Deep learning (Coordinator: Dr. Satish Chandra)

(Elective Course)

On successful completion of this course, the students should be able to:

  1. Express the motivation behind and need of Deep Learning
  2. Pre-processing data using approaches such as mean subtraction, normalization, principle component analysis etc.
  3. Use the architecture of NVIDIA GPUs in Deep Learning applications.
  4. Design and Model Convolution Neural Networks for Image Recognition and Natural Language Processing
  5. Design and Model Recurrent Neural Networks for Social Network Analysis
  6. Train various types of Deep Neural networks namely, Convolution Neural Network, Recurrent Neural Network (Long short-term memory) & Deep Reinforcement Learning
  7. Design and Model Auto encoders for unsupervised learning
  8. Use Ensemble learning algorithms to improve predictive performance of Deep Networks.
  9. Assess the Deep Learning techniques on the basis of performance measures such as training speed, classification error, kappa coefficient, precision, recall and F-Measure.
  10. Evaluate the suitability of using Deep Learning techniques w.r.t. different tasks and context.

25.  Internet of Things (Coordinator: Dr. K. Rajalakshmi)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Identify and visualize the applications of enabling IoT technologies in today’s world.
  2. Describe the domain, service capabilities, and network management functions of IoT applications.
  3. Define the requirement specifications and choose appropriate IoT devices (Arduino, Raspberry Pi, Intel Edison etc) for developing IoT applications.
  4. Describe, compare and evaluate communication frameworks (LoPWAN, LTE, WLAN, etc) for connecting IoT devices.
  5. Describe, compare and evaluate web connectivity components (HTTP, REST, Websocket) for connecting the devices network with the Internet and web.
  6. Describe, compare and evaluate data acquisition, organization, processing and analytics approaches for IoT applications.
  7. Analyze and design IoT application using the open-source IDE (Node-RED) based on IoT stacks.

26.  Cryptography and Computer Security (Coordinator: Dr.Gagadeep Kaur)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain concepts, principles and theories of cryptography and computer security
  2. Identify major types of threats to information security and their association to network security.  
  3. Explain network security protocols at different layers with respect to TCP/IP security protocol stack, namely, FTPS, HTTPS, DNSSEC, SSL, SSH, SMIME, IPSEC and PPTP.
  4. Evaluate, select and use techniques and approaches to discover network and system vulnerabilities.
  5. Use services of various network traffic capturing & defense tools-Wireshark, Tshark, VPNs, Firewalls, etc.
  6. Distinguish host based & network based attacks in traffic captures of wanted & unwanted network traffic with respect to Protocol weakness Exploits, Spoofing, Spams, Botnets and Malwares.
  7. Explain the aspects of IP Security – IP Authentication Header, Payload Encapsulation Security, Secure Socket Layer and Secure Electronic Transaction.
  8. Differentiate between different cryptographic algorithms-Classical Encryption Techniques, Block Ciphers and Data Encryption Standard, Advanced Encryption Standard, Contemporary Symmetric Ciphers, Confidentiality using Symmetric Encryption, Message Authentication and Hash functions based algorithms.
  9. Implement supervised & unsupervised defensive solutions based on packet filtering, attack classification & vulnerability analysis, detection and mitigation.
  10. Conduct research in cryptographic algorithms and network security

27.  Performance Engineering Lab (Coordinator: Dr. Kavita Pandey)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Analyze the performance of networks using NS2 Simulator and other utilities like XGRAPH, NAM, AWK and Python programming
  2. Analyze the performance of the different protocols by simulating different network scenarios in NS2
  3. Simulate wired and wireless networks in NS2 and analyze the simulation results using AWK and Python.
  4. Simulate the M/M/1, M/D/1 and D/M/1 Queuing models in NS2.
  5. Use the Gprof (GNU Profiler) to analyze the performance and statistics of a program in terms of call counts and timing information of the functions
  6. Analyze the performance of cloud-hosted databases using YCSB (Yahoo Cloud Serving Benchmark) Framework
  7. Load and execute the existing workloads across a variety of data serving systems using YCSB client
  8. Select the appropriate system by measuring the performance of existing cloud systems in terms of latency, throughput etc.

28.  Data Science Programming Lab-II   (Coordinator: Dr. Anuja Arora)

(Core Course for CSE – Data Analytics)

On successful completion of this course, the students should be able to:

  1. Acquire Data through Web Scraping / Crawling, and Data API such as Tweepy (Twitter), Google API (YouTube, Google+, Google Search Engine), FaceBook API (Instagram API, Graph API, Atlas API), etc.
  2. Clean, Integrate and select appropriate attribute using various data transformation and discretization techniques.
  3. Explore Data for rapid quantitative analysis using data science tools- Weka3, OpenRefine (Google), and Rapid Miner.
  4. Visualize Data in interactive manner using visualization tools such as Gephi, NodeXL, and Cytoscape.
  5. Write Programs in R and Python to explore and visualize data using libraries such as Matplotlib, Graphviz, NetworkX, ggplot2, etc.
  6. Handle complex data science problems such as classification, prediction, clustering, dimension reduction, etc.using various R libraries (RMiner, Caret, FactoMineR) and Python APIs (Scipy, Scikit,-learn, Pandas, NLTK, Gensim, Theano).

29.  Advanced Machine Learning lab (Coordinator: Dr. Satish Chandra)

(Core Course for CSE – Data Analytics)

On successful completion of this course, the students should be able to:

  1. Apply Logistic Regression and Multiple Layer Perceptron on MNIST dataset using Python .
  2. Deploy Neural Network with TensorFlow by accessing and understanding the files that make up a trained model.
  3. Train a deep neural network to recognize handwritten digits by, Loading image data to a training environment,   Choosing and training a network, Testing with new data and iterating to improve performance.
  4. Implement Object Detection with by combining image processing libraries with deep learning on TensorFlow.
  5. Apply TensorFlow Linear Model on Census Income Dataset.
  6. Build from linear to deep models and assess the difference in performance.

30.  Large Scale Graph Algorithms and Analytics (Coordinator: Dr. Adwitiya Sinha)

(Elective Course:  Theory)

On successful completion of this course, the students should be able to:

  1. Explain applicability of large scale graphs spanning over huge and complicated structures
  2. Identify various complex sources for gathering real data to construct large graphs
  3. Generate random graphs to simulate connections and interactivity among larger number of entities
  4. Analyze the evolution process of growing web of interactions using random graphs
  5. Design algorithms and methods to extract required information from gathered or generated complex data sources
  6. Analyze different forms of graphs, including multi-graphs and hyper-graphs in context of variation in complexity and scalability of the underlying networked structure
  7. Discover patterns by analysing nodal interactions to reveal inherent communities
  8. Performance analysis of indexing, clustering and classification algorithms over multi-dimensional and growing social structures
  9. Implement computation intensive algorithms (e.g. Centrality, Ranking, Indexing, Matching, Partitioning, Clustering, etc.) for static and dynamic random graphs using open source software to visualize and interpret experimental outcomes
  10. Evaluate large-scale strategic graphs using game theoretic approach to perform cost-benefit analysis and optimize the preferential outcomes
  11. Perform behavioural analysis on large-scale graph-based structures using power law distribution
  12. Generalize probabilistic models for prediction of isolation and socialization of entities
  13. Build applications for analysis of large graphs in context of Social Network, Communication and Citation Graphs with novel algorithmic and analytical approach
  14. Evaluate novel algorithms with existing counterparts in terms of context-specific parameters
  15. Discover application-based research and open challenges with upgraded and enabling technologies in context of growing networks and complex graphs

31.  Project  Based Learning-II (Open Source Software Development, Coordinator: Mahendra Gurve)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Apply lifecycle processes and work collaboratively in a small team to develop a moderate-sized open source software system from conceptualization to completion, including requirements specification, system modeling, system design, implementation, unit and system testing, integration, source code management. 
  2. Analyze the software structure of java/android based open source software projects and locally setup and configure the integrated system.
  3. Apply a mix of Client, Server and Database technologies to develop open source software projects.
  4. Create and manage the database using cloud technologies.  
  5. Integrate the various third party libraries like Firebase, OpenCV and APIs like java speech API, Google location API in their projects.
  6. Contribute to software communities by publishing projects on various online repositories like Github, Googleplay, etc.
  7. Prepare technical report detailing the software specification, design, test plan, and implementation details.

32.  Project Based Learning-II  (Open Data Centric Services Development; Coordinator: Dr. Gagandeep Kaur and Sarishty Gupta)

(Core Course for DA)

On successful completion of this course, the students should be able to:

  1. Apply software development lifecycle processes and work collaboratively in a small team to develop open data centric services from conceptualization to completion, including requirements specification, system modelling, system design, implementation, unit and system testing, integration, source code management. 
  2. Use python based APIs (PyPDF2, PDFTables API and PDFMiner) to import, extract and store data from PDF files in CSV format.
  3. Install and use Poppler to crawl & fetch pdf files and convert the same to html format.
  4. Install and use Laravel, Composer & WAMP Server to scrape html data to tables.
  5. Configuring the SQLite database using Laravel.
  6. Querying the database using raw SQL, the fluent query builder, and the Eloquent ORM.
  7. Implement all CRUD (Create, Read, Update, Delete) operations with Laravel.
  8. Implement database read and write handlers for accessing data from multiple databases.
  9. Implement listening query events, run raw SQL queries and do database transactions.
  10. Design and build dashboards with Frontend and Restful API using Laravel
  11. Integrate dashboards with web or mobile applications.
  12. Prepare technical report detailing the open data centric service specification, design, test plan, and implementation details.

33.  IoT Lab (Coordinator: Dr.Prakash Kumar)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Setup and Install Node.js and Node-RED as IDE platform for IoT application development.
  2. Demonstrate I/O nodes, flows, third party palettes, import/export of flows in Node-RED and interconnection with IoT boards like Raspberry Pi, Arduino etc.,
  3. Develop java scripts for user defined functional nodes and deploy it in Node-Red flows and FRED cloud.
  4. Connect Raspberry Pi devices with sensors and actuators and write Python Programs to control them.
  5. Design and develop IoT system applications for various challenges and problems related to Sustainable Development, e.g., energy and waste management, water conservation, clean energy, improving public health, sustainable urbanization, smart agriculture, etc.

34.  Performance Evaluation of Computing Systems (Coordinator: Dr.  Padam Kumar)

(Core Course for CSE)

On successful completion of this course, the students should be able to:

  1. Create appropriate performance metrics for a system taking into account the objectives of the study (of the system), and assign importance weights to them.
  2. Identify the necessary requirements that a simulation software should provide for the system evaluation, and thus make a good decision about choice of simulation language.
  3. Identify the probability distribution in a given stream of data that corresponds to a source of randomness in a system.  
  4. Generate synthetic random data for performing a simulation study of the system, if the same is not available (or easy to get) from an actual system.
  5. Make appropriate model of a discrete, dynamic, stochastic system using the theory of random processes, if required by the situation.
  6. Apply queuing theory tools to analyse or simulate a system.


Advertisements
Posted in: Uncategorized