COMP 150 - First Meeting

COMP 150 - First Meeting

Author:Michael Tobis

Welcome

This is COMP150

An Introduction to Computer Science

Prof. Michael Tobis

Something to Think About

If you had a willing but unimaginative servant who could do a million things per second, how would you go about instructing them regarding their duties?

Something to Think About

"Computer science is no more about computers than astronomy is about telescopes"
-Edsger Dijkstra

What else might it be about?

Something to Think About

If a very smart person from the distant past (say, Thomas Jefferson or Benjamin Franklin) were magically granted a day to visit us in 2006, and asked you "what is a computer?", how would you answer?

Goals

This course has a broad set of goals:

These multiple goals require some compromises.

We also have very little time!

Resources

All resources for the course will be linked from

http://webpages.cs.luc.edu/

There is a mailing list at

http://groups.google.com/group/CS150

Me

I'm Michael Tobis.

I will cheerfully answer to "Michael".

You can, if you prefer, call me "Professor Tobis" or "Dr. Tobis".

I will not answer to "Mike", or "Mr. Tobis"; I do not recognize those as names for me

I am not sure I will have office hours regularly; but I am willing to meet at times mutually agreed.

You can IM me at AIM:peskytoaster

You can call me at 773 272 6827

What we will study

There are essentially three components to the course:

I would prefer to weave them, but we have little time

Semantic and Contextual Knowledge

Part history course, part science course

Readings in the required text and from available web sources

Half the grade

Weekly quizzes weeks 3,4,5 = 20 points

Final exam week 6 = 20 points

Written Assignments = 20 points

Procedural Knowledge

Because we only have 10 lectures and an exam, there is no time to waste

The procedural knowledge must start immediately: by the end of today you will know how to write a computer program

We will have substantial lab time every session

We will pair up weekly. Labs are done in pairs. Homeworks are done alone.

Labs = 25 points

Homeworks due Wednesdays weeks 2,3,4,5 = 35 points

Grades

Points are not given freely; you must work for them. However, there are a lot (120) of them! I convert to course letter grades with the following minimum requirements:

On with the Show

ui/thisisit.jpg

A Tangled Web - The prehistory of computers

ui/babbage.png

The first computer? Note the hand crank...

