CS 100, Fall 1997
Weekly Information page

CS 100: Principles of Computer Science is being taught by David Eck in the Fall term of 1997 at Hobart and William Smith Colleges, using the book The Most Complex Machine and a set of lab worksheets and Java applets. This is the main information page for that courses. The course handout and Information about previous terms are also available.

Students in the course are expected to check this page weekly.


Answers to Quizzes and Tests


The Final Days: November 10, 12, 14, and 17

The class for Monday, November 10 was a showing of the video "Giant Brains" from the series "The Machine that Changed the World." The quiz on Wednesday will have a few questions about this video. The remainder of the quiz will cover Section 11.1 from the text and the xModels program that was used in last week's lab. This will be the last quiz of the course.

The final exam for this course will be on Sunday, November 23, from 7:00 to 10:00 PM. It will be in our usual classroom. The exam will include all the material we have covered in the course, but there will be some emphasis on material covered after the second test (that is, on recursion, computer graphics, and artificial intelligence). The last question on the test will be a full-page essay on structured complexity.

Friday, November 14, at lab, is the last day to turn in lab reports (unless you get an explicit extension from me, with a very good reason).

The lab for this week is xModels Lab 2: Adding the Third Dimension. I will not collect a lab report for this lab. The grading for the lab will be as follows: 12 points for being there (or less, if you are significantly late); 1-1/2 points each for finishing two exercises from the lab worksheet (I will announce which ones at the lab).

The final reading for the course is Chapter 12, on artificial intelligence. However, you will not be tested on Section 12.3. Here are some important terms and ideas from this Sections 12.1 and 12.2:

           The Turing Test
           Physical Symbol System Hypothesis
           Brute force search
           Heuristics
           Microworld
           Expert system
           Knowledge representation
           Specific programs:  GPS, SHRDLU, CYC
           Hubert Dreyfus:  Intelligence cannot be based on facts and rules
           John Searle:  The Chinese Room argument against AI
           The problem of consciousness and "solipcism"

Week 9: November 3, 5, and 7

There is a test in class this Wednesday. For more information, look below at last week's listing.

The lab for this week is xModels Lab 1: Two-D Graphics and Animation. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also do the following exercises from the lab: Exercise  1, Exercise  2, Exercise  4, Exercise  6, Exercise  7, and Exercise  8.

The reading for this week consists of Chapter 11, through Section 11.1. We will not cover the details of Section 11.2, but you should be aware of the general idea of rendering of graphical images and of some of the issues involved. For the quiz next week, you should also be familiar with the scene description language used in the xModels program.

Important ideas from the reading and from the lab include:

           Painting programs vs. drawing programs
           Computer animation
           Rendering
           Attributes (color, lighting, etc.)
           Geometric models
           Geometric transformations
           Scaling, translation, and rotation
           Wireframe models
           Basic objects in xModels
           Transformations in xModels
           Animation in xModels
           Object definitions in xModels

Week 8: October 27, 29, and 31

The quiz this week is on Chapter 6. Next Wednesday, November 5, there will be a test. It will cover: Section 4.1, Section 5.2, all of Chapter 6, Section 7.1, and Section 7.2. Note that it does not cover Section 7.3 (on recursion), even though that section is on the reading list for this week.

The lab for this week is xTurtle Lab 3: Subroutines and Recursion. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also do the following exercises from the lab: Exercise 1, Exercise 6, Exercise 8, Exercise 9, and Exercise 10.

