Second, most of you studied the C++ language last semester, but didn't get to some of its most important capabilities, such as classes. You'll learn some additional language features this semester, but the emphasis will gradually shift away from language syntax towards design principles that work in any programming language.
Third, we undertake algorithms and data structures as a topic of study in themselves. An algorithm is a method of solving a computational problem, typically embodied in a computer program, but the same algorithm can form the basis of different programs in different languages. A data structure is a way of organizing information (e.g. an array, structure, list, or tree) so that we can find the parts we want easily and efficiently. Object-oriented programming is an approach to programming that has proven extremely useful in writing and modifying large, complex programs; Java, C++, some versions of Scheme, and most other modern programming languages specifically support object-oriented programming.
For more information, see the syllabus.