CPSC 100: Principles of Computer Science

   Fall, 1997.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 2:40--3:50 PM.
      (Mondays and Wednesdays in Lansing 300,
       Friday in the Gulick Microcomputer 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 applications of computers. A common theme in all parts of the course will be complexity and techniques for dealing with it.

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 two of the major application areas of computers: graphics and artificial intelligence. Note, though, that this is a course in computer science, not in the day-to-day application of computers. It does not cover things like spreadsheets, word processors, or presentation software.

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 and 3; Chapters 4, 5, 6, and 7; Chapter 11; and Chapter 12. We will omit Chapters 8, 9, and 10 entirely.

Note to juniors and seniors who are thinking about fulfilling distribution 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

Every Friday, the class will meet in the microcomputer classroom in Gulick Hall. These Friday classes will be "labs" in which you will work with computer software that I have written to supplement the textbook. Each lab is based on a worksheet. The worksheets are available on the World-Wide Web. (If you don't already know about the Web, you'll learn about it at the first lab.) Each worksheet includes a set of exercises. I will assign some of these exercises as homework, and you will submit your answers to them as part of a weekly lab report. I will encourage you to submit these reports by email. I'll have more information about that at the first 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. In addition to your answers to specific exercises, each lab report will include a short essay discussing what you did and what you learned in the lab and in the readings for that week.

During labs, you have the option of working with a partner. I encourage you to do this, since I believe that people tend to work more effectively in groups. 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: In general, you should not expect to finish the entire lab during class. That's the way it is supposed to be! Finishing the lab is homework. The Gulick lab is open for extensive hours. The lab worksheets can also be accessed from any computer connected to the Internet, including a computer in your room, if you have connected it to the campus network.


Quizzes and Tests

There will be two in-class tests, which will be given on Wednesday, October 8, and on Wednesday, November 5. There will be a cumulative final exam during the regularly scheduled final exam period for this course, 7:00 -- 10:00 PM, Sunday, November 23.

There will also be seven 20-minute quizzes, which will be given at the end of class every Wednesday when there is not a test (except for the first day of classes, of course). The lowest of the seven quiz grades will be dropped.


Grading

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 can still do the lab for half credit. (If you have an excuse, discuss it with me as soon as you can, before the class if possible.)


Office Hours, Email, 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.

I have two email addresses. My special email address for this course is cs100@hws.edu. My regular email address is eck@hws.edu. Email is good way to communicate with me, since I usually answer messages within a day of receiving them. (We'll cover some of the basics of using email in the first lab.)

There is also a "home page" for this course on the World Wide Web at the URL: http://math.hws.edu/cs100.html. You'll need to check this page weekly, since it will have important information about the course.


Tentative Schedule

Dates
Material to Cover
Lab
Sept. 10, 11 Chapter 1. Introductory Lab:
The Web, Java, and DataReps
Sept. 15,17,19 Begin Chapter 2.
Quiz on Chapter 1 and the Web.
xLogicCitcuits Lab 1:
Logic Circuits
Sept. 22, 24, 26 Finish Chapter 2, begin 3.
Quiz on Chapter 2.
xComputer Lab 1:
Introduction to xComputer
Sept. 29; Oct 1,3 Finish Chapter 3, begin 4.
Quiz on Chapter 3.
xTuringMachine Lab:
Introduction to Turing Machines
Oct 6,8,10 Finish Chapter 4.
Test October 8.
Publishing on the Web
Oct 13,15,17 Chapter 5.
Quiz on Chapter 4 and the Web.
xTurtle Lab 1:
Introduction to Programming
Oct 20,22,24 Chapter 6.
Quiz on Chapter 5.
xTurtle Lab 2:
Thinking about Programs
Oct 27,29,31 Chapter 7.
Quiz on Chapter 6.
xTurtle Lab 3:
Subroutines and Recursion
Nov. 3,5,7 Begin Chapter 11.
Test, November 5
xModels Lab 1:
Two-D Graphics and Animation
Nov 10,12,14 Finish Chapter 11, begin 12.
Quiz on Chapter 11.
xModels Lab 2:
Adding the Third Dimension
Nov. 17 Finish Chapter 12.
Wrap up the course.
 
Nov. 23 Final Exam, 7:00 -- 10:00 PM
Lansing 300.