CSCI 134 - Digital Communication and Computation
An Introduction to Computer Science
Home | Lectures | Labs | Homework | Documents | CS Dept | Williams Home

Home : Fall 2014

Instructors: Bill Lenhart Brent Yorgey
Email: lenhart@cs.williams.edu byorgey@cs.williams.edu
Phone: x2371 x4731
Office: TCL 307 TPL 314
Lectures and labs will be taught by both instructors on a rotating basis:
Lectures: MWF 9:00am - 9:50am and 10:00am - 10:50am in Physics (TPL) 203
Labs:M 1:00pm - 4:00pm in TCL 217a
T 9:00am - 12:00pm in TCL 217a
T 1:00pm - 4:00pm in TCL 217a
Office Hours: Monday, 4:00 - 5:30 (Brent)
Wednesday, 11:00 - 12:30 (Brent)
Wednesday, 2:00 - 3:45 (Bill)
Thursday, 2:00 - 3:45 (Bill)
Friday, 11:00-12:00 (Brent)
TAs: Mitchell Breitbert, Kyle Cheng, Nola Gordon, Emily Hoyt, Karen Huan, Zander Majercik, Meilu McDermott, William McGuire, Yasick Nemenov, Marissa Shieh, Melanie Subbiah, Natalie Weyerhauser
TA Hours: TBA

Course Description

A digital revolution has transformed the way we communicate and process information. Digital cameras have replaced film, MP3s 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 object-oriented programming, control structures, arrays, recursion, and event-driven programming. Programming projects will include network applications like 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.

Textbooks and Readings

In lieu of textbooks, we will use two course packets. One is called Understanding Digital Communications and the other is called Programming with Java, Swing and Squint. Students should pick up a copy of the course packets from the Computer Science Department office (room TCL 303).

The CS 134 Lectures page describes the topics we plan to cover in each lecture and, where appropriate, the readings that should be completed before the lecture.

A fee of approximately $10 is charged for the course packet. Students who choose not to obtain a copy of the packet must inform the department's administrative assistant of this decision or they will be charged for the materials.

Programming Laboratories and Projects

Lab sessions will be held each week. These sessions provide a time during which your instructor can actively assist you in the development of programs. Lab descriptions will be handed out in advance, and you will be expected to have planned your approach to the assignment before the beginning of lab. Unexcused absence from your laboratory section may result in a grade of F for that week's lab.

In addition to the weekly programming laboratories, students will be expected to complete a final programming project during the final weeks of the semester.

You will submit your laboratory programs and projects electronically. An explanation of the submission process, details of the schedule of lab deadlines, information about teaching assistants and a discussion of our approach to grading your labs can be found on our Labs page.

Written Assignments

During the semester, students will be expected to complete about 10 written howework assignments. A tentative schedule for these assignments can be found on our Homework page.

Exams and Grading Policies

There will be one written exam given at midterm and another during the final exam period. The midterm will be on the evening of 3/20. There will be two time slots, one from 6:00 to 7:15 and the other from 7:30 to 8:45. The time and place for the final exam will be announced on the web site when it becomes available.

Final grades will be based on an average determined as follows: Laboratory programs: 20%, Midterm 20%, Final Project 20%, Homework Assignments: 20%, Final exam: 20%.

You may use a maximum of four free late days during the course of the semester. A late day permits you to hand in a program or a written assignment up to 24 hours late, without penalty. To use a late day, simply email your instructor and let them know that you are using a late day. Once those late days are exhausted, laboratory programs and written assignments will not be accepted after the due date, but in computing your grade the lowest score on submitted lab assignments will be dropped. Therefore, it is to your advantage to submit assignments on time, even if they are incomplete.

Computer Science Honor Code

For general information about the College's Honor System, look here.

Exams will be "closed-book": Students may not use any books, notes, calculators, or other resources (human, technological, or other). When working on problem sets, students may collaborate with one another; however, each student is responsible for writing their own solutions to problems and any collaboration should be clearly noted. Students may also discuss the problems with the course TAs or instructor.

For programming assignments in Computer Science courses, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as a "laboratory" or "team" program. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the TAs or instructors:

Laboratory Programs: Laboratory programs are expected to be the work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help from other students in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the TAs, approved tutors, or instructors in the design or coding of program logic will be considered a violation of the honor code.

Team Programs: Team programs are laboratory programs that are to be worked on in teams of two or more students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted by the appropriate rules above. Guideline: Any work that is not the work of your team is considered a violation of the honor code.

If you do not understand how the honor code applies to a particular assignment, consult your instructor. The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.

Suggestion: To protect your work, dispose of printouts carefully, and avoid leaving your programs on hard disks in labs and other public storage areas.

Computer Ethics

Students should be aware of the Computer Ethics outlined here. Violations including uninvited access to private information and malicious tampering or theft of computer equipment or software are subject to disciplinary action.


Copyright 2012 | Department of Computer Science :: 47 Lab Campus Drive :: Williamstown, MA 01267
413.597.3218 :: requestinfo@cs.williams.edu