• Course Introduction

        • Time: 51 hours
        • Free Certificate
        This course is a continuation of CS101: Introduction to Computer Science I. It will introduce you to a number of more advanced Computer Science topics, laying a strong foundation for future study and achievement in the discipline. We will begin with a comparison between Java, the programming language used in the previous course, and C++, another popular, industry-standard programming language. We will then discuss the fundamental building blocks of Object-Oriented Programming, reviewing what we have already learned, while familiarizing ourselves with more advanced programming concepts. The remaining course units will be devoted to various topics, including the Standard Template Library, Containers, Exceptions, Recursion, Searching and Sorting, and generic programming. By the end of the class, you will have a solid understanding of Java and C++ programming, as well as a familiarity with the major issues that programmers routinely address in a professional setting.

        First, read the course syllabus. Then, enroll in the course by clicking "Enroll me in this course". Click Unit 1 to read its introduction and learning outcomes. You will then see the learning materials and instructions on how to use them.

      • Unit 1: The Building Blocks of Object-Oriented Programming

        Being familiar with both C++ and Java, you are ready to explore more advanced topics in Object-Oriented (OO) Programming. We will begin by discussing the motivation behind programming with objects, learning the essential characteristics of OO Programming languages and identifying the advantages and disadvantages of various major programming frameworks. The unit will also provide a general history of OO Programming and review major characteristics of OO Programming. By the end of this unit, you will be able to discuss different programming paradigms and identify the main properties of OO Programming.

        Completing this unit should take you approximately 12 hours.


      • Unit 2: C++ and Java Differences

        To understand a language, it helps to know what motivated its development, its principle concepts (which we call its "programming paradigm"), and how it relates to other languages. If you have completed CS101: Introduction to Computer Science I and the first unit of this course, you should have a strong grasp of Java and C++, their uses, and a basic understanding of object-oriented programming. In this unit, we will outline the similarities and differences between these two languages, noting how each is used in the industry. We will also take an in-depth look at the basic building blocks of each language in order to draw a distinction between the two and further acquaint you with both languages. While there are many syntactual similarities between Java and C++, they are not necessarily translated one to another easily. As you study, pay close attention to the distinctions between the two.

        Completing this unit should take you approximately 6 hours.

      • Unit 3: C++ Standard Template Library

        Nearly every C++ programmer uses the C++ Standard Template Library (STL), a powerful and highly useful library of generic-typed data structures and algorithms. In this unit, we will learn how and why the STL was originally developed. The unit will also introduce you to the history and basics of templates and generic programming before presenting the structures (Containers, Iterators, and Functors) and algorithms that the Standard Template Library contains. By the end of this unit, you will be familiar with the STL, its uses, and its structures and algorithms.

        Completing this unit should take you approximately 7 hours.

      • Unit 4: Java Container Library

        Java's Container Library is comparable to C++ Standard Template Library. Both provide a set of data containers and associated operations. As you build systems of increasing complexity, you will notice that you use certain data structures and operations on the data and structures over and over again. Experience over decades of computer science has identified a common set. Those have been collected into a group of classes of generic data type. This group is the Standard Template Library in C++ and the Container Library in Java. What we have is a set of trusted modules that have been tested and tested, over and over again, by many people engaging with numerous applications. They are also optimized for speed. There is no reason to write these from scratch. Having already examined the C++ Standard Template Library, we now take a deep look at the Java Container Library.

        Completing this unit should take you approximately 5 hours.

      • Unit 5: Exceptions

        A programmer must ensure the correct execution of their code, regardless of the situation the code encounters. In other words, if a run-time error occurs, the program should present the user with relevant information and then quit gracefully. The built-in C++ and Java structures used to accomplish this goal are known as exceptions. This unit will introduce you to the concept of throwing and catching exceptions when something goes wrong while your software is running, explain how exceptions are used in C++ and Java, and teach you how to handle the errors that exceptions catch. By the end of this unit, you will be able to write programs that perform gracefully whenever run-time errors occur.

        Completing this unit should take you approximately 6 hours.

      • Unit 6: Recursion

        Often considered one of the more conceptually difficult concepts within the field of computer science, recursion – the act of a function invoking itself – is a powerful and relevant tool. In this unit, we will take an in-depth look at recursion, learning how to develop recursive processes, the role that recursion plays in common data structures, and what happens inside the computer when a function is invoked recursively. By the end of this unit, you will recognize situations that require recursion and be able to apply it appropriately.

        Recursion can be a difficult concept for students new to computer science. If you feel anxious, your best best is to use examples. In this unit, we will use recursion to write a program to express factorials (N!). This straightforward example will give you an overview of all the major components of recursion. Many good examples are also illustrated through the unit, particularly in the sections that discuss the Towers of Hanoi and the Merge Sort.

        Completing this unit should take you approximately 7 hours.

      • Unit 7: Searching and Sorting

        As a computer programmer, you need to know how to search and sort data. This will require you to leverage what you have learned in a number of different computer science areas, drawing from your earlier study of data structures and algorithms. In this unit, we will identify the importance of searching and sorting, learn a number of popular searching and sorting algorithms, and determine how to analyze and appropriately apply them. By the end of this unit, you will recognize instances in which you need a searching or sorting algorithm and be able to apply one efficiently.

        Completing this unit should take you approximately 8 hours.

      • Course Feedback Survey

        Please take a few minutes to give us feedback about this course. We appreciate your feedback, whether you completed the whole course or even just a few resources. Your feedback will help us make our courses better, and we use your feedback each time we make updates to our courses.

        If you come across any urgent problems, email contact@saylor.org or post in our discussion forum.

      • Certificate Final Exam

        Take this exam if you want to earn a free Course Completion Certificate.

        To receive a free Course Completion Certificate, you will need to earn a grade of 70% or higher on this final exam. Your grade for the exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you can take it again as many times as you want, with a 7-day waiting period between each attempt.

        Once you pass this final exam, you will be awarded a free Course Completion Certificate.

      • Saylor Direct Credit

        Take this exam if you want to earn college credit for this course. This course is eligible for college credit through Saylor Academy's Saylor Direct Credit Program.

        The Saylor Direct Credit Final Exam requires a proctor and a proctoring fee of $25. To pass this course and earn a Proctor-Verified Course Certificate and official transcript, you will need to earn a grade of 70% or higher on the Saylor Direct Credit Final Exam. Your grade for this exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you can take it again a maximum of 3 times, with a 14-day waiting period between each attempt.

        Once you pass this final exam, you will be awarded a Credit-Recommended Course Completion Certificate and an official transcript.