 Welcome to the course on computer programming. As you are aware, this is second part of a two part course and therefore, named as CS 101.2x. I would like to mention that this course is primarily based on the introductory programming course taught at IIT Bombay which is called CS 101. Our full course here covers both the procedural programming and also introduces the concepts of object oriented programming. In the first part of this course CS 101.1x, we have covered major chunk of procedural programming aspects and therefore, the prerequisites for this second part are apart from knowledge of high school mathematics and exposure to pre-calculus, the complete understanding of the basic programming concepts as were covered in CS 101.1x. Just to help you, we are listing here the topics which were covered in the first part. We begin with the notion of algorithms. We studied the elements of C, C++ programming languages there. In particular, we looked at the basic data types, sequential and conditional execution of programming statements, iterative solutions. Then we looked at the data structures such as arrays and matrices and studied their applications. We studied functions and how to use functions as part of larger programming problem solutions. We spent a week on understanding sorting and searching. We studied string processing as is done in classical C style, but using C++ programming languages. We also studied pointers and structures and introduced file processing. Objectives of this course is to build upon the knowledge gain of basic programming concepts and skills in the first part. We would like to learn the basics of object oriented programming which will cover the concepts of objects, classes and methods. We will discuss notion of inheritance and polymorphism and most importantly, we will discuss the large functionality available in the standard template library. Throughout the course, we will be using this object oriented programming approach to solve computational problems. The topics which have been listed to be covered in this course are to begin with a recapitulation of pointers, structures and file processing followed by introduction to object oriented programming concepts. Once we study the topic of classes and methods, we will then discuss inheritance, polymorphism and finally, the standard template library of C++. As mentioned earlier, each topic will use several illustrative problems to emphasize how exactly those concepts are implemented in writing programs for solving problems. Let me now explain how we propose to organize this course. There will be 7 topics. The first topic will contain practice problems for review of basic concepts. The next topic will have a review of pointers and structures and the third topic will have a review of file processing. After this review, we go to the fourth topic which will contain introduction to object oriented programming. The fifth topic will be on constructors, operator overloading and members. The sixth topic will be on inheritance and polymorphism and the seventh topic will explain the functionality and use of C++ standard template library or STL. The resources that you shall be using for this course are listed on the course page. We will continue to use the code blocks integrated development environment that we had used in the first part of this course CS11.1x. Of course, the participants are free to use any other C++ environment of their choice. An important aspect of the resource that will be available to all of you will be an auto grader. We realize that conducting quizzes might permit your basic concepts to be assessed, but it does not permit you to test your programming competence for which it is necessary for you to write full programs and get those programs evaluated. Our auto grader will collect program files submitted by the participants and it will evaluate the submitted programs automatically and will return the score. Currently, the auto grader works in a batch process, so the results may be available after a delay perhaps within the next two days. Substantial reference material will be cited as the course progresses. Mostly, it will be from open source, but there will be examples and problems from one of the reference books that is listed for the course. As I mentioned, the auto grader evaluates submitted programs. It will evaluate the correctness of the solution for the given test case and also whether the program works correctly with other test cases. This is because a program is qualitatively judged not just on the basis of how well it does, whatever is minimally stipulated, but how well it handles situations in real life where the data might exceed the specified bounds, wrong data might be given, etc. For the auto grader exercises every week, a programming problem will be given. At least one test case will be provided. There will be pre-formatted program files which are essentially text files or dot cpp files. There will be code fragments very well laid out and identified and in those places you have to write your code in designated segments. You will see an example later. Each segment is evaluated independently for correctness by our auto grader. So, for example, if there are four segments and you make a mistake in the very first segment, ordinarily the entire program will not work correctly at all. However, if the other three segments have been written correctly, then our auto grader will be able to give you marks for the correct segments that you have written. The course grading will comprise of several course assessments. These will include a total of four quizzes out of which marks for the three best scores will be considered that is the one quiz with the lowest score will be dropped. The grading will also have an assessment of four programming assignments. Again, the one with the lowest score will be dropped. There will be one final examination. The grading policy and schedule are notified on the course page. In summary, we have seen the outline of the course and the weekly coverage which was described in the slides earlier and auto grader has been introduced. Participants will be submitting C++ programs which will be automatically graded and they will be able to see their evaluation. The course evaluation approach has been outlined and you can see the details of the schedule and the details of grading policy on the course page. Welcome to CS101.2x. We will do some very exciting programming stuff in this course. Thank you very much.