R Programming

Module Overview The following module comprises of R programming basics and application of several Statistical Techniques using it. The module aims to provide exposure in terms of Statistical Analysis, Hypothesis Testing, Regression and Correlation using R .

Learning Objectives The objective of this module to make students exercise the fundamentals of statistical analysis in R environment. They would be able to analysis data for the purpose of exploration using Descriptive and Inferential Statistics. Students will understand Probability and Sampling Distributions and learn the creative application of Linear Regression in multivariate context for predictive purpose.

Learning Outcomes After the successful completion of this module, students will be able to: • Install, Code and Use R Programming Language in R Studio IDE to perform basic tasks on Vectors, Matrices and Data frames. • Describe key terminologies, concepts and techniques employed in Statistical Analysis. • Define, Calculate, Implement Probability and Probability Distributions to solve a wide variety of problems. • Conduct and Interpret a variety of Hypothesis Tests to aid Decision Making. • Understand, Analyse, Interpret Correlation and Regression to analyse the underlying relationships between different variables.

Unit I Introduction to R Programming R and R Studio, Logical Arguments, Missing Values, Characters, Factors and Numeric, Help in R, Vector to Matrix, Matrix Access, Data Frames, Data Frame Access, Basic Data Manipulation Techniques, Usage of various apply functions – apply, lapply, sapply and tapply, Outliers treatment.

Unit II Descriptive Statistics Types of Data, Nominal, Ordinal, Scale and Ratio, Measures of Central Tendency, Mean, Mode and Median, Bar Chart, Pie Chart and Box Plot, Measures of Variability, Range, Inter-Quartile- Range, Standard Deviation, Skewness and Kurtosis, Histogram, Stem and Leaf Diagram, Standard Error of Mean and Confidence Intervals.

Unit III Probability, Probability& Sampling Distribution Experiment, Sample Space and Events, Classical Probability, General Rules Of Addition, Conditional Probability, General Rules For Multiplication, Independent Events, Bayes’ Theorem, Discrete Probability Distributions: Binomial, Poisson, Continuous Probability Distribution, Normal Distribution & t-distribution, Sampling Distribution and Central Limit Theorem.

Unit IV Statistical Inference and Hypothesis Testing Population and Sample, Null and Alternate Hypothesis, Level of Significance, Type I and Type II Errors, One Sample t Test, Confidence Intervals, One Sample Proportion Test, Paired Sample t Test, Independent Samples t Test, Two Sample Proportion Tests, One Way Analysis of Variance and Chi Square Test.

Unit V Correlation and Regression Analysis of Relationship, Positive and Negative Correlation, Perfect Correlation, Correlation Matrix, Scatter Plots, Simple Linear Regression, R Square, Adjusted R Square, Testing of Slope, Standard Error of Estimate, Overall Model Fitness, Assumptions of Linear Regression, Multiple Regression, Coefficients of Partial Determination, Durbin Watson Statistics, Variance Inflation Factor.

References 1. Ken Black, 2013, Business Statistics, New Delhi, Wiley. 2. Lee, Cheng. et al., 2013, Statistics for Business and Financial Economics, New York: Heidelberg Dordrecht. 3. Anderson, David R., Thomas A. Williams and Dennis J. Sweeney, 2012, Statistics for Business and Economics, New Delhi: South Western. 4. Waller, Derek, 2008, Statistics for Business, London: BH Publications. 5. Levin, Richard I. and David S. Rubin, 1994, Statistics for Management, New Delhi: Prentice Hall.

Python Programming

Module Overview Python Programming module is intended for students who wish to learn the Python programming language. This module is highly important so as to proceed with this programme. The module comprises of Programming basics with regards to Python Language such as Data Types, Operators, Functions, Classes and .

Learning Objectives This module will help students gain much needed knowledge pertaining to Python Programming, so as to prepare them for the advanced modules such as ML. Python scripting is user-friendly and is the most used language in industry when it comes to designing and scripting applications with respect to Emerging Technologies.

Learning Outcomes Upon successful completion of this module, students should be able to: • To understand why Python is a useful scripting language. • To learn how to use lists, tuples, and dictionaries in Python programs. • To learn how to write loops and decision statements in Python. • To learn how to write functions and pass arguments in Python. • To learn how to design object‐oriented programs with Python classes. • To learn how to use exception handling in Python applications for error handling.

