CSE 111, Fall 2004

Great Ideas in Computer Science

Course Summary

Original: 15 December 2004
Last Update: 19 January 2011

Note: NEW or UPDATED material is highlighted


NOTE: Since most of this year's freshmen were born around 1986, and this girl looks to be about 5 years old, she's approximately of your generation!


UPDATED


  1. Computer science is the science of computers and computing.

    (Other definitions: CS is the science of procedures;
    CS is the science of information processing, etc.)

  2. Algorithm for a problem:

  3. A problem is computable means that there is an algorithm (expressed as a computer program written in some programming language) that solves the problem.

  4. digital computer

  5. The Great Ideas of CS:

    1. Boole's & Shannon's idea:

      Only 2 nouns are needed to represent all information about any computable problem:

      • e.g., 0, 1

    2. Turing's idea:

      Only 5 verbs are needed to express the basic computable actions that can be done with those objects:

      • e.g., moveleft, moveright, print-0, print-1, erase

    3. Boehm & Jacopini's idea:

      Only 3 rules of grammar are needed to combine these nouns and verbs into descriptions of more-complex actions:

      • sequence (BEGIN S1;S2 END),
      • selection (IF <test> THEN S1 ELSE S2),
      • repetition (WHILE <test> DO S1).

      • A useful 4th rule: DEFINE-NEW-INSTRUCTION <new-instr> AS <old-instr>
      • A useful 5th rule: recursion (see below)

    4. Church-Turing Thesis:

      Nothing else is needed; more precisely:

      • A problem is computable means that there is a Turing-machine program (or a Karel program, or a Java program, or ...) that can solve it.

      • All programming languages are equally powerful.

        • But some are better than others for expressing and solving some problems, while others are better for other problems.

      • Everything that is computable can be computed by a Turing machine.

    5. Turing's Theorem:

      There is a Universal Turing Machine that can compute anything that is computable.

      • I.e., a stored-program computer; e.g., a PC, a Mac, etc.!

    6. Halting Problem:

      An example of a non-computable problem

      • There is no single computer program that can tell you whether any given computer program will halt.

  6. The first Great Idea: Binary representation:

    1. A paradox:

      • If each character (letter, numeral, symbol) is represented as a string of (let's say) 8 bits, then each 10-letter word is represented by 80 bits.

      • So, each single thing to be represented needs at least 8 times as many bits to represent it.

      • That's an 8x "magnification", so to speak.

      • Yet think how much is represented inside your own PC or Mac: LOTS of stuff, all squished into (i.e., represented as complex structures of) bits!

      • That's the paradox: Objects seem to be expanded 8 times, yet they become smaller

      • So, bits must be very small!

      • For a related topic, see:
        Lesk, Michael (1997), "How Much Information Is There in the World?"

  7. The second Great Idea: Turing machines:

  8. The third Great Idea: Boehm & Jacopini's theorem about structured programming

  9. Artificial Intelligence: Is cognition computable?




Text copyright © 2004–2011 by William J. Rapaport (rapaport@buffalo.edu)
Cartoon links and screen-captures appear here for your enjoyment.
They are not meant to infringe on any copyrights held by the creators.
For more information on any item, click on it, or contact me.

http://www.cse.buffalo.edu/~rapaport/111F04/summary.html-20110119