CPSC 120: Principles of Computer Science

   Spring, 2002.

   Instructor:  David J. Eck.

   Monday, Wednesday, 9:05 -- 10:00 AM.
   Room Lansing 300.
   Friday, 9:05 -- 10:00 AM.
   Room Gulick 208.

About CS 120

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 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.)

The textbook for this class is The Most Complex Machine: A Survey of Computers and Computing. (For more information on this text, visit its Web page at http://math.hws.edu/TMCM/.) I hope to cover Chapter 1; parts of Chapters 2 and 3; and Chapters 4, 5, 6, 7, 11, and 12. I will supplement this with some material on creating Web pages, and possibly with some additional information about programming.

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 short discussion of the physical construction of a computer. A computer is very complex, but is made of very simple parts. We will look at some of the parts and how they are put together, but we will not cover all the details. (This means that we will be skipping large parts of Chapters 2 and 3 of the textbook.)

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 the World-Wide Web, computer graphics, and artificial intelligence.

Computer Labs

Every Friday, the class will meet in the computing lab in Gulick 208. These classes will be "labs" in which you will work with on the computer. Most of the labs will use computer programs that I have written to supplement the textbook. Others will be on Web page creation. Each lab is based on a worksheet, which will be available on-line. Each worksheet will include exercises to be handed in as homework. These exercises are always due on the Wednesday following the lab (except for the final lab, where I will ask you to hand in a few short exercises at the end of 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.

Although it is not required, you can work with a partner during lab. 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 will not have enough time to finish the entire lab during class, and you certainly won't have time to write reflective essay questions. That's the way it is supposed to be! Finishing the lab is homework. You can work on them any time in any of the computer labs or on your own computer.

In general lab reports will not be accepted late (although I might give a one- or two-day extension in special circumstances). Note that lab reports make up a significant part of your grade. Each lab represents about 2.5% of your grade for the course, so missing even one lab report can lower your grade by one-third of a letter grade.

Attendance Policy

It is important for you to be in class. I will be taking attendance in most classes. Excessive unexcused absences (more than three) will result in points being deducted from your final grade for the course.

Tests and Grading

There will be three in-class tests, which will be given on February 13, March 20, and April 17. There will be a cumulative final exam during the regularly scheduled final exam period for this course, 7:00--10:00 PM on Monday, May 6.

Your grade for the course will be determined as followed:

         First Test:   15%
         Second Test:  15%
         Third Test:   15%
         Final Exam:   20%
         Lab Reports:  35%

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.

My 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.

The Web page for this course can be found at http://math.hws.edu/eck/cs120/. This page will contain a weekly summary of the course, links to the lab worksheets, and possibly other information.

Tentative Schedule

Dates Reading Lab
January 16 and 18 Chapter 1 Introductory lab
January 21, 23, and 25 Finish Chapter 1;
Chapter 2, Section 1
Logic Circuits
Jan. 28 and 30; Feb. 1 Chapter 2, Parts of
Sections 2 and 3
Memory Circuits
February 4, 6, and 8 Chapter 3, Sections 1 and 4
A Model Computer
February 11, 13, and 15 Review, and start Chapter 4
  (Test on Feb. 13)
Making Web Pages
February 18, 20, and 22 Finish Chapter 4 Turing Machines
Feb. 25 and 27; March 1 Chapter 5 "Giant Brains" video
March 4, 6, and 8 Chapter 6 Programming 1
Spring Break, March 9 to 17
March 18, 20, and 22 Finish Chapter 6
  (Test on March 20)
Programming 2
March 25, 27, and 29 Chapter 7 Programming 3
April 1, 3, and 5 On-line readings Web Pages 2
April 8, 10, and 12 Chapter 11 Computer Graphics 1
April 15, 17, and 19 Finish Chapter 11
  (Test on April 18)
Computer Graphics 2
April 22, 24, and 26 Chapter 12 Artificial Intelligence
April 29 Last day: Wrapping up the course
May 6 Final Exam: 7:00 PM