Unit I Introduction History of Python, Need of Python Programming, Applications Basics of Python Programming Using the REPL(Shell), Running Python Scripts, Variables, Assignment, Keywords, Input- Output, Indentation.

Unit II Types, Operators and Expressions Types - Integers, Strings, Booleans; Operators- Arithmetic Operators, Comparison (Relational) Operators, Assignment Operators, Logical Operators, Bitwise Operators, Membership Operators, Identity Operators, Expressions.

Unit III Data Structures and Control Flow Lists, Operations, Slicing, Methods, Tuples, Sets, Dictionaries, Sequences, Comprehensions, Conditional blocks using If, Else and El-if, For Loop, For loop using Ranges, String, list and Dictionaries, While Loop, Loop Manipulation using Pass, Continue, Break and Else, Conditional and Loops Block.

Unit IV Functions Modules and Packages Defining Functions, Calling Functions, Passing Arguments, Keyword Arguments, Default Arguments, Variable-length arguments, Anonymous Functions, Function Returning Values, of the Variables in a Function - Global and Local Variables. Creating modules, Name Spacing, Introduction to PIP, Installing Packages via PIP, Using Python Packages.

Unit V Object Oriented Programming & Exception Handling Classes, Self-Variable, Methods, Constructor Method, Inheritance, Overriding Methods, Data Hiding, Difference between an Error and Exception, Handling Exception, Try Except Block, Raising Exceptions, and User Defined Exceptions.

References 1. R.Nageswara Rao, 2018, Core Python Programming, Dreamtech. 2. John Hearty, 2016, Advanced Machine Learning with Python, Packt. 3. Jake VanderPlas, 2016, Python Data Science Handbook: Essential Tools for Working with Data, O'Reilly. 4. Mark Lutz, 2010, Programming Python, O'Reilly. 5. Tim Hall and J-P Stacey, 2009, Python 3 for Absolute Beginners, Apress.

Structured Query Language

Module Overview In this course, the students will learn the basics of the SQL/No SQL and the Relational Databases. They will learn about the Relational Model and Relational Model concepts and constraints. The students will get exposure to key concepts with regards to SQL Language and DBMS such as Normalization, Transaction Processing along-side an exposure to No SQL programming.

Learning Outcomes This module will help students gain much needed knowledge pertaining to Relational Database Management Systems, Data Models, SQL query processing, Normalization along with an introduction to No SQL Database systems using Mongo DB.

Learning Objectives • To understand the basic concepts and the applications of Database Systems. • To master the basics of SQL and construct queries using SQL. • To become familiar with the basic issues of Transaction Processing and Concurrency Control. • To become familiar with NO SQL Programming Language. • Explain the architecture, define objects, load and query data within No SQL databases.

Unit I Introduction to Database Management Systems Introduction-Database System Applications, Purpose of Database Systems, Views of Data, Data Abstraction, Instances and Schemas, Data Models, Database Languages, DDL, DML, Database Architecture, Database Users and Administrators, Database Design, ER Diagrams, Entities, Attributes and Entity Sets, Relationships and Relationship sets, Integrity Constraints, Views.

Unit II SQL Operators and Relational Theorems Relational Algebra and Calculus, Selection and Projection, Set Operations, Renaming, Joins, Division, Relational calculus, Tuple Relational Calculus, Domain Relational Calculus, Forms of Basic SQL Query, Nested Queries, Comparison Operators, Aggregate Operators, NULL values, Logical connectives, AND, OR and NOT, Outer Joins, Triggers.

Unit III Normalization Problems Caused by Redundancy, Decompositions, Functional Dependencies, Normal Forms, First, Second, Third Normal forms, BCNF, Properties of Decompositions, Loss less Join Decomposition, Dependency Preserving Decomposition, Multi Valued Dependencies, Fourth Normal Form, Join Dependencies, Fifth Normal Form.

Unit IV Transactions Transaction Management, Transaction Concept, Transaction State, Implementation of Atomicity and Durability, Concurrent, Executions, Serializability, Recoverability, Implementation of Isolation, testing for serializability, Concurrency Control, , Timestamp Based Protocols, Validation Based Protocols, Recovery, Failure Classification, Storage Structure, Atomicity, Log Based Recovery, Remote Backup Systems.

