MCS-178: Introduction to Computer Science II

Overview

In this course, we will continue sampling the perspectives and methods of computer science. The first and most apparent difference from CS I is the change in notation for expressing algorithms, namely Java instead of Python. Although there will be some review of elementary matters in order to get you up to speed in Java, a major focus of the course will be object-oriented programming, and we will try to get there as soon as possible. Along the way, we will develop tools to analyze the efficiency of algorithms, methods for writing more efficient algorithms, and ways to write data structures. This course will involve much programming from many disciplines. We will also look “under the hood” at computers and learn to program in the language of a modern computer.

Textbooks

Our main textbook is Introduction to Programming In Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne. The textbook authors maintain a website for the book at http://introcs.cs.princeton.edu/java/home/.

We will also use selected sections of Concrete Abstractions: An Introduction to Computer Science by Max Hailperin, Barbara Kaiser, and Karl Knight. You will not have to buy this, since it is available for free on the web.

I will also be providing my own lecture notes to supplement these textbooks.