The reading for this week is Chapter 7, Sections 1, 2, and 3. (Section 3 is not on next week's test.) We will not cover Section 4. Note that I will also not expect you to know about "reference parameters," which are covered in Subsection 7.1.2. Note also that we will skip Chapters 8, 9, and 10 entirely (although you should, by all means, read them at some point to make yourself a better person).

Important ideas from the reading include:

        Writing new subroutines (SUB and END SUB)
        Dummy parameters (also know as formal parameters)
        Actual parameters
        Local variables
        Modules
        Software Life Cycle:  Specification, Analysis and Design,
             Coding, Testing and Debugging, Maintenance
        Recursion

Week 7: October 20, 22, and 24

The quiz this week will be on Chapter 5 only. It will not include any questions on the most recent lab.

In lab this week, you will continue working with xTurtle. The lab worksheet for this week is xTurtle Lab 2: Thinking about Programs. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also do the following exercises from the lab: Exercise 1, Exercise 5, Exercise 9, Exercise 10, and Exercise 11. (For exercise 10, see some of the advice given in Exercise 6.) Any program that you turn in should include some comments to explain how the program works! The lab report is due next Friday, October 31, in class.

The reading for this week is all of Chapter 6. However, you will not be tested on BNF, which is covered in Subsections 6.2.2 and 6.2.3. The quiz next week will be on Chapter 6.

Important ideas from the reading include:

        Programming
        The importance of names
        Syntax and Semantics
        Built-in subroutines
        Basic xTurtle subroutines:
           forward, back, turn, penUp, penDown, move, moveTo
        Subroutine call statements
        Parameters
        Variables
        DECLARE statements
        Assignment statements
        Input/Output statements: AskUser and TellUser
        Control structures
        LOOP statements
        IF statements
        Preconditions
        Postconditions
        Processes and states
        Comments in a program

Week 6: October 13, 15, and 17

For the quiz this Wednesday, don't forget to read the Web Publishing Lab worksheet, as well as the material from Section 4.1 in the text.

The lab this week is xTurtle Lab 1: Introduction to Programming. The lab introduces some of the basic ideas of high-level programming languages. It uses a language called "xTurtle" which lets you draw pictures on the computer's screen. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also do the following exercises from the lab: Exercise 1, Exercise 5, Exercise 6, Exercise 7, Exercise 8, and Exercise 9. (Exercise 1 is, in some ways, the hardest of these!) The lab report is due next Friday, October 24, in class. Note that you should be able to copy-and-paste the programs that you write for this lab into your lab report, so you don't have to retype or rewrite them. You might want to open a Notepad document where you can save the programs as you write them.

Warning: There are some problems with the xTurtle applet that you will use in this lab. You might find that sometimes part of a picture is not drawn until the xTurtle program ends. This seems to be a bug in the implementaion of Java in Netscape. It seems that the problem is less likely if you make the turtle invisible.

The reading for the week consists of Chapter 5, omitting the material from page 139 to 146. (We will come back to this omitted material later, towards the end of the course, when I plan to show a video called Giant Brains in class.) We will probably not talk much about Section 5.3 in class, but it should be fairly easy reading. Note that the lab this week is related to Chapter 6 rather than to Chapter 5. However, the quiz next week will only cover Chapter 5. You will read Chapter 6 next week, with a quiz on that material the following week.

Important ideas for this week include:

            integrated circuit
            microprocessor
            graphical user interface
            memory-mapped I/O
            video memory
            interrupt
            interrupt handler
            bus
            ports
            expansion slots and expansion cards
            device driver
            operating system
            application programming interface (API)
            ROM
            system startup and configuration
            processes and states
            multitasking

Week 5: October 6, 8, and 10

The test on Wednesday, October 8, covers material listed for Weeks 1 through 4, below. The material listed here, for Week 5, will be on the quiz next week, October 15.

The lab this week is Publishing on the Web. In this lab, you will learn how to use the Web-authoring component of Netscape Communicator to create and publish your own "home page" on the Web. I have made an account for you on the computer escher.hws.edu. You will publish your page in this account. I'll tell you your username and password at the lab.

For your lab report, you should, as usual, write a one-page essay discussing what you did and what you learned in the lab. Aside from this, the only exercise is to create and publish a Web page. I will look for your page on the Web; you don't have to print it out. The page must include some colors, two or more links, a list of items, and at least one image. Your grade for the page will depend on how good a job you do on it. You can work with a partner on your page if you want.

The reading for this week consists of Section 4.1 in the text. I will not ask you to read the rest of the chapter. You should also know the basic ideas of the halting problem and of "computationally unsolvable problems" in general. This was covered in class and is not in the assigned reading.

Important ideas for this week include:

        Computational universality
        Simulation of one computer by another
        Compilers
        Interpreters
        Virtual machines
        The Java Virtual Machine
        Church-Turing Thesis
        Halting Problem
        Computationally unsolvable problems
        Publishing on the Web
        HTML (HyperText Markup Language)
        Hypertext
        Web server

Week 4: September 30; October 1 and 3

There will be a test next week, on Wednesday, October 8. It will include all the material through Chapter 3 in the text and in the first four labs. (It will not include any new material from Chapter 4, which we cover in class next Monday.) You are reminded that the online Information about previous terms includes sample tests and quizzes, with answers.

The lab for Friday is xComputer Lab 1: Introduction to xComputer. (This is the only lab that you will do using the xComputer applet.) For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also answer the following exercises from the lab worksheet: Exercise 1, Exercise 3, Exercise 4, Exercise 6, Exercise 7, and Exercise 10. The lab report is due next Friday, October 10, in class. There are no pictures in this lab report, so you can turn it in by email if you want.

The reading for this week includes parts of Chapter 3. Finish reading section 3.1, if you have not already done so. Read the introductory material in Section 3.2 on page 82 through the top of page 84. You don't need to know all the details from the remainder of Section 3.2, about the execution of individual machine language instructions. You will, however, need to know what the most common assembly language instructions do. (See the list below.) Section 3.3 is important, and you should read it carefully. We will not cover section 3.4.

Here are some important terms and ideas from the lab and reading:

         Assembly language
         Basic assembly language instructions:
                  LOD     LOD-C     JMP    INC
                  ADD     ADD-C     JMZ    DEC
                  SUB     SUB-C     JMN    STO
         The steps that make up a fetch-and-execute cycle
         How control wires are used to carry out the fetch-and-execute cycle
         How the control circuit works
         How the clock drives the fetch-and-execute cycle
         Registers in the CPU of xComputer, and the roles they play:
                  COUNT register
                  PC (program counter register)
                  ADDR (address register)
                  IR (instruction register)
                  AC (accumulator register)
         Black box

Week 3: September 22, 24, and 26

The lab for Friday, September 26 is xLogicCircuits Lab 2: Memory Circuits. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also answer the following exercises from the lab worksheet: Exercise 1, Exercise 3, Exercise 5, Exercise 6, Exercise 7. (You might want to think about exercises 8 and 9 when you write your introductory essay!)

The reading for this week is Chapter 2, Section 3 through Chapter 3, Section 1. You can skip the material from the last paragraph on page 71 to the end of Subsection 3.1.1. Also, for this week, you won't need to know the details about all the different registers covered in Subsection 3.1.2. For those of you who like to read ahead, note that I will not ask you to read the bulk of Section 3.2. (The lab and reading for this week are a departure from the tentative schedule that was included in the course handout. I have decided to spend a little more time on Chapters 2 and 3, and a little less on Chapter 4.)

Here are some important terms and ideas from the reading:

          feedback loop in a circuit
          memory circuit
          the clock which drives the operation of a computer
          control circuit and control wires
          registers
          CPU and main memory
          how to store data and read data in main memory
          locations in main memory
          address of a location in main memory
          fetch-and-execute cycle

Week 2: September 15, 17, and 19

If you are still looking for the material about the first week of the course, you'll find it later on the page. (The Quiz on Wednesday, September 17, covers the first chapter of the book and the first lab. A list of important terms is given in the Week 1 section below.)

The lab on Friday, September 19 is xLogicCircuits Lab 1: Logic Circuits. In this lab, you'll work with simulated logic circuits made of AND, OR, and NOT gates. For your lab report, you should turn in a short essay (about a page) about what you did and what you learned in the lab. You should also do the following exercises from the end of the lab worksheet: Exercise 3, Exercise 4, Exercise 6, Exercise 9, and Exercise 10. For the exercises that ask you to "build a circuit," you should turn in a drawing of the circuit. The lab report is due next Friday, September 26, by the beginning of class. You can turn it in either by email or on paper. (For this lab, even if you use email, you'll still have to turn in some drawings of circuits on paper.)