Unit V No SQL Overview of No SQL, Types of No SQL Databases, No SQL Storage Architecture, CRUD Operations in MongoDB, Querying, Modifying and Managing No SQL Databases, Indexing and Ordering, Migrating from RDBMS to No SQL, No SQL in Cloud, Database Administration.

References 1. Guy Harrison, 2015, Next Generation Databases: No SQL and Big Data, Apress. 2. Ramez Elmasri, ShamkatB.Navathe, 2013, Database Systems, Pearson. 3. Pramod J. Sadalage, Martin Fowler, 2012, No SQL Distilled, Addison Wesley. 4. A.Silberschatz, H.F. Korth, S.Sudarshan, 2006, Database System Concepts, McGraw Hill. 5. Raghurama Krishnan, Johannes Gehrke, 2003, Database Management Systems, McGraw Hill.

Big Data Analytics

Module Overview This module forms an introduction as well an in-depth study in the field of Big Data and Hadoop. It comprises of the fundamentals as well as advanced topics needed to progress in this technology. The students will learn about the applications, usage and several use case scenarios pertaining to Big Data- Hadoop where they can use the knowledge and progress ahead.

Learning objectives This course will help students gain knowledge and understanding about Big Data Technology, Hadoop Ecosystem and various tools related to it. The students will learn about the HDFS File System, Map Reduce Framework, Analysing data using Hbase and Hive along with the Integration of R with Hadoop.

Learning outcomes Upon successful completion of this module, students should be able to: • Understand the fundamentals of Big Data and its Applications in various Domains. • Conceptualize and Incorporate the Technologies behind Big Data. • Understand HDFS File Structure, Map Reduce Framework, the architectures related to them and to use them to solve complex problems. • Integrate R with Hadoop and solve analytical problems. • Understand and Use Hive/Hbase shell pertaining to relational data handling under Hadoop.

UNIT I Introduction to Big Data What Is Big Data? History of Data Management, Evolution of Big Data, Structuring of Big Data, Elements of Big Data, Application of Big Data in the Business Context, Careers in Big Data. Business Applications of Big Data: The Significance of Social Network Data, Financial Fraud and Big Data, Fraud Detection in Insurance, Use of Big Data in the Retail Industry.

UNIT II

Technologies for Handling Big Data Distributed and Parallel Computing for Big Data, Understanding Hadoop, Cloud Computing, Grid Computing and In-Memory Technology for Big Data. VMWare Installation of Hadoop, Linux and its Shell Commands, Different Hadoop Distributions and their advantages, Hortonworks, Cloudera, MapR.

UNIT III Understanding the Hadoop Ecosystem The Hadoop Ecosystem, Storing Data with HDFS, Design of HDFS, HDFS Concepts, Command Line Interface to HDFS, Hadoop File Systems, Java Interface to Hadoop, Anatomy of a file read, Anatomy of a file write, Replica placement and Coherency Model. Parallel Copying with distcp, keeping an HDFS Cluster Balanced.

Unit IV Map Reduce Fundamentals Origins of Map Reduce, How Map Reduce Works, Optimization Techniques for Map Reduce Jobs, Applications of Map Reduce, Java Map Reduce classes (new API), Data flow, combiner functions, running a distributed Map Reduce Job. Configuration API, setting up the development environment, Managing Configuration.

Unit V Integrating R with Hadoop, Understanding Hive & Hbase Understanding R-Hadoop, Integration Procedure, Packages needed for R under Hadoop Ecosystem, Text Mining for Deriving Useful Information using R within Hadoop, Introduction to Hive & Hbase, Hive and Hbase Architecture, Understanding Queries, Mining Big Data with Hive & Hbase.

References 1. Arshdeep Bahga, 2016, Big Data Science & Analytics: A Hands-On Approach, VPT. 2. Tom White, 2012, Hadoop: The Definitive Guide, O’Reilly. 3. Adam Shook and Donald Miner, 2012, Map Reduce Design Patterns: Building Effective Algorithms and Analytics for Hadoop and Other Systems, O’Reilly. 4. Dean Wampler, Edward Capriolo & Jason Rutherglen, 2012, Programming Hive, O’Reilly. 5. Lars George, 2011, HBase - The Definitive Guide: Random Access to Your Planet- Size Data, O’Reilly.

Natural Language Processing

