There has been a continual debate on which programming language/s to learn, to use. As the latest TIOBE Index for May 2019 indicates – Java (16%), C (14%), C++ (8%), Python (8%), and C# (4%) 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 (especially ML), and graphics; it is worth bearing in mind that the JVM (Java Virtual Machine) and PVM (Python Virtual Machine – Python interpreter) are indeed written in C++, making C++ the father of all languages today.
Well, C++ is the systems language. It is multi-paradigm – procedural, object-oriented, functional, and generic. So, why should I learn it if my primary focus is on applications? The answer lies in the recent updates of C++, namely, C++11, C++14, C++17, and upcoming C++20 that offer excellent depths and flexibility for C++ that no language can match. These extensions attempt to alleviate many of the long-standing shortcomings of 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, binary tree 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 OOAD (Object-Oriented Analysis and Design) and OOP (Object-Oriented Programming) 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 OOAD.
End Note: If you wonder how C++ stands against Java, note the relative movement of the languages since 2016 (when these course videos were recorded) till 2019. In 2016, Java stood at 21% and C/C++ combine at 20%. In 2019, Java has slipped to 16% and C/C++ combine has climbed to 22%. And Java is an application programming language while C++ is a systems language!
BCA, MCA, B.Tech., M.Tech.
Basic Knowledge of Programming & Data Structure
Attending a course on OOP / OOAD with this course will help
Programming in C++ is so fundamental that all companies dealing with systems as well as application development (including web, IoT, embedded systems, machine learning) have a need for the same. These include – Microsoft, Samsung, Xerox, Yahoo, Google, IBM, TCS, Infosys, Amazon, Flipkart, etc.
ABOUT THE INSTRUCTOR
Prof. 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.
Dr. Das is currently the Head of Rajendra Mishra School of Engineering Entrepreneurship, the Professor-inCharge of the upcoming Research Park of IIT Kharagpur at Rajarhat, Kolkata, and the Joint Principal Investigator of National Digital Library of India project of MHRD.
Dr. Das has taught several courses in Computer Science including Software Engineering, Object-Oriented Systems, Programming and Data Structure, Compiler Design, Design and Analysis of Algorithms, Information System Design, Database Management Systems, Computational Geometry, Principles of Programming Languages, Embedded Systems, and Image Processing. Jointly with 2 others, he has also offered a course on Introduction to Design of Algorithms under the T10KT program of NME-ICT, MHRD (https://www.facebook.com/t10kt.algorithms/) to nearly 7000 teachers. Further, Dr. Das has been offering Programming in C++ and Object-Oriented Analysis and Design in NPTEL-NOC. Both courses are regularly attended by thousands of students.
Dr. Das has published over 40 technical papers in international journals in areas of Digital Geometry, Image Processing, Parallel Computing and Knowledge-based Systems. In 2013 he has co-authored a research monograph titled Digital Geometry in Image Processing (CRC Press). His current interests include Human-Computer Interactions, Computer Analysis of Indian Classical Dance, Object-Oriented Systems Analysis and Design, Software Engineering, Compiler Technology, and Technology Enabled Learning. Dr. Das is a member of Association of Computing Machinery (ACM), The Institute of Electrical and Electronics Engineers (IEEE), and Indian Unit for Pattern Recognition and Artificial Intelligence (IUPRAI).
1. Join the course
Learners may pay the applicable fees and enrol to a course on offer in the portal and get access to all of its contents including assignments. Validity of enrolment, which includes access to the videos and other learning material and attempting the assignments, will be mentioned on the course. Learner has to complete the assignments and get the minimum required marks to be eligible for the certification exam within this period.
COURSE ENROLMENT FEE: The Fee for Enrolment is Rs. 2000 + GST
2. Watch Videos+Submit Assignments
After enrolling, learners can watch lectures and learn and follow it up with attempting/answering the assignments given.
3. Get qualified to register for exams
A learner can earn a certificate in the self paced course only by appearing for the online remote proctored exam and to register for this, the learner should get minimum required marks in the assignments as given below:
CRITERIA TO GET A CERTIFICATE
Assignment score = Score more than 50% in at least 6/8 assignments.
Programming Assignment score = Score more than 50% in at least 20/30 assignments.
Exam score = 50% of the proctored certification exam score out of 100
Only the e-certificate will be made available. Hard copies will not be dispatched.”
4. Register for exams
The certification exam is conducted online with remote proctoring. Once a learner has become eligible to register for the certification exam, they can choose a slot convenient to them from what is available and pay the exam fee. Schedule of available slot dates/timings for these remote-proctored online examinations will be published and made available to the learners.
EXAM FEE: The remote proctoring exam is optional for a fee of Rs.1500 + GST. An additional fee of Rs.1500 will apply for a non-standard time slot.
5. Results and Certification
After the exam, based on the certification criteria of the course, results will be declared and learners will be notified of the same. A link to download the e-certificate will be shared with learners who pass the certification exam.
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