CPSC 120:
Principles of Computer Science

   Fall, 2002.

   Instructor:  David J. Eck.

   Monday, Wednesday, 12:20 -- 1:15 AM.
   Room Lansing 300.
   
   Friday, 12:20 -- 1:15 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, 9, 11, and 12. I will supplement this with some material on creating Web pages.

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

Chapter 3 deals with a very simple model computer. In Chapter 5, we will look briefly at how real computers work. You will also learn a bit about the history of computing.

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. Programming will be covered in Chapters 6 and 7. Chapter 9 discusses some common types of programs, and Chapter 11 is an introduction to computer graphics.

Once we understand the basics of how computers work and how they are programmed, we will head back to Chapter 4 to 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. As a final inquiry into what might be the ultimate question about the capabilities of computers, Chapter 12 will introduce the field of artificial intelligence and some of the controversy that has surrounded it.


Computer Labs

Every Friday (with one exception), the class will meet in the computing lab in Gulick 208. These classes will be "labs" in which you will work 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 more than one-third 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

I will take attendance every Friday at lab. If you miss the lab without a good excuse, you will lose one-third of the grade for that lab. I do not take attendance at other classes. I assume that you understand the importance of attending class.


Tests and Grading

There will be three in-class tests, which will be given on September 25, October 23, and November 20. A cumulative final exam will be given during the regularly scheduled final exam period for this course, 8:30--11:30 AM on Friday, December 20. The exam is on the last day of the exam period. Make your travel plans accordingly. You are required to take the exam at the scheduled time.

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/index_f02.html. This page will contain a weekly summary of the course, links to the lab worksheets, and possibly other information.


Tentative Schedule

Dates Reading Lab
Sep. 2, 4, 6 Chapter 1 Introductory Lab
Sep. 9, 11, 13 Parts of Chapter 2 Logic Circuits
Sep. 16, 18, 22 Parts of Chapter 3 A Model Computer
Sep. 23, 25, 27 No reading (Lecture on HTML)
Test on Wednesday
Making a Web Site, Part 1
Sep. 30; Oct. 2, 4 Chapter 5 "Giant Brains" Video
(in Lansing 300)
Oct. 7, 9, 11 Begin Chapter 6 xTurtle Programming, Part 1
Oct. 16, 18 Finish Chapter 6
(No class Monday because
of Fall Break)
xTurtle Programming, Part 2
Oct. 21, 23, 25 No reading (Lecture on HTML)
Test on Wednesday
Making a Web Site, Part 2
28, 30; Nov. 1 Chapter 7 xTurtle Programming, Part 3
Nov. 4, 6, 8 Chapter 9 Sorting Algorithms
Nov. 11, 13, 15 Begin Chapter 11 Two-dimensional Graphics
Nov. 18, 20, 22 Finish Chapter 11
Test on Wednesday
Three-dimensional Graphics
Nov. 25 Begin Chapter 4
(No class Wednesday or Friday
because of Thanksgiving)
(None)
Dec. 2, 4, 6 Finish Chapter 4 Turing Machines
Dec. 9, 11, 13 Chapter 12 Artificial Intelligence
Dec. 20 Final Exam, Friday December 20, 8:30 AM