Spring, 1995. Instructor: David J. Eck. Monday, Wednesday, Friday, 1:20--2:30. (Mondays and Wednesdays in Lansing 300, Friday in the Rosenberg Computing Lab)
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 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 cover some of the major application areas of computers, including graphics and artificial intelligence.
I have been teaching this course for five or six years. Two years ago, when I was on leave from my teaching responsibilities for a year, I decided to write my own textbook for the course. As is usually the case with professors who write textbooks, I did this because I was not satisfied with existing texts. The result is the book The Most Complex Machine: A Survey of Computers and Computing, which will be published this summer. I have taught CPSC 100 twice before using the first eight chapters of this book; it is now complete at twelve chapters. We will use most of the book in this course, omitting two complete chapters and parts of several others. You will receive a photocopied preliminary version of the text. The cost of reproducing the text is covered by the $25 course fee, as noted in the registration booklet for this term.
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.)
Every Friday, the class will meet in the Macintosh computing lab in the basement of Rosenberg Hall. Friday 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; you will receive a book of worksheets along with the text. 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.
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.
Every Wednesday, starting with April 5, there will be either a fifteen-minute quiz or a test. The tests will be given on April 26 and on May 17. Quizzes and tests are based on readings, labs, lecture and class discussion. Material from the Monday immediately preceding the quiz or lab will not be included, 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 regular, cumulative final exam at the regularly scheduled time: Wednesday, June 7 at 8:30 AM.
Your grade for the course will be determined as followed:
Quizzes: 15% First Test: 15% Second Test: 15% Final Exam: 25% Homework: 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 homework associated with the lab. (If you have an excuse, discuss it with me as soon as possible, before the class if possible.)
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. My regular office hours, when I am almost certain to be in my office, are: Monday 12:00 to 1:00, Wednesday 3:00 to 4:00, and Friday 9:30 to 10:30.
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!)
Week Of: Reading: Lab: March 27 Chapter 1. Lab #0: Introduction to the Macintosh. April 3 Selections from Lab #2: Logic Circuits. Chapters 2 and 3. April 10 Chapters 2,3 continued; Lab #4: Introduction to Begin Chapter 4. xComputer. April 17 Finish Chapter 4. Lab #7: Turing Machines. April 24 Chapter 5; Test. Lab #9: Introduction to xTurtle. May 1 Chapter 6. Lab #10: Thinking About Programs. May 8 Chapter 7. Lab #11: Subroutines and Recursion. May 15 Chapter 9; Test. Lab #12: Sorting. May 22 Chapter 11. Lab #14: Graphics and Geometric Modeling. May 29 Chapter 12. Final Day of Class: Playing with AI.