The reading for this week consists of parts of Chapter 2. Some parts of Chapter 2 are rather technical, and we will not cover them all. You should read pages 29--48 and 54--56. This includes the introductory material for the chapter, all of section 2.1, and subsections 2.2.1, 2.2.2, and 2.2.6.

The quiz next Wednesday, September 24, will cover the lab and the readings from Chapter 2. You can expect some questions that are similar to lab exercises. Here are some important terms and ideas:

          Boolean algebra (also known as propositional logic)
          AND, OR, and NOT gates and the rules for their operation
          logic circuits
          relationship between logic circuits and Boolean algebra
          specifying circuit behavior with an input/output table
          building a circuit based on an input/output table
          binary numbers
          counting in binary
          adding binary numbers
          half-adder circuit
          full-adder circuit
          k-bit addition circuit
          Arithmetic-Logic Unit (ALU)
          control wires

Week 1: September 10 and 12

Welcome to the course! In this spot every week, you'll find information about what we are doing in the course that week. There will be a link to the lab that you'll be doing on Friday, and a description of the lab report you have to turn in. You'll also find a list of key concepts and terms from the reading and lab. These are things that are likely to turn up on the quiz the following week.

Friday's lab is Introductory Lab: The Web, Java, and Data Reps. For your lab report, you should write a short essay (about one page) discussing what you did and what you learned in the lab. Then you should answer the following exercises from lab: Exercise 1, Exercise 2, Exercise 5, Exercise 7, Exercise 8, and Exercise 10. Your lab report must be turned in no later than the beginning of class next Friday, September 19. It can be submitted on paper or by email to cs100@hws.edu.

At the lab on Friday, or some other time at your convenience, you should read about using Netscape for sending and receiveing email. The information is available on the Web on the page Using Email at HWS. (You should send me at least one email message!)

The reading for this week is Chapter 1 of the text, "What Computers Do." This is an introductory survey chapter, and many of the topics mentioned will be covered in more detail as the course progresses. You should try to understand the basic idea of structured complexity, which is the central theme of the course.

The key concepts and terms for this week include:

      mechanical manipulation of symbols         World-Wide Web (WWW)
      bit                                        Internet
      byte                                       Web browser
      ASCII code                                 URL
      pixel                                      links and Web pages
      transistor                                 search engine
      memory                                     Java
      central processing unit (CPU)              applet
      program
      machine language
      structured complexity
      high-level language

This material will be on the quiz that will be given in class next Wednesday, September 17. I expect you to come to class on Monday prepared to discuss this material. You should have questions and comments on what you've read.