Module Overview The following module aims to provide an exposure to students based on Natural Language Processing Techniques, Algorithms and Analytics based on Textual Data. The module comprises of NLP basics, Feature Extraction, Relationship Extraction, Text Categorization, Clustering and Topic Modelling Algorithms and Practices.

Learning Objectives The course introduces the concepts of Text Analytics, Unstructured Information Analysis for better decision making by deriving valuable insights. The course will help the students understand the roots behind Text Mining which evolved from Machine Learning, Natural Language Processing and Statistics. Upon completion, students are expected to be able to describe basic concepts and methods of Text Mining, Information Extraction, Text Classification and Clustering, Topic Modelling.

Learning Outcomes After the successful completion of this module, students will be able to: • Understand approaches to Syntax and Semantics in NLP. • Understand various methods for Statistical approaches to Machine Translation. • Build Models which extract information from Textual Unstructured Data. • Understand and implement Topic Modelling and Probabilistic Models for Information Extraction. • Implement and deploy programs based on Relationship Extraction, POS Tagging and Clustering Algorithms based on NLP.

Unit I

Introduction to Text Mining Basics of Text Mining, Natural Language Content Analysis, Core Text Mining Operations, Associations, Using Background Knowledge for Text Mining, Domain Ontologies, Domain Lexicons. Text Mining Pre-processing Techniques, Task Oriented Approaches, NLP Tasks, Tokenization, Part-of-Speech Tagging, Syntactical Parsing and Shallow Parsing.

Unit II Extracting Features, Relations from Text Finding Implicit Features, Finding Opinion Phrases and their Polarity, Context-Specific Word Semantic Orientation, Analysis of Word and Document Frequency, tf-idf, Zipf’s Law, bind tf_idf Function, Subsequence Kernels for Relation Extraction, Capturing Relation Patterns with a String Kernel.

Unit III

Text Categorization and Clustering Applications of Text Categorization, Document Representation, Knowledge Engineering Approach to Text Categorization, Machine Learning Approach to Text Categorization, Evaluation of Text Classifiers. Clustering Tasks in Text Analysis, Clustering Algorithms and Clustering of Textual Data.

Unit IV Relationships between Words Tokenizing by N-gram, Counting and Filtering N-gram, Analysing Bigrams to provide Context in Sentiment Analysis, visualizing a Network of Bigrams using ggraph, Counting and Correlating Pairs of Words with the widyr Package, Counting and Correlating among Sections, Examining Pairwise Correlation.

Unit V Topic Modelling and Probabilistic Models for Information Extraction Latent Dirichlet Allocation, Word Topic Probabilities, Per-Document Classification, By-words Assignments, Alternative LDA Implementations. Hidden Markov models, Stochastic Context Free Grammar, Conditional Random fields, Parallel Learning Algorithms.

References 1. Julia Silge, David Robinson, 2018, Text Mining with R-A Tidy Approach, O’Reilly 2. Matthew L. Jockers, 2014, Text Analysis with R for Students of Literature, Springer. 3. James Pustejovsky, Amber Stubbs, 2012, Natural Language Annotation for Machine Learning, O’Reilly. 4. Steve R. Poteet, 2007, Natural Language Processing with Text Mining, Springer. 5. James Sanger, Ronen Feldman, 2002, The Text Mining Handbook: Advanced Approaches in Analysing Unstructured Data, Cambridge.

Machine Learning and Artificial Intelligence

Module Overview This module comprises of conceptual, statistical and Machine Learning algorithms. It covers all the necessary models pertaining to Machine Learning such as Regression, Decision Trees, Support Vectors, Clustering, Association Analysis and Dimensionality Reduction.

Learning Objectives After this course students will gain critical knowledge and understanding about major Data Mining procedures like Decision Tree, Cluster Analysis, Neural Networks, Support Vector Machine, Bayesian Networks and Machine Learning fundamentals. Students will be able to apply and practice this gained knowledge in variety of Business Scenarios.

Learning Outcomes Upon successful completion of this module, students should be able to: • Understand and employ a wide variety of Statistical and Machine Learning Algorithms. • Identify the characteristics of Datasets, Problem Statement and develop Machine Learning programs with reference to known Computing Techniques. • Understand the Model Performance Evaluation and select the best one based on the solution. • Implement Machine Learning techniques and the Programming Framework to obtain acceptable decisions for the Real-World problems.

