CPSC 100: Principles of Computer Science

   Fall, 1995.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 12:00--1:10.
      (Mondays and Wednesdays, in Lansing 300,
       Friday, usually, in the Rosenberg Computing Lab)

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, the history of computing, and computer graphics. 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 Pascal 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 turn to some of the major application areas of computers.

The course for this text is The Most Complex Machine: A Survey of Computers and Computing, which has just been published this summer. I started writing this book two and a half years ago, after teaching the course several times without ever being completely satisfied with the available textbooks. For the past few years, I have been using a manuscript version of the text. We will not have time to cover the entire book. We will leave out parts of chapters 2, 3, and 4 and all of chapters 9 and 12, leaving an average of about one chapter to be covered per week.

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

On eight of the ten Fridays during 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, which will be handed out in advance of the lab. You should read through it before coming to lab. The 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. An answer that is correct and more or less complete but that does not fully engage the question will probably get four out of five points. A grade of five out of five points is reserved for answers that show a greater depth of understanding. Occasionally, I might even give an unusually good answer an "extra credit" grade of six or even seven points out of five.

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. That--and reading the text--is the only homework that will be assigned in the course. In addition to the Rosenberg Lab, 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, on Friday, September 29 and Friday, October 27. There will also be seven weekly fifteen-minute quizzes, given on Wednesdays in weeks when there is no test. Quizzes and tests are based on readings, labs, lecture and class discussion. Material from the Monday immediately preceding a quiz will not be included on the quiz, so you will always have a chance to ask questions on material you don't understand.

In addition to the quizzes and tests, there will be a cumulative final exam at the regularly scheduled time: Saturday, November 18 at 1:30.


Grading

Your grade for the course will be determined as followed:

         Quizzes:      15%
         First Test:   15%
         Second Test:  15%
         Final Exam:   25%
         Lab reports:  30%

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. (If you have an excuse, discuss it with me as soon as possible. If you know in advance that you will miss a quiz, lab, or test, let me know in advance.)

Note: The most common reason that students do poorly in this course is the simple failure to write and turn in lab reports. Since there are eight lab reports, which count for a total of 30% of your grade, each missing report will lower your final grade by about 1/3 letter grade. There is no excuse for missing lab reports. If you have problems with the material, I expect you to come to my office hours to ask questions about it.


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 regular office hours (when I promise to try my best to definitely be in my office) as soon as I schedule them.

My E-mail address is ECK (or eck@hws.edu from off-campus). 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

(This is meant for viewing with Netscape 1.1.)

CPSC 100, Fall 1995
  Wednesday, September 6

Chapter 1 (start)
Friday, September 8

Lab #0
(in Rosenberg 008)
Monday, September 11

Chapter 1, finish
Chapter 2, start
Wednesday, September 13

Quiz on Chapter 1, Lab 0
Chapter 2, continue
Friday, September 15

Lab #2
(in Rosenberg 008)
Monday, September 18

Chapter 2, finish
Chapter 3, start
Wednesday, September 20

Quiz on Chapter 2, Lab 2
Chapter 3, continue
Friday, September 22

Lab #4
(in Rosenberg 008)
Monday, September 25

Chapter 3, finish
Chapter 4, begin
Wednesday, September 27

Chapter 4, finish
Review for test
Friday, September 29

TEST

Monday, October 2

Chapter 5, start
Wednesday, October 4

Quiz on Chapter 4
Chapter 5, finish
Prep for Lab #9
Friday, October 6

Lab #9
(in Rosenberg 008)
Monday, October 9

Chapter 6, start
Wednesday, October 11

Quiz on Chapter 5, Lab 9
Chapter 6, finish
Prep for Lab #10
Friday, October 13

Lab #10
(in Rosenberg 008)
Monday, October 16

Chapter 7, start
Wednesday, October 18

Quiz on Chapter 6
Chapter 7, finish
Friday, October 20

Lab #11
(in Rosenberg 008)
Monday, October 23

Chapter 8, start
Wednesday, October 25

Chapter 8, finish
Review for test
Friday, October 27

TEST

Monday, October 30

Chapter 10, start
Wednesday, November 1

Quiz on Chapter 8
Chapter 10, finish
Friday, November 3

Lab #13
(in Rosenberg 008)
Monday, November 6

Chapter 11, start
Wednesday, November 8

Quiz on Chapter 10
Chapter 11, finish
Friday, November 10

Lab #14
(in Rosenberg 008)
Monday, October 30

Wrap up the course
Review for final exam
   
Final Exam: Saturday November 18, 1:30--4:30 PM0