Spring, 1997. Instructor: David J. Eck. Monday, Wednesday, Friday, 12:00--1:10 PM. (Mondays and Wednesdays in Lansing 300, Friday in the Rosenberg Macintosh 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, 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. (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; Chapters 4, 5, 6, and 7; parts of Chapters 8 and 10; 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.)
Every Friday, except for the last day of the course, the class will meet in the Macintosh computing lab in the basement of Rosenberg Hall. These classes will be "labs" in which you 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.
There will be two in-class tests, which will be given on Monday, April 28, and on Monday, May 26. There will be cumulative final exam during the regularly scheduled final exam period for this course, 1:30--4:30 PM on Sunday, June 9.
There will also be seven 15-minute quizzes, which will be given at the end of class every Monday when there is not a test (except for the first day of classes, of course). The lowest of the seven quiz grade will be dropped.
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.)
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 email address is ECK. Email is good way to communicate with me, since I usually answer messages within a day of receiving them. You already have an account on the Colleges' VAX computer that you can use to send and receive email. If you don't know your password for that account, you should contact Barry Jones in Williams Hall.
There is also on-line information 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, etc.: March 31 Chapter 1. Lab: Introduction to the Macintosh and the Web. April 7 Selections from Lab: Logic Circuits. Chapters 2 and 3. April 14 Chapters 2,3 continued; Lab: xComputer, A Simple begin Chapter 4. Model Computer. April 21 Finish Chapter 4; Lab: Turing Machines. begin Chapter 5. (Short video on Wednesday?) April 28 Finish Chapter 5. Lab: Introduction to Programming with xTurtle. Test on Monday. May 5 Chapter 6; Lab: Programming. May 12 Chapter 7; Lab: Subroutines and Recursion. May 19 Selections from Lab: More on Computer Chapters 8 and 10. Networks May 26 Chapter 11. Lab: Graphics and Geometric Modeling. Test on Monday. June 2 Chapter 12. No lab. Video, "Giant Brains," on Wednesday.