CPSC 120: Principles of Computer Science

   Spring, 2001.

   Instructor:  David J. Eck.

   Monday, Wednesday, 11:15 -- 12:10.
   Room Lansing 300.
   Friday, 11:15 -- 12:10.
   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/.) We will cover Chapter 1; parts of Chapters 2 and 3; and Chapters 4, 6, 7, 9, 11, and 12. I will supplement this with some material on HTML and JavaScript, two languages that are used in the creation and programming of Web pages. I might also hand out short additional readings from time to time.

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 lab on the last day of class, where I will ask you to had 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 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

I do not take attendance at regular classes. I assume that you understand the importance of being in class. I do take attendance at the labs. If you miss a lab without a reasonable excuse, you can still do the lab work on your own, but you will lose 30% off the grade for that lab.

Tests and Grading

There will be three in-class tests, which will be given on February 14, March 21, and April 18. There will be a cumulative final exam during the regularly scheduled final exam period for this course, 1:30--4:30 PM on Monday, May 7.

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. (If you have not already learned how to use your email account, please let me know as soon as possible!)

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

Tentative Schedule

Week Of Reading Lab
January 22 Chapter 1 Introductory lab
January 29 Chapter 2, to page 48 Logic Circuits
February 5 Chapter 3, Sections 1 and 4 A Model Computer
February 12 Chapter 4, Section 1
  (Test on Feb. 14)
Creating Web Pages 1
February 19 Chapter 4, Sections 2 and 3 Turing Machines
February 26 Chapter 6, Sections 1 and 2 Programming 1
March 5 Chapter 6, Section 3 Programming 2
March 12 Spring Break
March 19 Some material on HTML
  (Test on March 21)
Creating Web Pages 2
March 26 Chapter 7 Programming 3
April 2 Some material on JavaScript Creating Web Pages 3
April 9 Chapter 9 Sorting algorithms
April 16 Chapter 11, Section 1
  (Test on April 18)
Computer Graphics 1
April 23 Chapter 11, Section 2;
Chapter 12, Section 1
Computer Graphics 2
April 30 Chapter 12, Sections 2 and 3 Artificial Intelligence
May 7 Final Exam: Monday, May 7, 1:30 PM