Unit I Classification and Regression Tree Classification & Regression, working of a Decision Tree, Attribute Selection Measures, Information Gain, Gain Ratio, Gini Index, Building Decision Trees, CART, C5.0, and CHAID Trees, Prediction by Decision Tree, Advantages and Disadvantages of Decision Trees, Model Overfitting, Building Decision Trees in R.

Unit II Clustering Cluster Analysis versus Factor Analysis, Overview of Basic Clustering Methods, Agglomerative Hierarchical Clustering, Within-Group Linkage, Nearest Neighbour or Single Linkage, Furthest Neighbour or Complete Linkage, Centroid Clustering, Ward’s Method, K- Means Algorithm, Dendrogram, Profiling of Cluster, Cluster Evaluation.

Unit III Support Vector Machine Decision Boundaries for Support Vector Machine, Maximum Margin Hyperplanes, Structural Risk Minimization, Linear SVM-Separable Case, Linear SVM-Non-Separable Case, Kernel Function, Kernel Trick, Kernel Hilbert Space, Model Evaluation.

Unit IV Market Basket Analysis Market Basket Analysis and Association Analysis, Market Basket Data, Stores, Customers, Orders, Items, Order Characteristics, Product Popularity, Tracking Marketing Interventions, Association Rules, Support, Confidence, Lift, Chi-Square Value, Sequential Pattern Analysis.

Unit V Introduction to Artificial Intelligence Current Trends in AI, Intelligent Agents, Environments, Problem Solving Agents, Searching Techniques, Knowledge and Reasoning in AI, Forms of Learning, Structure of a Neural Network, Analogy with Biological Neural Network, Activation Functions, Gradient Descent, Model Accuracy.

References 1. Kevin Knight, Elaine Rich, B.Nair, 2017, Artificial Intelligence, McGraw. 2. Han, Jiawei and Kamber, Micheline, 2012, Data Mining: Concepts and Techniques, Morgan Kaufman Publishers. 3. AnandRajaraman, 2011, Mining of Massive Datasets, Cambridge University Press. 4. Mitchell, 2013, Machine Learning, McGraw Hill. 5. Stuart Russell, Peter Norvig, 2004, Artificial Intelligence – A Modern Approach, Pearson.

Deep Learning

Module Overview This module forms an introduction as well an in-depth study in the field of Deep Learning. The module enlists all the necessary and fundamental topics needed to learn Deep Learning and its applications. Starting from the basics of Deep Neural Networks, the module progresses through the Regularization, Optimization, Convolutional Neural Networks, Sequence Analysis and Applications in Real World Scenarios. Learning objectives This course will help students gain knowledge and understanding about Deep learning, its principles and approaches. Students will be able to understand the concepts and use them to solve problems which are almost impossible to handle via Traditional Approaches. Learning outcomes Upon successful completion of this module, students should be able to: • Understand, describe and program Deep Learning algorithms and approaches. • Identify the Problems sets where Deep learning can be applied and used. • Design and implement appropriate Deep Learning solutions. • Understand and Program different types of Deep Neural Networks like CNN, RNN, etc. • Implement Deep Learning Algorithms corresponding to other Applications such as Natural Language Processing, Speech Recognition, etc. UNIT I

Fundamentals of Deep Networks

Defining Deep Learning, Common Architectural Principles of Deep Networks, Parameters, Layers, Activation Functions, Loss Functions, Optimization Algorithms, Hyperparameters, and Frameworks to Deploy Deep learning Networks, Building Blocks of Deep Networks, Restricted Boltzmann Machines, Autoencoders, and Variational Autoencoders.

UNIT II

Regularization & Optimization for Training Deep Models

Parameter Norm Penalties, Norm Penalties as Constrained Optimization, Regularization and Under-Constrained Problems, Dataset Augmentation, Multitask Learning, Parameter Tying and Sharing, Sparse Representations, Ensemble Methods and Challenges in Neural Network Optimization, Basic Algorithms and Algorithms with Adaptive Learning Rates, Approximate Second Order, Optimization Strategies and Meta Algorithms.

UNIT III

Convolutional Neural Networks

Convolution Operation, Pooling, Shortcomings of Feature Selection, Filters and Feature Maps, Convolutional layer, Architecture of CNN, Working with MNIST dataset, Image Pre- processing Pipelines, Accelerating Training with Batch Normalization, Building a CNN, The Neuro-Scientific Basis for CNN.

