Welcome to Computer Science II. After making it this far, you should be aware of the main craft of this discipline: computer programming. Unlike the labs for the other sciences, what you will be doing here does not have an established procedure for yielding the correct solution.

When creating software, it is incorrect to think that there is only one correct solution. Do not ask "What do I do?" when faced with a difficult assignment, first ask "What can I do?" then you will be on your way. Starting from the formless grains of binary, computer programmers have shaped castles of concepts and abstractions for current and future generations of users.

What we are doing is learning these concepts that have been passed down to us and applying them towards the production of software. These concepts are expressed and revealed within various programming languages. The concepts themselves can be containers housing a homogenous yet diverse set of sub-concepts.

As a continuation of Computer Science I, the main programming language we will use is C++ and the most general concept we will be utilizing is object-oriented programming. Object-oriented programming, as a programming paradigm, is manifested through the structure of the C++ Standard Library: a collection of C++ code that we can incoporate into our own C++ code.

There are other programming languages and paradigms besides C++ and object-oriented programming. During your time of solitude, you may explore and experiment to find your best tools and methods for creating software. But if you are to have hope in uniting yourself with others for a software project, you should be familiar with the most popular languages and methods.