( http://ed-thelen.org/bab/bab-t-photo.jpg )

A special purpose computer

ui/astrolabe.png

Astrolabe

Typical uses of the astrolabe include finding the time during the day or night, finding the time of a celestial event such as sunrise or sunset and as a handy reference of celestial positions. Astrolabes were also one of the basic astronomy education tools in the late Middle Ages. Old instruments were also used for astrological purposes. The typical astrolabe was not a navigational instrument although an instrument called the mariner's astrolabe was widely used. The mariner's astrolabe is simply a ring marked in degrees for measuring celestial altitudes. ( http://www.astrolabes.org )

Abacus

ui/abacus.jpg

Ancient device, still in use in some places (this one is contemporary Russian)

(What is the plural of abacus?)

Pascal's calculator

ui/Pascaline-calculator.jpg

Pascaline 2

ui/pascal.jpg

Lets say that you want to add number 20 and number 81.

To dial 20, you just have to put your finger into the space between the spokes next to digit 2 and before digit 3 of the second wheel, and rotate the wheel until your finger strikes against the fixed stop on the bottom of the wheel. This rotation transmits the value of two into the second window from the right. So now the machines is displaying number 000020.

( http://www.computermuseum.li/Testpage/Pascaline-Calculator-1642.htm )

To dial 81, put your finger into the space between the spokes next to digit 8 and before digit 9 of the second wheel and rotate it. After the second drum will reach number 9 the gears inside Pascaline will carry to the next drum one unit and the third drum of the machine will rotate by one tenth. So after the end of the dialing of number 8 (the first digit of the second number to be added) the machine is displaying number 100. Now put your finger into the space between the spokes next to digit 1 and before the digit 2 of the first wheel and rotate it the same way you did before. Now the machine is displaying number 000101 which is the final result of the addition you wanted to make. ( http://www.macs.hw.ac.uk/~greg/calculators/pascal/About_Pascaline.htm )

(note we will return to this device: it actually had an important non-obvious influence on modern computers)

Summary

Prior to the industrial revolution, we had devices that could do elaborate calculations

At first, they were very specific in purpose, but eventually the idea of the mechanical calculator emerged

However, there was no concept of the "program"; this emerged from an unexpected and very different source

Weaving

A commercial, not an intellectual source for the crucial idea of storing an instruction for a machine.

ui/weaving.png

Note the repetitive nature of the task

(also note the "circles" that we perceive that aren't really there!)

And the Machine that does it

ui/jacquard.jpg

( http://www.smith.edu/hsc/silk/Images/Jacquard%20Loom.jpg )

Jacquard Loom

Weaving patterns stored on punched cards

Computer scientists find it momentous not because of its relatively minor impact on the textile industry

The real breakthrough is the stored instruction.

The first physical emobodiment of encoded information for the use of the machine.

Charles Babbage

ui/babbage.jpg

Charles Babbage, a successful inventor

Onward to Computing

Numerical tables were calculated by humans called 'computers'.

Babbage saw the high error rate of the people computing the tables

Babbage wanted to calculate the tables mechanically, removing all human error. He began in 1822 with what he called the difference engine, made to compute values of polynomial functions.

The first difference engine needed around 25,000 parts of a combined weight of fifteen tons standing eight feet high. Although he received much funding for the project, he did not complete it.

Babbage started designing a different, more complex machine called the Analytical Engine, which could be programmed using punch cards, an idea unheard of in his time.

Several features subsequently used in modern computers, including sequential control, branching, and looping

Lady Ada Lovelace

ui/ladyada.jpg

Ada Lovelace, (Augusta Ada King, Countess of Lovelace (December 10, 1815 - November 27, 1852) )

Ada was the only legitimate child of the poet Lord Byron and his wife, Annabella Milbanke.

She was an impressive mathematician and one of the few who understood Babbage's vision,

Created a program for the Analytical Engine.

Had the Analytical Engine ever actually been built, her program would have been able to calculate a numerical sequence known as the Bernoulli numbers.

Based on this work, Ada is now credited as being the first computer programmer and, in 1979, a contemporary programming language was named Ada in her honour.

Hollerith and IBM

ui/Hollerith.jpg

While the programmable computer did not emerge for a long time, American engineer Herman Hollerith developed a substantial business in punch card punching, sorting and tabulating machines, based on his patents, which were used in the US census quite early.

His company, the Tabulating Machine Company, became International Business Machines (IBM), still the largest corporation in computing.

However, true computing as Babbage envisioned it did not become practical for a century.

We will have to lay the groundwork for the ideas in order to understand it better.

Enter Python

(close your eyes if you have a snake phobia)

Note: the language was not named after the snake, but after the comedy troupe, Monty Python.

Enter Python

ui/Python3.jpg

Idle

Idle is an interactive development environment (IDE)

Eric Idle is also one of the members of the Monty Python comedy troupe

beginner resources:

http://python.org

http://wiki.python.org/moin/BeginnersGuide

idle resources:

http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/index.html

http://www.python.org/idle/doc/idlemain.html

Our Objective

pick a number from 1 to 10 and ask for that big of a "kite"

>>> kite(4)

here is a picture of a 4 panel kite:

   *
  ***
 *****
*******
 *****
  ***
   *
   |
   *
  ***
 *****
  ***
   *
   |
   *
  ***
   *
   |
   *

>>>

.

Practicum

getting started

http://cs.luc.edu/~anh/150/labs/lab1.html

http://cs.luc.edu/~anh/150/labs/lab2.html

http://webpages.cs.luc.edu/~mt/kite1.html

Readings

for Wednesday, Chapter 8 in Reed

for next Wednesday, chapters 12, 16 (we will work through this material next time)

this material will be covered on the first quiz

you will be expected to understand base 8 and base 2 (binary) and ASCII