Download presentation
Presentation is loading. Please wait.
1
What makes a good language Does the task you want Keeps you from making mistakes Supports debugging when you need it Has a strong tool kit
2
Big number bug On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after its lift-off from Kourou, French Guiana. The rocket was on its first voyage, after a decade of development costing $7 billion. The destroyed rocket and its cargo were valued at $500 million. A board of inquiry investigated the causes of the explosion and in two weeks issued a report. It turned out that the cause of the failure was a software error in the inertial reference system. Specifically, a 64 bit floating point number relating to the horizontal velocity of the rocket with respect to the platform was converted to a 16 bit signed integer. The number was larger than 32,768, the largest integer that could be stored in a 16 bit signed integer, and so the conversion failed.
3
Pentium II bug Software bug encoded in hardware Division algorithm uses a lookup table of 1066 entries Only 1061 of the entries are downloaded to the PLA (programmed logic array from which the data are used) Intel had to recall all versions of the chip
4
Syntax “typo” bugs NASA Mariner 1, Venus probe (1992) Intended to be the first US spacecraft to visit another planet, it was destroyed by a range officer on 22 July 1962 when it behaved erratically four minutes after launch. –Essentially a period instead of a comma in a FORTRAN DO-Loop
5
Control flow bug AT&T long distance service fails for nine hours (Wrong BREAK statement in C code) January 15, 1990: 70 million of 138 million long distance customers in the US lost long distance service. Cost to ATT was between $ 75 Million and $100 Million (plus the loss of good will).
6
E-mail buffer overflow (1998) Several E-mail systems suffer from a "buffer overflow error", when extremely long e-mail addresses are received. The internal buffers receiving the addresses do not check for length and allow their buffers to overflow causing the applications to crash. Hostile hackers use this fault to trick the computer into running a malicious program in its place. Data structure management bug
7
Summary Programming is difficult –Have to thoroughly understand the task –Have to anticipate all possibilities –Code is written at a fairly primitive level –Impossible to anticipate what users might do Programming languages allow the user to use tools to build code But everything still has bugs The cost of a bug can be very large There is no Moore’s Law for software.
8
The big picture We built a computer We talked about languages and compilers to make programming the computer easier Next we talk about algorithms, which are implemented by programs
9
Algorithms Recipes for doing computations The underpinnings of programming –Think out your algorithm –Show that it works –Determine it’s efficiency –Write it as a program
10
What is an algorithm Algorithm is a recipe Has –Inputs –Rules –Evaluation Criteria –Output
11
When Do We Use Algorithms When we have a problem to solve Examples of problems –Baking cookies –Putting things in alphabetical order –Searching the Web
12
Chocolate chip cookies
13
Input –flour (2 ¼ c) –baking soda (1t) –salt (1t) –butter (1c) –granulated sugar (3/4 c) –brown sugar(3/4c) –vanilla(1t) –eggs (2) –chocolate chip morsels (2c) –chopped nuts (1c) Output –5 dozen cookies
14
Chocolate chip cookies: Steps Combine flour, baking soda, and salt in small bowl. Beat butter, granulated sugar, brown sugar and vanilla in large bowl Add eggs one at a time Beating after adding each egg Gradually beat in flour mixture Stir in morsels and nuts Drop by rounded tablespoons onto ungreased baking sheets Bake 9-11 minutes Let stand for 2 minutes
15
Chocolate chip cookie algorithm Primitives –Inputs Flour, baking soda, salt, butter, brown sugar, granulated sugar, vanilla, egg, morsels, nuts Alternatively, chocolate chip cookie mix Alternatively, wheat, sugar cane, … –Operators Combine, Beat, Gradually beat, Stir, Drop, Bake, Let stand
16
Chocolate chip cookie algorithm Execution –First 2 steps can be done in parallel? Parbegin (Combine(),Beat()) Parend –Machine dependencies Ovens vary (Bake 9-11 minutes) Ingredients vary and so need to be handled differently
17
Chocolate chip cookie algorithm Algorithm testing –Proof of the pudding is in the eating –How do we mechanize this?
18
Chocolate chip cookie algorithm Comparing different algorithms –Quality of results –User time –Machine (oven) time
19
Putting things in alphabetical order Data set sizes –Course list for COS 11110-15 students –PU directory assistance10,000 people –Manhattan phone book1 million people –Social Security database1 billion records –Long distance call billing records 100 billion/year Different methods for different tasks –Fast for large –Simple for small
20
A simple method for sorting Find smallest value -- put it first in list Find second smallest value -- put it second … Find next smallest value – put it next … When no more values, you’re done
21
How it works 57 190 219 34
22
How it works Find smallest value -- put it first in list 57 190 219 34 190 219 57
23
How it works Find second smallest value -- put it second 57 190 219 34 190 219 57 34 57 219 190
24
How it works Finish the sorting 57 190 219 34 190 219 57 34 57 219 190 34 57 190 219
25
A simple method for sorting To sort array x = {x[1],x[2], …, x[n]} For I = 1 to n For J = I+1 to n If (x[I] > x[J]) Then swap their values next
26
Another sorting algorithm Sorting by Merging Key idea It’s easy to merge 2 sorted lists
27
Merging 2 sorted lists 190 219 463 155 255 355
28
Merging 2 sorted lists 190 219 463 155 255 355 Start at the top of each list
29
Merging 2 sorted lists 190 219 463 155 255 355 190 is bigger than 155
30
Merging 2 sorted lists 190 219 463 155 255 355 155 Record 155 and move the arrow
31
Merging 2 sorted lists 190 219 463 155 255 355 155 190 190 is less than 255
32
Merging 2 sorted lists 190 219 463 155 255 355 155 190 219 219 is less than 255
33
Merging 2 sorted lists 190 219 463 155 255 355 155 190 219 255 255 is less than 463
34
Merging 2 sorted lists 190 219 463 155 255 355 155 190 219 255 355 463 Finished when at the end of each list
35
Sorting by Merging Key idea It’s easy to merge 2 sorted lists Sort larger lists by –Sorting smaller lists –Merging the results How do we sort smaller lists?
36
Sort then merge 157 227 345 134 157 227 345 134 Subdivide
37
Sort then merge 157 227 345 134 157 227 345 134 157 227 134 345 Subdivide Sort pieces By merging
38
Sort then merge 157 227 345 134 157 227 345 134 157 227 134 345 134 157 227 345 Subdivide Sort piecesMerge
39
SortMerge algorithm Function SortMerge(x,1,n) -- sort list of n elements x If n = 1 then Return -- nothing to sort End if Mid = (1+ n)/2-- midpoint of list SortMerge(x,1, Mid )-- sort first half of list SortMerge(x, Mid +1, n)-- sort second half of list Merge(x,1, Mid, Mid +1, n)-- merge sorted halves End Function
40
Does it work? Have to be careful about stopping There are always a lot of things going on Sort(n) Sort(n/2) Merge Sort(n/4) Merge Sort(n/2) Merge Sort(n/8) Merge Sort(n/4) Merge Sort(n/2) Merge
41
Divide and conquer Use recursion –reduce solving for problem of size n to solving two problems of size n/2 –then combine the solutions S(n) = 2 S(n/2) + M(n/2,n/2) Solving a sorting problem of size n requires solving 2 sorting problems of size n/2 and doing a merge of 2 sets of size n/2
42
Comparing running times NInsertion (ms) SortMerge(ms) 1001 0 2002 0 100058 1 10,0005841 11 100,000626943 162 1,000,00070626916 3421
43
Comparing running times NInsertion (ms) SortMerge(ms) 1001 0 2002 0 100058 1 10,0005841 11 100,000626943 162 1,000,00070626916 3421 Reducing 20 hours to 3 seconds
44
Searching Once a list is in alphabetical order, how do you find things in it? For example, is COS 111 on the list of courses that satisfy the (EC) Epistemology and Cognition requirement?
45
EC courses PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI 321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY 316 AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200
46
Searching for COS 111 Compare to the middle AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200 PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI 321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY 316 COS 111
47
Searching Compare to the middle If smaller search first half If larger search second half AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200 PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI 321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY 316 COS 111
48
Repeat Compare to the middle If smaller search first half If larger search second half AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200 COS 111
49
Building indices PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI 321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY 316 AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200 AAS ANT COS FRS GER HUM LIN PHI PSY
50
Search indices then data PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI 321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY 316 AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER 306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI 200 AAS ANT COS FRS GER HUM LIN PHI PSY COS 111
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.