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.
Intended Audience
Core
Course
UG/PG Course
BCA, MCA, B.Tech., M.Tech.
Pre-requisites
1.
Basic Knowledge of Programming & Data Structure
2. C Programming
3. Attending a course on OOP with this course will help
Industry Support - List of Companies/Industry that will Recognize/value this online course
Programming in C++ is so fundamental that all companies dealing with systems as well as application development (including web, IoT, embedded systems) have a need for the same. These include – Microsoft, Samsung, Xerox, Yahoo, Google, IBM, TCS, Infosys, Amazon, Flipkart, etc.
Course Instructor
Dr. Partha Pratim Das received his BTech, MTech and PhD degrees in 1984, 1985 and 1988 respectively from IIT Kharagpur. He served as a faculty in Department of Computer Science and Engineering, IIT Kharagpur from 1988 to 1998. In 1998, he joined Alumnus Software Ltd as a Business Development Manager. From 2001 to 2011, he worked for Interra Systems, Inc as a Senior Director and headed its Kolkata Center. In 2011, he joined back to Department of Computer Science and Engineering, IIT Kharagpur as Professor. Dr. Das has also served as a Visiting Professor with Institute of Radio Physics and Electronics, Calcutta University from 2003 to 2013.
Course layout
Week 1: Programming in C++ is Fun : Build and execute a C program in C++, Write equivalent programs in C++
Week 2: C++ as Better C : Procedural Extensions of C
Week 3: Overview of OOP in C++ : Classes and basic Object-Oriented features (encapsulation)
Week 4: Overview of OOP in C++ : More OO features, overloading, namespace and using struct and union
Week 5: Inheritance : Generalization / Specialization of Object Modeling in C++
Week 6: Polymorphism : Static and Dynamic Binding
Week 7: Type Casting & Exceptions : C++ cast operators; C++ Exceptions & standard exception classes
Week 8: Templates & STL – Function and Class templates and using STL like containers, algorithms
suggested reading
Text Books / Basic
Material
1.
The C++ Programming Language by Bjarne Stroustrup, 2013. Or, Programming:
Principles and Practice Using C++ by Bjarne Stroustrup, 2014 – These books will
be followed in the course
2. The C Programming Language (Ansi C Version) by Brian W. Kernighan and Dennis
M. Ritchie, 1990. Or, The C Programming Language by Brian W. Kernighan and
Dennis M. Ritchie, 2015
3. C++ reference (C++98 and C++03). http://en.cppreference.com/w/
4. Presentations used in the Course
Reference (Advanced) Material
1.
Effective C++: 50 Specific Ways to Improve Your Programs and Design by Scott
Meyers, 1997. Or, Effective C++: 55 Specific Ways to Improve Your Programs and
Designs (Third Edition) by Scott Meyers, 2005
2. More Effective C++ by Scott Meyers, 2002
3. Modern C++ Design by Andrei Alexandrescu, 2004
4. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
by Herb Sutter, 1999
5. More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and
Solutions by Herb Sutter, 2001
6. C++ Templates: The Complete Guide by David Vandevoorde and Nicolai M.
Josuttis, 2002
7. The C++ Standard Library: A Tutorial and Reference by Nicolai M. Josuttis,
2012
8. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template
Library
More details about the course
Course url: https://onlinecourses.nptel.ac.in/noc16_cs01
Course duration : 08 weeks
Start date and end date of course: 20 February 2017 – 14 April 2017
Dates of exams : 23 April , 2017
Time of exam : shift 1: 9am-12noon; shift 2: 2pm-5pm
Final List of exam cities will be available in exam registration form.
Exam registration url - Will be announced shortly
Exam Fee: The online registration form has to be filled and the
certification exam fee of approximately Rs
1000(non-Programming)/1250(Programming) needs to be paid.
Certificate
E-Certificate will be given to those who register and write the exam. Certificate will have your name, photograph and the score in the final exam. It will have the logos of NPTEL and IIT Kharagpur. It will be e-verifiable at nptel.ac.in/noc