You are on page 1of 5

Introduction to Machine Learning

ABOUT THE COURSE


This course provides a concise introduction to the fundamental concepts in machine learning
and popular machine learning algorithms. We will cover the standard and most popular
supervised learning algorithms including linear regression, logistic regression, decision trees, k-
nearest neighbour, an introduction to Bayesian learning and the naïve Bayes algorithm, support
vector machines and kernels and neural networks with an introduction to Deep Learning. We
will also cover the basic clustering algorithms. Feature reduction methods will also be
discussed. We will introduce the basics of computational learning theory. In the course we will
discuss various issues related to the application of machine learning algorithms. We will discuss
hypothesis space, overfitting, bias and variance, tradeoffs between representational power and
learnability, evaluation strategies and cross-validation. The course will be accompanied by
hands-on problem solving with programming in Python and some tutorial sessions.

Prof. Sudeshna Sarkar


Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
https://onlinecourses.nptel.ac.in/noc16_cs18/preview
Complex Network: Theory and Application
ABOUT THE COURSE
Study of the models and behaviors of networked systems. Empirical studies of social, biological,
technological and information networks. Exploring the concepts of small world effect, degree
distribution, clustering, network correlations, node centrality, and community structure of
networks. This will be followed by detailed case study of citation networks. Types of network:
Social networks, Information networks, Technological networks, Biological networks, Citation
Networks. Properties of network: Small world effect, transitivity and clustering, degree
distribution, scale free networks, maximum degree; mixing patterns; degree correlations;
community structures; node centrality.

Prof. Animesh Mukherjee


Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
https://onlinecourses.nptel.ac.in/noc16_cs20
Object-Oriented Analysis and Design
ABOUT THE COURSE
The complexity of software systems is ever on the rise – more complex problem domains being
attempted (complex embedded systems), ever growing man-power engaged in increasingly
intricate development processes to turnaround in shorter and shorter time, possible flexibility of
software being stretched to the limit with XaaS, platforms getting challenging with widely
expanding distribution, cloud computation etc. Hence the analysis and design of software
require well-organized and structured approaches to manage the challenges of complexity.

Over the past two decades methods of Object-Oriented Analysis, Design and Programming
have proved to be effective solutions in handling the inherent complexity of software design,
development, testing and maintenance. Concepts of OOAD like Abstraction, Encapsulation,
Modularity, Hierarchy, Object, State, Behavior, Identity, Class, Operation, Interface, Inheritance,
Association, Aggregation, Decomposition, Use-case, etc. have become the lingua franca for the
software developers; ubiquitous notation of UML has firmly established itself as the vehicular
language for design; and many object-based as well as object-oriented languages have become
available and have been widely adopted1 – Java (21%), C++ (6%), C# (4%), VB / VB.NET
(4%), Python (3%), Perl (2.5%), Ruby (2.5%), Objective-C (2%), Delphi/Object Pascal (2%), D
(1%) – to name a few. Even out of C (14%) developers, a large section today adheres to OOAD
/ OOP principles.

The present course introduces OOAD grounds up starting with breaking down the root cause of
inherent software complexity. After an in-depth exposure to Object Models, Classes and their
interactions, the course takes a thorough tour of the diagrams of UML 2.0. Several systems
examples help students understand the concept and tutorials offer quick practice. The course
ends with a brief discourse on OOP in C++.

While this course can be followed independently (with some programming background), it would
help in practicing OOP in C++ or Java. Hence this course is advised in conjunction with C++ /
Java.

Prof. Partha Pratim Das


Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
https://onlinecourses.nptel.ac.in/noc16_cs19
Programming in C++
ABOUT THE COURSE
There has been a continual debate on which programming language/s to learn, to use. As the
latest TIOBE Index for April 2016 indicates – Java (21%), C (14%), C++ (6%), C#(4%), and
Python (3%) together control nearly half the programming community. Given this, it is still
important to learn C and C++ because of the efficiency they offer. While we appreciate that Java
is good for applications, for graphics; and we acknowledge that Python is appropriate for
portable software, engineering problem solving, and graphics; it is worth bearing in mind that the
JVM and Python interpreter are indeed written in C++, making C++ the father of all languages
today.
Well, hence, C++ is the systems language. Why should I learn it if my primary focus is on
applications? This is where the recent updates of C++, namely, C++11, C++14, and C++17 offer
excellent depths and flexibility for C++ that no language can match. These extensions attempt
to alleviate some of the long-standing shortcomings for C++ including porous resource
management, error-prone pointer handling, expression semantics and better readability.
The present course builds up on the knowledge of C programming and basic data structure
(array, list, stack, queue etc.) to create a strong familiarity with C++98 and C++03. Besides the
constructs, syntax and semantics of C++ (over C), we also focus on various idioms of C++ and
attempt to go to depth with every C++ feature justifying and illustrating them with several
examples and assignment problems. On the way, we illustrate various OOP concepts.
While this course can be understood independently (after a course in C programming), it would
help in developing understanding in OOP. Hence this course is advised in conjunction with
OOP.

Prof. Partha Pratim Das


Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
https://onlinecourses.nptel.ac.in/noc16_cs17
Software Testing
ABOUT THE COURSE
Over the years program several testing techniques have developed and tools have become
available. Also, testing has been acknowledged as the primary technique for ensuring software
reliability. The course would provide a brief introduction to test process and techniques available
for black box and white box test case design. Integration, system and regression testing would
also be discussed. A few of the test tools would be discussed and the participants would be
encouraged to use.

Prof. Rajib Mall


Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
https://onlinecourses.nptel.ac.in/noc16_cs16

You might also like