
2dd0fba3b96ef4c3e37ee50ef7563589.ppt
- Количество слайдов: 50
Introduction to Computer Science, Computers, and Programming Barbara Ericson Georgia Tech Aug 2009
Learning Goals • • • What is Computer Science? What do Computer Scientist do? Why study Computer Science? What is a computer? What can computers do?
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?
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
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/AY 2006/cs 4480_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
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
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
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 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
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
Memory • Computer memory is used to store data • The smallest unit of memory is a bit (Binary dig. IT) • 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.
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
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 on
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
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
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 0101101 ---------1000111 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 0 s and 1 s and then add 1
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 0 s and 1 s and then add 1 to get -3 – 0000 0011 reversed is 1111 1100 – add 1 0000 0001 – The result is 1111 1101
Add the Negative Number • To subtract 3 from 7 • Add -3 to 7 – 7 is – -3 is – The result is 0000 0111 1101 1 0000 0100 • Through away the leftmost 1 • The answer is 0000 0100 which is 4
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
Does the number of patterns matter? • Some garage door openers in the 70 s 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
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 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
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)
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
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
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?
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) … + 1. • Can you write an algorithm for how you get to school?
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
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
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)
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
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=n. RT or e=Mc 2
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
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
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)
FORTRAN • Acronym formula translator • The first high-level language • Developed in the 1950 s at IBM by John Backus • Mostly used for scientific applications that require extensive mathematical computations. • There have been several versions
COBOL • Acronym for common business oriented language. • Developed in the late 1950 s and early 1960 s 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
BASIC • Acronym for Beginner's All-purpose Symbolic Instruction Code. • Developed in the mid 1960 s at Dartmouth College by John G. Kemeny and Thomas E. Kurtz • Mostly used in business and education • Visual. Basic is a form of BASIC created by Micro. Soft that uses visual programming – Good for graphical user interfaces
C • Developed by Dennis Ritchie at Bell Labs in the mid 1970 s • 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 80 s • Used on personal computers because took less memory than other computer languages
C++ • Developed by Bjarne Stroustrup at Bell Labs in 1986 • Added object-oriented features to its predecessor, C. • Very popular in the late 80 s to 90 s • Popular for 3 -d graphics
Java • Developed at Sun in the early 1990 s – 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
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)
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?
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
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
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 is simply not true. • Most people don’t learn to program
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
Computers Are Commonplace • Computers, or at least processors, are in many common devices
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. ”
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
2dd0fba3b96ef4c3e37ee50ef7563589.ppt