CPSC 100: Principles of Computer Science

   Spring, 1996.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 10:40--11:50 AM.
      (Mondays and Wednesdays in Lansing 300,
       Friday in the Rosenberg Computing Lab
                           or in Lansing 300)

About CS100

The title of this course is Principles of Computer Science. It will introduce you to some of the fundamental ideas of computer science. One of these is the idea of "programming," but programming is not the only, or indeed the major, focus of the course. Other components of the course will include the physical construction of computers, the theory of computation, and the history of computing. A common theme in all parts of the course will be complexity and techniques for dealing with it. (Note that this course will not teach you much about using practical programs such as spreadsheets or databases---instead, it aims to give you a foundation for understanding computers and computing.)

This is an introductory course in computer science, aimed mainly at non-majors. But I also think of it as a good introduction to the field for someone who is thinking about majoring. Certainly, it is better than starting in on Introductory Programming (CPSC 124) without knowing anything about computers. If CPSC 100 is taken before CPSC 124, then it can be counted towards a major in computer science.

The course begins with a general discussion of complex systems. In a sense, computer science is largely just the study of such systems. Next comes a discussion of the physical construction of a computer. A computer is very complex, but is made of very simple parts. I show how a complete computer could be built up, one step at a time, from such simple parts.

Once we understand the basics of how computers work, we can ask what, exactly, they are capable of doing. This is the central question in theoretical computer science, which studies the fundamental limits on what computers can do. It turns out that there are surprising limitations, even if you assume that the computer has unlimited memory and unlimited time to work.

Having dealt with computers, the course turns next to computer programs. A program is just a set of instructions to be followed by a computer. Just as a computer is made from many simple parts, a program is made up of a lot of simple instructions. By combining simple instructions in just the right way, you can tell a computer how to perform very complex tasks.

Finally, the course will cover some of the major application areas of computers, including graphics and artificial intelligence.

The text for this course is The Most Complex Machine: A Survey of Computers and Computing, which I wrote specifically for use in this course. We will cover Chapter 1; parts of Chapters 2, 3, 4; Chapters 5 through 8; Chapter 11; and Chapter 12.

Note on fulfilling requirements: This course fulfills a distribution requirement in the natural sciences. It does not, however, fulfill the lab requirement in the natural sciences. (Even though the course has a "lab" it is not an experimental science lab in the usual sense.)

Computer Labs

For seven Fridays out of the ten in the term, the class will meet in the Macintosh computing lab in the basement of Rosenberg Hall. These classes will be "labs" in which students will work with computer programs that I have written to supplement the textbook. Each lab is based on a worksheet; I will distribute photocopies of these worksheets in class. Each worksheet includes exercises to be handed in as homework. These exercises are always due on the Wednesday following the lab.

Many of the exercises ask you to do more than just mechanically follow directions. They ask you to think about what you have done, reflect on what you have learned, and express your thoughts in a short essay-type answer. You are expected to answer these questions with the same care that you would give to any writing assignment, and your answers will be graded accordingly.

During labs, each student will work with a partner. When you turn in the homework from the lab, you and your partner have two choices: Either you can turn in one lab report and both get the same grade, or you can turn in separate reports to be graded separately.

Note: It might often happen that you do not have enough time to finish the entire lab during class. That's the way it is supposed to be! Finishing the lab is homework. The Rosenberg lab will be open from 7:00 to 11:00 weeknights and from 1:00 to 5:00 on Saturday and Sunday. In addition, you can use the Macintosh computing lab in Lansing 312 for out-of-class work. The Lansing computing lab is open daily from 9:00 AM (12:00 noon on weekends) to 12:00 midnight. You are also free to copy the programs to use on your own computer.

Quizzes and Tests

There will be two in-class tests, which will be given on Friday, April 19 and Friday, May 17. A cumulative final exam will be given during the officially scheduled final exam period, at 8:30 AM on Tuesday, June 4.

On weeks when there is no test (starting in the second week of the term), there will be a quiz on Wednesday at the end of class. The quiz will generally cover material from the preceding week of classes and possibly from the lab that was held on the preceding Friday.


Your grade for the course will be determined as followed:

         Quizzes:      16%
         First Test:   16%
         Second Test:  16%
         Final Exam:   26%
         Lab Reports:  26%

If you miss a quiz or test without a good excuse, you will receive a zero for the grade. If you miss a Friday lab without a good excuse, you will get a zero for the lab report for that lab. (If you have an excuse, discuss it with me as soon as you can, before the class if possible.)

Office Hours, E-mail, WWW

My office is room 301 in Lansing Hall, just next door to our regular classroom. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce office hours as soon as my schedule is determined, but note that your office visits are not restricted to my regular office hours.

My e-mail address is ECK. e-mail is good way to communicate with me, since I usually answer messages the day I receive them. You already have an account on the Colleges' VAX computer that you can use to send and receive e-mail. If you don't know a password for that account, you should contact Barry Jones in Williams Hall.

There will also be on-line support for this course on the World Wide Web at the URL: http://math.hws.edu/TMCM.html. (If you don't know what this means just now, you will soon!)

Tentative Schedule

      Week Of:        Reading:                  Lab:

      March 25        Chapter 1.                Lab #0: Introduction to
                                                            the Macintosh.
      April 1         Selections from           Lab #2: Logic Circuits.
                         Chapters 2 and 3.

      April 8         Chapters 2,3 continued;   Lab #4: Introduction to
                            Section 4.1                     xComputer.

      April 15        Chapter 5; TEST Friday    (none)

      April 22        Chapter 6                 Lab #9: Introduction to

      April 29        Finish Chapter 6;         Lab #10: Thinking About
                          Begin Chapter 7.                  Programs

      May 6           Finish Chapter 7;         Lab #11: Subroutines and
                          Begin Chapter 8.                  Recursion.

      May 13          Finish Chapter 8;         (none)
                          TEST Friday

      May 20          Chapter 11.               Lab #14: Graphics and
                                                         Geometric Modeling.

      May 27          Chapter 12.               (none)