Overview

Document Sample
Overview Powered By Docstoc
					    CMSC 100
Course Overview




Professor Marie desJardins
  mariedj@cs.umbc.edu
Thursday, August 28, 2008
Thu 8/28/08   CMSC 100 -- Overview   2
                  Overview


     What is Computer Science?
     Course Logistics
     First Assignments

     UPC Example




Thu 8/28/08         CMSC 100 -- Overview   3
What is Computer
   Science?
                        The Computer Revolution

      How fast did this happen?
               [ http://www.blinkenlights.com/pc.shtml ]
               1950: “Simon” (plans published in Radio Electronics)
               1973: HP 65 (programmable calculator)
               1975: Altair 8800 (first widely used programmable computer kit)
               1977: Apple II (a huge breakthrough, the first mass-produced,
                inexpensive personal computer)
               1981: IBM 5150 PC (now we’re really taking off)

               1984: Apple Macintosh 128K (my first computer!!)

               2008: MacBook Air
                (my newest computer!)


Thu 8/28/08                            CMSC 100 -- Overview                       5
                                 Moore’s Law

      Computer memory (and processing speed, resolution, and
       just about everything else) increases exponentially
               (roughly: doubles every 18-24 months)




Thu 8/28/08                          CMSC 100 -- Overview       6
                                         Measuring Memory

      One yes/no “bit” is the basic unit of memory
                 Eight (23) bits = one byte
                 1,024 (210) bytes = one kilobyte (1K)*
                 1,024K (220 bytes) = one megabyte (1M)
                 1,024K (230 bytes) = one gigabyte (1G)
                 1,024 (240 bytes) = one terabyte (1T)
                 1,024 (250 bytes) = one petabyte (1P)
                 ... 280 bytes = one yottabyte (1Y?)




              * Note   that external storage is usually measured in decimal rather than binary (1000 bytes = 1K, and so on)
Thu 8/28/08                                              CMSC 100 -- Overview                                                 7
                   What Was It Like Then?

      The PDP-11/70s we used in college had 64K of RAM, with
       hard disks that held less than 1M of external storage




      ... and we had to walk five miles, uphill, in the snow, every
       day! And we had to live in a cardboard box in the middle of
       the road!

Thu 8/28/08                   CMSC 100 -- Overview                     8
                    What Is It Like Now?

      The PDP-11/70s we used in college had 64K of RAM, with
       hard disks that held less than 1M of memory
      The cheapest Dell Inspiron laptop has 2G of RAM and up to
       80G of hard drive storage....




      ...a factor of 1018 more RAM and 1012 more disk space
      ...and your iPod nano has 8G of blindingly fast storage
      ...so don’t come whining to me about how slow your
       computer is!

Thu 8/28/08                  CMSC 100 -- Overview                  9
                   It’s Not Just Speed, It’s Quantity

      So just how big a revolution are we talking about?

      How many computers do you think were in the room when I
       took my first programming class?

               Answer: ZERO(*).




      How many computers are in this room?
                  (* First we need to decide what is a computer… not so easy!)
                  Answer: I’m going to guess around 100.
Thu 8/28/08                           CMSC 100 -- Overview                        10
        Grand Challenges for CS
                                          Ubiquitous Computing and
   Information Search                     Situation Awareness




Autonomous
Vehicles
                                                                     NIST


                                               Human-Level Intelligence
                            DARPA


 Claytronics




http://www.cs.cmu.edu/~claytronics/software/                thebrain.mcgill.ca
                How Does a Computer Work?

      “The work performed by the computer is specified by a program, which
       is written in a programming language. This language is converted to
       sequences of machine-language instructions by interpreters or
       compilers, via a predefined set of subroutines called the operating
       system. The instructions, which are stored in the memory of the
       computer, define the operations to be performed on data, which are
       also stored in the computer's memory. A finite-state machine fetches
       and executes these instructions. The instructions as well as the data
       are represented by patterns of bits. Both the finite-state machine and
       the memory are built of storage registers and Boolean logic blocks, and
       the latter are based on simple logical functions, such as And, Or, and
       Invert. These logical functions are implemented by switches, which are
       set up either in series or in parallel, and these switches control a
       physical substance, such as water or electricity, which is used to send
       one of two possible signals from one switch to another: 1 or 0. This is
       the hierarchy of abstraction that makes computers work.”
       -- W. Daniel Hillis, The Pattern on the Stone
Thu 8/28/08                       CMSC 100 -- Overview                           12
                How Does a Computer Work?

      “The work performed by the computer is specified by a program, which
       is written in a programming language. This language is converted to
       sequences of machine-language instructions by interpreters or
       compilers, via a predefined set of subroutines called the operating
       system. The instructions, which are stored in the memory of the
       computer, define the operations to be performed on data, which are
       also stored in the computer's memory. A finite-state machine fetches
       and executes these instructions. The instructions as well as the data
       are represented by patterns of bits. Both the finite-state machine and
       the memory are built of storage registers and Boolean logic blocks,
       and the latter are based on simple logical functions, such as And, Or,
       and Invert. These logical functions are implemented by switches, which
       are set up either in series or in parallel, and these switches control a
       physical substance, such as water or electricity, which is used to send
       one of two possible signals from one switch to another: 1 or 0. This is
       the hierarchy of abstraction that makes computers work.”
       -- W. Daniel Hillis, The Pattern on the Stone
Thu 8/28/08                       CMSC 100 -- Overview                        13
                        Abstraction: The Key Idea!

      Computers are very complex
      Most interesting programs are very complex
      What makes it possible to design and maintain these
       complex systems??




      Which just means:
               Once we’ve solved a “low-level detail,” we can treat that solution as
                a “black box” with known inputs and outputs, and not worry about
                how it works.
      The way we get there is called problem reduction (or
       decomposition or divide-and-conquer)
Thu 8/28/08                            CMSC 100 -- Overview                             14
                            Hardware

        Patterns of bits
        Memory / storage registers
        Machine-language instructions
        Switches and Boolean logic blocks




Thu 8/28/08                   CMSC 100 -- Overview   15
                           Systems

      Operating systems
      Compilers




Thu 8/28/08                CMSC 100 -- Overview   16
                        Software

      Programs
      Programming languages




Thu 8/28/08               CMSC 100 -- Overview   17
                           What this class is about

      How computers are built, programmed, and used to solve
       problems
                 Hardware: Digital logic and system architecture
                 Systems: Operating systems and networks
                 Software: Basic programming/algorithms, databases
                 Theory: Algorithms, computation, complexity
                 Applications: AI, graphics, …
                 Social issues: Ethics, privacy, environmental impact


      Other skills emphasized:
               Effective writing and presentation skills
               Basic programming (in Alice)
               Foundational mathematics for computer science

Thu 8/28/08                             CMSC 100 -- Overview             18
                What this class is NOT about

        How to install Windows or Linux
        How to use Excel and PowerPoint
        What kind of computer you should buy
        Advanced programming techniques




Thu 8/28/08                  CMSC 100 -- Overview   19
                            Course Logistics

      Instructor: Prof. Marie desJardins, mariedj@cs.umbc.edu
         http://www.csee.umbc.edu/~mariedj/
         Office hours: Mon 11-12, Thurs 3:30-4:30, ITE 337

      TA: Ms. Chaitra Sathyanarayana, chaitra1@umbc.edu
       Office hours: Tues 11-12, Wed 2:30-3:30, ITE 334

      Course website/syllabus:
         http://www.csee.umbc.edu/courses/undergraduate/100/Fall08/


      Schedule:
         http://www.csee.umbc.edu/courses/undergraduate/100/Fall08/schedule.html




Thu 8/28/08                         CMSC 100 -- Overview                           20
                          Textbooks

                       Brookshear, Introduction to
                        Computer Science

                 Hillis, The Pattern on the Stone



      Dann et al., Learning to Program with
       Alice (regular or brief edition)

                 100H only:
                  Stork, Hal’s Legacy


Thu 8/28/08                  CMSC 100 -- Overview     21
                                My Expectations

      Students will…
               Attend class regularly
               Be prompt, and not engage in distracting or disruptive behaviors
                    NO LAPTOPS OR CELLPHONES DURING CLASS
               Take responsibility for knowing what work is due, and turning the
                coursework in promptly
               Follow the course’s academic honesty policy, and not present
                another’s work as your own
               Be engaged in the learning process, respectful of the course staff,
                and supportive of your fellow students
               Express concerns and ask questions
               Understand that the course staff has other obligations outside of this
                class


Thu 8/28/08                            CMSC 100 -- Overview                              22
                              Your Expectations

      The instructor will…
               Tell students what is expected in terms of coursework and behavior
               Be fair in giving assignments, grading assignments, and returning
                coursework in a timely fashion
               Answer questions and concerns promptly
               Be open to feedback and suggestions
               Be respectful of students
               Try to make the course useful, interesting, and enjoyable
               Understand that students have other obligations outside of this class




Thu 8/28/08                            CMSC 100 -- Overview                         23
               Academic Honesty Policy

      See handout…




Thu 8/28/08            CMSC 100 -- Overview   24
                         Course Communications

      Email
               Requests for extensions, questions about course policies  Prof. dJ
               Grading inquiries, requests for help with assignments
                 TA
                   Still having trouble? Talk to Prof. dJ
      Office hours
               One point of EXTRA CREDIT if you come to my office hours
                before 9/12 to introduce yourself!
      Blackboard
                 Instructor postings
                 Discussion board
                 Assignment submission
                 Wiki/blog(?)

Thu 8/28/08                           CMSC 100 -- Overview                            25
                       First Assignments


     First Assignments
               Academic Honesty Policy and Survey
                  Due Tuesday 9/2
                  Submit in class
               HW 1
                  Due Tuesday 9/9; NOTE CHANGE!
                  Submit via Blackboard
     Late policy
Thu 8/28/08                 CMSC 100 -- Overview     26
              EXAMPLE: Universal Product Codes

       Slides for the UPC example courtesy of
       Prof. Michael Littman (Rutgers University)



        •     First scanned product: Wrigley’s gum
              (1974).
        •     Method of identifying products at point of
              sale by 11-digit numbers.
        •     Method of encoding digit sequences so
              they can be read quickly and easily by
              machine.




Thu 8/28/08                           CMSC 100 -- Overview   27
                                 Reduction Idea

        •         Each level uses an encoding to translate to the next
                  level (i.e., the next higher abstraction)
              •     Patterns of ink.
              •     Sequence of 95 zeros and ones (“bits”).
              •     Sequence of 12 digits.
              •     Sequence of 11 digits.
              •     Name/type/manufacturer of product.




Thu 8/28/08                            CMSC 100 -- Overview              28
                                 Product Name

        •         Ponds Dry Skin Cream
              •     3.9 oz (110g)
              •     Unilever Home and Personal Care USA
        •         Name Badge Labels (Size 2 3/16" x 3 3/8")
              •     100 Labels
              •     Avery Dennison/Avery Division




Thu 8/28/08                           CMSC 100 -- Overview    29
                         11-Digit Number

        •     Digit = {0,1,2,3,4,5,6,7,8,9}
        •     Sequence of 11 digits
        •     QUESTION: How many different items can be encoded?




Thu 8/28/08                    CMSC 100 -- Overview                30
                         Encode Name By 11 Digits

        •         First 6 digits: Manufacturer
              •     First digit, product category:
                       0, 1, 6, 7, 8, or 9: most products
                       2: store’s use, for variable-weight items
                       3: drugs by National Drug Code number
        •         Last 5 digits: Manufacturer-assigned ID




Thu 8/28/08                             CMSC 100 -- Overview       31
                                    Examples


          •       Labels: 0-72782-051440
              •     0=general product
              •     72782= Avery
              •     051440=Avery’s code for this product
          •       Ponds: 3-05210-04300
              •     3=drug code
              •     05210= Unilever
              •     04300=National Drug Code for this product




Thu 8/28/08                            CMSC 100 -- Overview     32
                                 12-Digit Number

        •         The UPC folks decided to include another digit for error
                  checking. Example:
              •     01660000070    Rose’s Lime Juice (12 oz)
              •     04660000070    Eckrich Franks, Jumbo (16 oz)
              •     05660000070    Reese PB/Choc Egg (34 g)
              •     08660000070    Bumble Bee Salmon (14.75 OZ)
        •         Misread digit #2 and you turn sweet to sour.




Thu 8/28/08                             CMSC 100 -- Overview                 33
                            Check Digit

        1. Add the digits in the odd-numbered positions (first, third,
           fifth, etc.) together and multiply by three.
        2. Add the digits in the even-numbered positions (second,
           fourth, sixth, etc.) to the result.
        3. Subtract the result from the next-higher multiple of ten.
           The result is the check digit.




Thu 8/28/08                    CMSC 100 -- Overview                      34
                          Code and Example

                            01660000070
  set evensum to d2+d4+d6+d8+d10
  set oddsum to d1+d3+d5+d7+d9+d11
  set checkdigit to (0-(3*oddsum+oddsum)) mod 10
                                                           01660000070
                                              odd-digit sum: 0+6+0+0+0+0=6
                                              even-digit sum: 1+6+0+0+7=14
                                              odd*3+even = 6*3+14=32
                                              subtract from mult of 10=40-32=8


          •   Lime juice: 01660000070→016600000708
                                                                   all are two
          •   Franks:     04660000070→046600000705
                                                                 digits different
          •   Choc Egg: 05660000070→056600000704
                                                                       now
          •   Salmon:     08660000070→086600000701
Thu 8/28/08                         CMSC 100 -- Overview                            35
                           Some (Mod) Math

        •     3 x Sodd + Seven = 0 mod 10
        •     The sum of the odd-position digits (times 3) plus the sum
              of the even position digits (including the check digit) is 0
              mod 10.
        •     Modulo math is just like regular math, except things wrap
              around (like an odometer). Mod 10 means we only pay
              attention to the last digit in the number.
        •     Divide by 10 and only keep the remainder.




Thu 8/28/08                       CMSC 100 -- Overview                       36
                         More Modulo Math

        •     What’s the check digit for the code 0-000000-000000?
        •     What happens to the check digit if you add one to an
              odd-position digit?
        •     What happens to the check digit if you add one to an
              even-position digit?




Thu 8/28/08                     CMSC 100 -- Overview                 37
                                     Bits

     • We’ve gone from a product name to an 11-digit
       number to a 12-digit number.
     • A 0 will appear in the UPC as a white bar (space)
       and a 1 as a black bar.
              • So we need to turn each digit (base 10) into a series of
                bits (base 2).
              • Also, we want to be sure we alternate 0s and 1s often
                enough (e.g., don’t want 20 black bars (1s) in a row).
              • Finally, we want to have a code that we can scan in
                either direction (i.e., we need to be able to tell which
                direction we’re reading it in).


Thu 8/28/08                        CMSC 100 -- Overview                    38
                                  Bits

   Digits are encoded as 7-bit              0: 0001101   5: 0110001
   patterns that all:
                                            1: 0011001   6: 0101111
   •start with 0, end with 1
                                            2: 0010011   7: 0111011
   •switch from 0 to 1 twice
   •include no reverse                      3: 0111101   8: 0110111
          complements                       4: 0100011   9: 0001011


      • Encode d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 as:

              101 d1 d2 d3 d4 d5 d6 01010 d7 d8 d9 d10 d11 d12 101
                          Last 6 digits have 0s and 1s reversed.
                          (No reverse complements  can tell what
                          direction we’re scanning in!)
Thu 8/28/08                     CMSC 100 -- Overview                  39
                           How Many Bits?


        •     How many bits (zeros and ones) long is the code for the
              original 12-digit sequence?




Thu 8/28/08                      CMSC 100 -- Overview                   40
                             Finally, Ink!

          •   Given the long pattern of bits, we write a 1 as a bar
              and a zero as a space.
          •   Two 1s in a row become a double-wide bar.
          •   Two 0s in a row become a double-wide space.
          •   No UPC has more than four 0s or 1s in a row.
          •   All digits have equal width.
          •   All UPCs start and end with bars (actually with black-
              white-black pattern).
          •   UPCs can be read upside down.
          •   UPCs can be read at an angle or variable speed via
              ratios.


Thu 8/28/08                     CMSC 100 -- Overview                   41
                     Example          .......


          •   Barcode for skin cream:
          •   3-05210-04300-8 (8 is the check digit)
             start: 101; 3: 0111101
             05210: 0001101-0110001-0010011-0011001-0001101
             middle: 01010
             04300: 1110010-1011100-1000010-1110010-1110010 (rev)
             8: 1001000 (rev); end: 101
          •   The digits underneath are for our benefit.




Thu 8/28/08                      CMSC 100 -- Overview                42
                              Whew!

      The UPC example illustrates:
         Abstraction
         Binary numbers and modulo math
         Encoding (error correction, readability constraints)




Thu 8/28/08                   CMSC 100 -- Overview               43

				
DOCUMENT INFO