UNIT IV

Sequence Analysis

Analysing Variable-Length Inputs, tackling seq2seq with Neural N-Grams, Implementing Part- of-Speech Tagger, Unfolding Computation Graphs, Recurrent Neural Networks, Bidirectional- RNN, Recursive Neural Network, Echo-State Networks, Long Short-Term Memory, Tensorflow Primitives for RNN models, Implementing Sentiment Analysis Model.

UNIT V

Applications of Deep Learning

Deep Reinforcement Learning, Markov Decision Processes, Versus Exploit, Policy versus Value learning, Open AI Gym, Q-Learning and Deep Q-Networks, Applications of Deep Learning in various disciplines such as Computer Vision, Speech Recognition, NLP and others.

References

1. Josh Patterson and Adam Gibson. (2018). Deep Learning: A Practitioner’s Approach. O’Reilly. 2. Francois Chollet. (2018). Deep Learning with Python. O’Reilly. 3. Sandro Skansi. (2018). Introduction to Deep Learning: From Logical Calculus to Artificial Intelligence. Springer. 4. Antonio Gulli and Sujit Pal. (2017). Deep Learning with Keras. Packt. 5. Nikhil Buduma. (2017). Fundamentals of Deep Learning. O’Reilly. 6. Ian GoodFellow, Yoshua Bengio and Aaron Courville. (2016). Deep Learning. MIT Press.

Computer Vision

Module Overview In this subject the students will learn basic principles of Image Formation, Image Processing Algorithms, Algorithms for 3D Reconstruction and Recognition from Single and Multiple Images. This subject emphasizes on core vision tasks of Scene understanding and Recognition. Learning objectives This course aims to introduce students to the field of Computer Vision and Image Processing Techniques. The curriculum comprises of fundamentals of Image Processing, Formation Models, Model Estimation Techniques, Shape Representation and Segmentation along with Applications of Computer Vision. Learning outcomes Upon successful completion of this module, students should be able to: • To implement fundamental image processing techniques required for computer vision. • Understand image formation process. • Perform shape analysis, extract features and generate 3D Models from Images. • Develop applications using computer vision techniques. • Understand, Implement video processing, motion capturing and 3D Vision. UNIT I

Introduction

Image Processing, Computer Vision and Computer Graphics, Levels in Computer Vision, Applications, Document Image Analysis, Biometrics, Object Recognition, Tracking, Medical Image Analysis, Content-Based Image Retrieval, Video Data Processing.

UNIT II

Image Formation Models

Monocular Imaging System, Radiosity, Radiance, Irradiance, Colour, Orthographic and Perspective Projection, Camera Model and Camera Calibration, Binocular Imaging Systems, Multiple Views Geometry, Structure Determination, Photometric Stereo, Depth from Defocus, Construction of 3D Model from Images. UNIT III

Image Processing and Model Estimation

Image Representation and Processing, Continuous and Discrete Processing Methods, Edge Detection, Regularization Theory, Optical Computation, Motion Estimation Techniques, Structure from Motion, Stereo Vision.

UNIT IV

Shape Representation and Segmentation

Contour Based Representation, Region Based Representation, Deformable Curves and Surfaces, Snakes and Active Contours, Level Set Representations, Fourier and Wavelet Descriptors, Medial Representations, Multi Resolution Analysis.

UNIT V

Applications of Computer Vision

Object Detection and Recognition, Face Detection, Face Recognition, Eigen Faces, Active Appearance and 3D Shape Models of Faces, Surveillance, Foreground and Background Separation, Particle Filters, Chamfer Matching, Tracking and Occlusion, Combining Views from Multiple Cameras.

References

1. D. Forsyth and J. Ponce. (2018). Computer Vision – A Modern Approach. Prentice Hall. 2. E. Trucco. (2017). Introductory Techniques for 3D Computer Vision. Prentice Hall. 3. R.C. Gonazlez. (2017). Digital Image Processing. Addison Wesley. 4. Mark Nixon (2016). Feature Extraction and Image Processing for Computer Vision. Academic Press. 5. Simon J. D. Prince (2015). Computer Vision – Models, Learning and Inference. Cambridge. 6. Richard Szeliski (2013). Computer Vision – Algorithms and Applications. Springer.