CS 134 - Digital Computation and Communication
An Introduction to Computer Science

Department of Computer Science :: Williams College

Course Description

A digital revolution has transformed the way we communicate and process information. Digital cameras have replaced film, CDs have replaced LPs, DVDs have replaced analog VCR tapes, and communications through email, chat systems, and the Web have become part of daily life. This course explores the principles that underly such digital information processing and communication systems.

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.