Download Summer Institute for Computing Education

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Logic programming wikipedia , lookup

Supercomputer architecture wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Computer cluster wikipedia , lookup

Supercomputer wikipedia , lookup

Go (programming language) wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Functional programming wikipedia , lookup

Programming language wikipedia , lookup

Object-oriented programming wikipedia , lookup

Assembly language wikipedia , lookup

ILLIAC IV wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Reactive programming wikipedia , lookup

Parallel computing wikipedia , lookup

Structured programming wikipedia , lookup

Transcript
Introduction to Computer Science,
Computers, and Programming
Barbara Ericson
Georgia Tech
Aug 2009
Intro CS, Computers,
Programming
Learning Goals
•
•
•
•
•
What is Computer Science?
What do Computer Scientist do?
Why study Computer Science?
What is a computer?
What can computers do?
Intro CS, Computers,
Programming
What is Computer Science?
• Write down a sentence or two about what
you think it is and then share that with your
neighbor.
– What is different about your definitions?
– What is the same about your definitions?
• Look up some definitions of computer
science
– How do these definitions agree and disagree
with what you thought?
Intro CS, Computers,
Programming
What do Computer Scientists do?
• Study theory
– Mostly work in universities and research labs
• Work on the next generation of the Internet
– Networking
– Cisco
• Work on how to effectively store and process tons of
data
– Databases
– NCR, NASA, Google
• Work on better ways for humans and computers to
communicate
– Human – Computer Interaction
– Cell phone companies
Intro CS, Computers,
Programming
What do Computer Scientists do?
• Work on special effects in movies, TV, and games
– Graphics, animation
– Pixar, Electronic Arts
– See the digital video special effects class movies at Georgia
Tech http://www.cc.gatech.edu/classes/AY2006/cs4480_spring/
• Work on keeping digital data secure
– FBI, CIA, Internet Security Systems
• Work on how to use computers to improve education
– Educational technology
• Work on making computers smarter
– Artificial intelligence, robotics
Intro CS, Computers,
Programming
What is a Computer?
• A device that performs
high-speed mathematical
and/or logical operations
or that assembles, stores,
correlates, or otherwise
processes information.
• The first computers were
people
– who did computations
– Like the Harvard Computers
shown on the right
• astronomical calculations
Intro CS, Computers,
Programming
Parts of a Computer
• User Interface
– monitor (screen), mouse,
keyboard, printer
• Brain - Central
Processing Unit
– can do math and logic
operations
• Memory - Storage
– cache – fastest
– main - RAM
– secondary – Disks, CDROMs, DVDs
Intro CS, Computers,
Programming
CPU – Brain of the Computer
• Arithmetic/Logic Unit
(ALU)
– Does math and logic
calculations on
numbers in registers
• Control Unit
– Reads instructions
from memory and
decodes and executes
them using the ALU
Intro CS, Computers,
Programming
345
263
608
Add register A
to register B
Store the value
in register C into
memory location
320843202
Fetch, Decode, Execute Cycle
• The control unit reads (fetches) an
instruction from memory
• The control unit decodes the instruction
and sets up the hardware to do the
instruction
– like add the values in the A and B registers
and put the result in the C register
• The instruction is executed
• The program counter is incremented to
read the next instruction
Intro CS, Computers,
Programming
Processor Speed
• Processors (CPUs) have
a clock
• Clock speed is measured
gigahertz (GHz)
• Some instructions take
just 2-3 clock cycles,
some take more
• When the clock speed
increases the computer
can execute instructions
faster
Intro CS, Computers,
Programming
Memory
• Computer memory is
used to store data
• The smallest unit of
memory is a bit (Binary
digIT)
• A bit can be off (no
voltage) or on (has
voltage) which we
interpret to be 0 or 1
• Memory is organized into
8 bit contiguous groups
called bytes. A megabyte
is 1,048,576 bytes (over 1
million bytes). A gigabyte
is over 1 billion bytes.
Intro CS, Computers,
Programming
How does Memory Represent Values?
• The different patterns of the on and off bits in a
byte determine the value stored
• Numbers are stored using binary numbers
– 101 is 1 * 20 + 0 * 21 + 1 * 22 = 5
• Characters are internally represented as
numbers
– Different numbers represent different characters
– There are several systems for assigning numbers to
characters:
• ASCII, EBCDIC, and Unicode
Intro CS, Computers,
Programming
Encodings Make Computer Powerful
• Voltages are interpreted as numbers
• Numbers can be interpreted as characters
• Characters can be interpreted to be part of
a link to Sun’s Java Site
<a href=http://java.sun.com>Sun’s Java Site </a>
a
0100 0001
off on off off off off off on
Intro CS, Computers,
Programming
Notepad Exercise
• Open notepad and type a
sentence in it
• Save the file
• Check the size in bytes
by leaving the cursor over
the file name
– Or right click and check
properties
• Now count the number of
letters and spaces
Intro CS, Computers,
Programming
Binary Numbers
• We usually work with decimal numbers
with digits from 0 to 9 and powers of 10
7313 = (7 * 1000 + 3 * 100 + 1 * 10 + 3 * 1)
Or (7 * 103 + 3 * 102 + 1 * 101 + 3 * 100)
• The binary number system uses digits 0
and 1 and powers of 2
0101 = (0 * 23 + 1 * 22 + 0 * 21 + 1 *20)
(0 * 8 + 1 * 4 + 0 * 2 + 1 * 1) = 5
Intro CS, Computers,
Programming
Binary Addition
• To add two decimal
numbers you add the
digits and if the total is
greater than ten you carry
the one into the next
column
• To add two binary
numbers
– 0+0=0
– 0 + 1 and 1 + 0 = 1
– 1 + 1 = 0 with a carry of 1
into the next column to the
left
00
01
---01
10
01
--11
00111001010
01010101101
------------------10001110111
Intro CS, Computers,
Programming
111
001
-----1000
2’s Compliment Notation
• Computers actually only know how to add
– So, how do they handle subtraction?
• Computers subtract by adding a negative
number
• How do you represent a negative number
in memory?
– Positive numbers in 2’s compliment are just
the same as a binary number
– For negative numbers reverse 0s and 1s and
then add 1
Intro CS, Computers,
Programming
2’s Compliment Example
• To subtract 3 from 7
• First represent both as a binary number
– 7 is 0000 0111
– 3 is 0000 0011
• Reverse the 0s and 1s and then add 1 to
get -3
– 0000 0011 reversed is 1111 1100
– add 1
0000 0001
– The result is
1111 1101
Intro CS, Computers,
Programming
Add the Negative Number
• To subtract 3 from 7
• Add -3 to 7
– 7 is
– -3 is
– The result is
0000 0111
1111 1101
1 0000 0100
• Through away the leftmost 1
• The answer is 0000 0100 which is 4
Intro CS, Computers,
Programming
Patterns Exercise
• How many different patterns of on and off
bits are there in 3 bits? How many in 4
bits? How many in 8 bits?
• 000 is one pattern
• 001 is another pattern
• 010 is another pattern
Intro CS, Computers,
Programming
Does the number of patterns matter?
• Some garage door
openers in the 70s
used 8 bits to set the
code to use to open
the door
– Giving 256 different
patterns
– Which is enough that
you won’t open your
neighbors door
– But small enough that
someone could try
each one
Intro CS, Computers,
Programming
Remote Entry Systems
• With 8 bits for a code you
have a 1/256 chance of a
random code working
– You don’t want someone
opening your car in a place
with lots of cars (like a
mall)
• There are also radio
scanners that can capture
your code
– So you want the code to
change each time
• Modern remote entry
systems use a 40 bit
rolling code
Intro CS, Computers,
Programming
Types of Memory
• Registers
– Very high speed temporary storage areas for use in
the CPU
• Cache
– High speed temporary storage for use with the CPU
• Main Memory – Random-access Memory (RAM)
– High speed temporary storage
– Contains programs and data currently being used
– Often described in Megabytes (MB)
• Secondary Memory - Disks
– Contains programs and data not currently being used
– Often described in Gigabytes (GB)
Intro CS, Computers,
Programming
Why are there so many types of memory?
• The faster memory is the more it costs
– So we reduce the cost by using small
amounts of expensive memory (registers,
cache, and RAM) and large amounts of
cheaper memory (disks)
• Why do we need cache?
– Processors are very fast and need quick
access to lots of data
– Cache provides quick access to data from
RAM
Intro CS, Computers,
Programming
What can Computers Do?
• Add, subtract, multiply, and divide
numbers in registers
• Logic operations on numbers in registers
– Less than, greater than, equal to
– When true jump to a new instruction
• Move data between types of memory and
to other input and output devices
Intro CS, Computers,
Programming
Vocabulary Exercise
• Look at two computer
advertisements
• See if you can figure out what all
the words mean
• Use the internet to look up
unfamiliar words
– http://computer.howstuffworks.com/
– http://en.wikipedia.org/
– http://webopedia.com
• Which one is a better for
computer games?
• Which one is better for your
homework?
Intro CS, Computers,
Programming
What is an algorithm?
• A description of how to solve a problem.
– It can be in English.
• The number of squares in a cube of n * n
sides is n * n + (n-1) * (n – 1) + (n – 2) + (n
– 2) … + 1.
• Can you write an algorithm for how you
get to school?
Intro CS, Computers,
Programming
What is a Computer Program?
• Instructions to a
computer that allow it
to process some data
• You can think of it like
a recipe
– It contains instructions
– Processes ingredients
to produce a result
– You can use the same
recipe over and over
Intro CS, Computers,
Programming
Computer Languages
• Each processor has its own language
– Machine language
– 0001 may be the instruction for adding two registers
• Assembly language is a low-level language
– Has the same instructions as machine language but
allows people to use names for the instructions
instead of numeric codes (like ADD)
– An assembler translates the names into the numeric
machine language
– Executes very fast
– Slow for programming
Intro CS, Computers,
Programming
Programming is About Naming
• Computers can associate names with
anything
– A byte
– A group of bytes
– A group of letters
– A file
– A picture
– A program, recipe, or function (method)
– A type (class)
Intro CS, Computers,
Programming
File Names
• Operating systems
associate file names with
locations on your hard
disk
– A hard disk stores values
even after the power is
turned off
• When you double click
on a file
– The operating system
reads the data starting at
that location into RAM
Intro CS, Computers,
Programming
Names for Values
• When work with data in main memory we
will usually assign a name to it.
– Rather than remember the address in
memory
• The computer associates the name with the
address for us
• Programs are like algebra
– Where you use names to make the equations
make sense
• PV=nRT or e=Mc2
Intro CS, Computers,
Programming
Programs are for People
• The computer doesn’t care what names
we use
• The names are important so that our
programs are understandable
– To us
– To others
• Names should be appropriate
– Not too long or confusing
Intro CS, Computers,
Programming
High Level Languages
• Are translated (compiled) into machine
language or assembly language
• Contains more instructions than in the
original machine language
– Which translate into several machine
language instructions
• May have slower execution speed than an
assembly language program
• Easier and faster for writing programs
Intro CS, Computers,
Programming
Programming Languages
• A set of names that have encodings
– Some names allow us to define new
encodings
• You can assign a name to represent a
value (we call this a variable)
• You can assign a name to represent a
function or procedure (method)
• You can assign a name to a collection of
related variables and functions/procedures
(class)
Intro CS, Computers,
Programming
FORTRAN
• Acronym for formula translator
• The first high-level language
• Developed in the 1950s at IBM by John
Backus
• Mostly used for scientific applications that
require extensive mathematical
computations.
• There have been several versions
Intro CS, Computers,
Programming
COBOL
• Acronym for common business oriented
language.
• Developed in the late 1950s and early
1960s by the Conference on Data
Systems and Languages (CODASYL).
• Popular for business applications that run
on large computers
• Meant to be easy to read
– Very wordy to program
Intro CS, Computers,
Programming
BASIC
• Acronym for Beginner's All-purpose
Symbolic Instruction Code.
• Developed in the mid 1960s at Dartmouth
College by John G. Kemeny and Thomas
E. Kurtz
• Mostly used in business and education
• VisualBasic is a form of BASIC created by
MicroSoft that uses visual programming
– Good for graphical user interfaces
Intro CS, Computers,
Programming
C
• Developed by Dennis Ritchie at Bell Labs
in the mid 1970s
• Originally a systems programming
language
– Closer to machine language than other highlevel languages
– Used to develop the UNIX operating system
• Popular in business and science in the 80s
• Used on personal computers because took less
memory than other computer languages
Intro CS, Computers,
Programming
C++
• Developed by Bjarne Stroustrup at Bell
Labs in 1986
• Added object-oriented features to its
predecessor, C.
• Very popular in the late 80s to 90s
• Popular for 3-d graphics
Intro CS, Computers,
Programming
Java
• Developed at Sun in the early 1990s
– Invented by James Gosling
• Similar to C++ in syntax but easier to use
– Java is C++ --
• Cross-platform, object-oriented language
• Used in business, science, and education
• One of the fastest adopted technologies of
all time
Intro CS, Computers,
Programming
C#
• Microsoft developed object-oriented
language for the .NET platform
• Created by Anders Hejlsberg (author of
Turbo Pascal and architect of Delphi), Scot
Wiltamuth, and Peter Golde
• Similar to Java
– Garbage collection
– No explicit pointers
– Doesn’t compile to machine language
• Common language runtime (CLR)
Intro CS, Computers,
Programming
Which Language?
• All high-level languages are eventually
translated into machine language
• You can write the same program in any
language
– The computer doesn’t care what high-level
language you use
• The language matters to the programmer
– How long does it take to write the program?
– How hard is it to change the program?
– How long does it take to execute?
Intro CS, Computers,
Programming
Why Don’t We Just Use English?
• English is good for
communication between two
intelligent humans
– Even then we sometimes don’t
understand
• Computers are very stupid
– They basically know how to
add, compare, store, and load
– Programs are very detailed
instructions
• Everything must be precise and
unambiguous
Intro CS, Computers,
Programming
Programming Exercise
• Write down
instructions for how to
play a game or how to
make a sandwich
• Have another group
read the directions
and do the actions
– stop anytime anything
isn’t clear and ask for
clarification
Intro CS, Computers,
Programming
Why Learn to Program?
• Alan Perlis, first head of Carnegie Mellon's
Computer Science Department, made the claim
in 1961 that computer science, and
programming explicitly, should be part of a
liberal education
• Seymour Papert claimed in the 70’s and 80’s
that learning to program is “learning to think, and
debug one’s own thoughts.”
– If you learned to program, you learned to plan, to
debug, to handle complexity, etc.
• Twenty years of research found that that is
simply not true.
• Most people don’t learn to program
Intro CS, Computers,
Programming
So, Why Learn to Program?
• The computer is the most
amazingly creative device
that humans have ever
conceived of. If you can
imagine it, you can make
it “real” on a computer.
• Computers will continue
to have a major impact on
modern life
– Movies, games, business,
healthcare, science,
education, etc
Intro CS, Computers,
Programming
Computers Are Commonplace
• Computers, or at least
processors, are in
many common
devices
Intro CS, Computers,
Programming
Programming is Communicating
• Alan Perlis, “You think
you know when you
can learn, are more
sure when you can
write, even more
when you can teach,
but certain when you
can program.”
Intro CS, Computers,
Programming
Summary
• Computers are fairly simple machines
– Fancy calculators with lots of storage
– But incredibly fast
• Computers have changed modern life
• An algorithm is a textual description of how to
solve a problem.
• Programs are instructions to a computer to
accomplish a task
• Programs written in high-level languages are
translated to machine or assembly language by
a compiler
Intro CS, Computers,
Programming