CS 135
Introduction to Computer Science: Enriched Section

Fall, 1997


Course Description

CSCI 135 is an innovative course developed with the help of a grant from the Ford Foundation to Williams College. It is designed for "in-between" students (those who know too much for CSCI 134 and not enough for CSCI 136) who are interested in learning about an exciting new research area in Computer Science. Thus, while covering an introduction to algorithm development and computer programming like CSCI 134, we will be investigating architectures and programming languages suitable for programming highly parallel architectures. As part of our focus on algorithm development during the traditional part of the course, we will introduce methods of structured program development (top-down) and various approaches to algorithm design. We will introduce recursive algorithms and the use of data structures (sets, arrays, records, linked lists, etc.) as tools to construct correct, understandable and efficient algorithms. These topics will be developed further in CSCI 136.

In the more innovative part of the course we will be discussing new highly parallel computer architectures such as reduction and data-flow architectures, as well as introducing a functional programming language, Miranda. Functional programming languages hold promise of being much more efficient than traditional languages on highly parallel machines. Programs in the traditional portion of this course will be run on Apple Macintoshes using the Lightspeed Pascal compiler. We will use the Computer Science Department network of Sun workstations for Miranda.

This course, as does CSCI 134, serves as a prerequisite for CSCI 136 and 237, and from there to upper level computer science courses. We assume that all students enrolled have experience with some programming language (we do not presume that you know anything about Pascal). Your level of experience should be sufficient to write a simple program (in any programming language) to read in a list of numbers and compute the average and maximum of the list. If you have had extensive experience in Pascal, Modula-2, C, C++, Java, or other similar language, CSCI 136 might be a better choice. See me if you have questions.

This course has mandatory scheduled laboratories that meet Wednesdays at 1:10 p.m. Labs include a combination of short exercises and work on weekly programming assignments. Weekly programming assignments will be due on Sundays by 11:59 p.m. Electronic copies should be submitted at that time in the CSCI 135 drop-off folder on Cider Press. There will be several types of laboratory and class assignments given: (1) practice assignments -- for which no grade is recorded (but which must be turned in), (2) homework assignments -- which together count for 12% of the grade, and (3) test programs -- which count a total of 30% of the final grade. There will be a midterm (worth 25% of the final grade) on Wednesday, October 13 (during lab period), and a scheduled final exam (counting 33%). You are free to obtain as much help from others as necessary for practice assignments since they are mainly to get you started, but the amount of help you may receive on homework assignments is restricted (see handout). Test programs are treated as take-home exams, with no assistance allowed. Violations of these restrictions will be taken directly to the honor committee. Homework assignments will not be accepted after the due date. Late test programs will be accepted, but with a penalty of 10% per day. See the Late Policy in Computer Science Courses handout for further information.


Back to:

  • CS 135 home page
  • Kim Bruce's home page
  • CS Department home page
  • kim@cs.williams.edu