An Introduction to Computer Science
|
| |
Department of Computer Science :: Williams College
Course Description
The representation of information in discrete, symbolic form is ultimately what makes a system digital. We will examine digital techniques for representing information. How can a beam of light traveling through an optical fiber represent a sequence of 0s and 1s? How can numeric data capture the tones we hear when we listen to a digital recording? As we explore these questions we will examine the tradeoffs involved in the design of schemes for representing information.
All digital information processing and communication systems are driven by precise rules or algorithms expressed as computer programs. We will develop an appreciation for the nature and limitations of such algorithms by exploring abstract algorithms for complex processes and by learning the basics of computer programming in Java. Programming topics covered will include objects, classes, methods, conditional and iterative control structures, text/string processing, arrays, and recursive lists. Programming projects will include network applications like IM chat clients, tools to process and compress digital images, and simple network servers. While the programming assignments for the course will focus on the application of programming to communication, the programing skills students develop will be applicable in many other areas. In particular, this course is designed to provide the programming skills required to complete CSci 136 and/or CSci 237.