============================================================================ ============================================================================ CS162 LECTURE: May 5, 2005 Professor: Smith BY Levy Klots (cs162-bv) ============================================================================ ============================================================================ Reading Assignment: ------------------- Read "Hints for Computer System Design" by Butler W. Lampson in the reader. ============================================================================ LECTURE ============================================================================ ======================================== TOPIC: Intro to Butler W. Lampson ======================================== Butler W. Lampson was a faculty member of Berkeley. He started a company called Berkeley Computer Corporation (1969-1971). The company was heavy into research, but it did not have any commercial breakthrough. Here is a quote from Butler about his company: "With the SDS 940 group from Berkeley, I founded a computer company to make large time-sharing systems. I did the overall design of the operating system, including the functions of the three specialized micro-coded processors which do most of the overhead work [6]. I also implemented the scheduling micro-processor and parts of the terminal-handling micro-processor [19]. One machine was built and ran successfully at the University of Hawaii for a number of years, though the company was a commercial failure." Butler continued to do research oriented work through out his career. Most notably working working in research parks as Zerox and Microsoft. To have a monopoly, like Intel and Microsoft, is an important aspect in allowing a research center to be profitable. Question: What about Google Labs? Professor: Google Labs is a very young research lab that has made a name for itself by creating new and innovative products. Question: What's the purpose of research lab? Professor: Benefit the stock holders in order to aid the profitability. Researches is tenuous so its budget tends to get cut when companies are not making a profit. ---------------------------------------- ASIDE: The Japanese miracle ---------------------------------------- Americans were blown away in the 70's - 80's by the Japanese who finished developing projects that were killed in the US. Imagine you start with 25 good ideas, 10 get funded, but slowly the projects get killed off until only 2 profitable ones left. Japan on the other hand doesn't kill until after 4th try at the project, but they have too many failures to make a profit. An example of this is 5th generation AI systems, where a lot of money was pumped into research institutes developing insane projects that never made it off the ground. Reasearch is a very difficult thing to do well, so one should not expect to make much off it. A study was conducted in early 90s about Japan versus US profitability. It was found that US had 15% increase in growth and japan only 3%. Question: I went to a research thing in Japan last summer in one of their best universities and they didn't have a CS department. The closest thing they had was ME. Professor: Japan is not known for its software. Although, Japan has good translation and recognition software besides that there is nothing. ---------------------------------------- END ASIDE ---------------------------------------- ======================================== TOPIC: Quotes in Hints for Computer System Design ======================================== These are quotes taken from Butler's text that Prof. Smith throught were particularly noteworthy. Some of the quotes include a short explanation of what they mean - others are more self-apparent. QUOTE 1: -------- "After the second system [6] comes the fourth one." When people start with the initial design of a project, they want to make the second system implement all those features that would make the system "great". They soon discover that this is too ambitious. In the third design they decide to remove features in order to make the product usable. But as it happens, by the time the fourth design comes around - people forget about their previous mistake, and the fourth system becomes also much too ambitious. QUOTE 2: -------- "Smart people get you out of ditches you shouldn't be in the first place." But just because you are smart, it does not mean that you know what you are doing. QUOTE 3: -------- "Interface design must satisfy three conflicting requirements: an interface should be simple, it should be complete, and it should admit a sufficiently small and fast implementation." Interface design is one of the most difficult and important things when developing a product. Question: What kind of interface is he referring to? Professor: All interfaces -- application, protocol, etc. QUOTE 4: -------- "Do one thing at a time, and do it well." Especially true of interfaces. QUOTE 5: -------- "Everything should be made as simple as possible, but no simpler. (A. Einstein)" If it doesn't do anything you want it to do, it's too simple. QUOTE 6: -------- "Get it right. Neither abstraction nor simplicity is a substitute for getting it right." QUOTE 7: -------- "Make it fast, rather than general or powerful. If it's fast, the client can program the function it wants, and another client can program some other function." QUOTE 8: -------- "The trouble with slow, powerful operations is that the client who doesn't want the power pays more for the basic function. Usually it turns out that the powerful operation is not the right one." If basic operation is slow and complicated, you can't make it any faster if you build on top of it faster operations. QUOTE 9: -------- "It is normal for 80% of the time to be spent in 20% of the code, but a priori analysis or intuition usually can't find the 20% with any certainty." You know there's going to be bottleneck, but you don't know what it's going to be. QUOTE 10: -------- "When a low level of abstraction allows something to be done quickly, higher levels should not bury this power inside something more general. The purpose of abstractions is to conceal undesirable properties; desirable ones should not be hidden." For example x86 MIPS is something you want to hide. QUOTE 11: --------- "Keep basic interfaces stable. Since an interface embodies assumptions that are shared by more than one part of a system, and sometimes by a great many parts, it is very desirable not to change the interface." Microsoft and Intel are successful because they maintain their interfaces; people are locked into them. QUOTE 12: --------- "Plan to throw one away; you will anyhow [6]. If there is anything new about the function of a system, the first implementation will have to be redone completely to achieve a satisfactory (that is, acceptably small, fast, and maintainable) result. It costs a lot less if you plan to have a prototype." Building something right first time is very hard. You can't take a system that's not quite right and fix it. You should start from scratch. It's better and faster that way. QUOTE 13: --------- "It pays to revisit old decisions as the system evolves; in particular, optimizations for particular properties of the load or the environment (memory size, for example) often come to be far from optimal." QUOTE 14: --------- "Keep secrets of the implementation. Secrets are assumptions about an implementation that client programs are not allowed to make (paraphrased from [5]). In other words, they are things that can change." 7000 IBM series had bit patters that were invalid, but they did useful stuff so people started use them. So IBM had to implement those op codes. You don't want people to by pass your interfaces; otherwise you are stuck to stay compatible with what they did. QUOTE 15: --------- "Handle normal and worst cases separately as a rule, because the requirements for the two are quite different. The normal case must be fast. The worst case must make some progress. In most systems it is all right to schedule unfairly and give no service to some of the processes, or even to deadlock the entire system, as long as this event is detected automatically and doesn't happen too often. The usual recovery is by crashing some processes, or even the entire system. At first this sounds terrible, but one crash a week is usually a cheap price to pay for 20% better performance." QUOTE 16: --------- "When in doubt, use brute force." QUOTE 17: --------- "Doing things incrementally almost always costs more" QUOTE 18: --------- "A system cannot be expected to function well if the demand for any resource exceeds two-thirds of the capacity, unless the load can be characterized extremely well. Only the crudes parameters produce the most success schemes." By doing research studies you can improve things by 3%. In the longer there is not enough difference being made. And since these tests are not usually run on real-world system, it's not clear if things really have improved. QUOTE 19: --------- "Shed load to control demand, rather than allowing the system to become overloaded." It's like a red button for user to push if anything doesn't work. Either fix the problem or kick the user off. It's to keep people away from terminal. Serve me right away, or go home. Like buying a ticket, if you see a long line, you can decide to go home and come back later. QUOTE 20: --------- "Making a system reliable is not really hard, if you know how to go about it. But retrofitting reliability to an existing design is very difficult." Microsoft is like a Swiss cheese, full of holes. They patch up one after another, and sometimes one gets patched up which create new ones. Student: How does Microsoft patch their software? Professor: they can do binary patches. QUOTE 21: --------- "End-to-end. Error recovery at the application level is absolutely necessary for a reliable system, and any other error detection or recovery is not logically necessary but is strictly for performance." ======================================== TOPIC: Graduate School ======================================== QUESTIONS: Q1: Why grad school? (1) Bachelor's degree not sufficient training. (2) Advanced degree good for career * Getting job * Affects type of work you do (3) Make contacts, friends, social networking * It's your friends that tell you about openings. (4) People take you more seriously (5) Good salary ----------------------------- Career center salary figures: ----------------------------- BS DEGREE Year num of people reported ave-salary 2000 116 62301 2001 104 64806 2003 54 55814 MS DEGREE 2001 13 72692 2003 11 74595 Q2: Which degree? Bs - basic technical work Ms - more design responsibility, more id Ph d - research, design, teaching Other degrees - law, med, management Q3: When to apply? * Deadlines between November-January for fall. * Some schools admit in mid-year. Q4: Now or later? * You appreciate grad school more and get more out of it if you work for a while. * It is difficult to return to school after work but you know how to get things done. You will be more successful. Q5: How long does it take? Ms - 1 to 3 years. (depend on thesis/project) phD - 3 to 10 years, 5-6 av. Increasing. Q6: Where to go? * Try to go to a good school * Personal opinion in a reasonable location * Large departments give you a choice of faculty and area of concentration. But some departments are strong or weak in certain areas. ASIDE: Professor spends 10 minutes making fun of Purdue because someone complained when he made fun of Carnegie Mellon and Pittsburg. Q7: Where are you going to get in? * Depend on grades, gre's recommendations, and personal statement. * Some faculty emphasize "smart"; some emphasize research experience. * Statement should make sense, not say anything stupid. Make sure grammar, spelling are okay. * Professor Smith look at grade and gre more, he wants smart people. Q8: What about recommendations? * Typically 3 required. * Can supply more if you have both industrial and academic recommenders, such as 3 from the industry and 3 from academia. * But more are not necessarily better. Try to use the original form (it has boxes to check). Q9: What about financial support? * At good schools, almost all PHD students are supported: * Fellowships * Research assistantships * Teaching assistantships * At weaker schools, support may or may not be provided * MS students get support only if funds available. Q10: Can I stay at Berkeley? * Generally recommended to change schools * But not if quality/location far inferior Q11: What are good schools? -------------------------------------------------------------------- 1993 NAS Study School Rankings -------------------------------------------------------------------- Stanford 4.97 MIT 4.91 UC Berkeley 4.88 CMU 4.76 Cornell 4.64 Princeton 4.31 UT Austin 4.18 U Illinois 4.09 U. Washington 4.04 U. Wisconsin 4.00 Harvard 3.94 Cal Tech 3.93 Brown 3.86 UCLA 3.73 Yale 3.73 U. Maryland 3.69 NYU 3.60 U. Mass 3.59 Rice 3.55 USC 3.52 U. Michigan 3.49 Columbia 3.45 UCSD 3.45 (probably top 10 now) U. Chicago 3.31 U. Penn. 3.31 Purdue 3.28 Rutgers 3.25 Duke 3.17 U. North Carolina 3.16 (good graphics prog) U. Rochester 3.13 SUNY Stony Brook 3.12 Georgia Tech 3.10 (specializes in user interface and interaction) U. Arizona 3.05 UC Irvine 3.03 U. Virginia 3.02 Indiana U. 3.00 Northwestern 3.00 Johns Hopkins 2.96 Ohio State 2.92 U. Colorado 2.90 U. Utah 2.90 Oregon Grad Inst. 2.83 U. Pittsburgh 2.81 Syracuse U. 2.80 U. Florida 2.70 U. Minnesota 2.67 UCSB 2.65 RPI 2.63 UCSC 2.59 U. Ill. Chicago 2.56 Washington U 2.54 Michigan State 2.53 Penn State 2.52 CUNY 2.52 Dartmouth 2.45 Boston U. 2.42 UC Davis 2.42 SUNY Buffalo 2.42 NC State 2.36 Arizona State 2.33 U. Iowa 2.31 Texas A&M 2.30 U. Oregon 2.20 U. Kentucky 2.12 -------------------------------------------------------------------- US News 2005 CS Graduate School Rankings -------------------------------------------------------------------- 1. Carnegie Mellon University (PA) 4.9 Massachusetts Institute of Technology 4.9 Stanford University (CA) 4.9 University of California?Berkeley 4.9 5. University of Illinois?Urbana-Champaign 4.6 6. Cornell University (NY) 4.5 7. University of Texas?Austin 4.4 University of Washington 4.4 9. Princeton University (NJ) 4.3 10. California Institute of Technology 4.1 University of Wisconsin?Madison 4.1 12. Georgia Institute of Technology 4.0 University of Maryland?College Park 4.0 14. Brown University (RI) 3.9 University of California?Los Angeles 3.9 University of Michigan?Ann Arbor 3.9 17. Rice University (TX) 3.8 University of North Carolina?Chapel Hill 3.8 University of Pennsylvania 3.8 20. Columbia University (NY) 3.7 Duke University (NC) 3.7 Harvard University (MA) 3.7 Purdue University?West Lafayette (IN) 3.7 University of California?San Diego 3.7 25. University of Massachusetts?Amherst 3.6 Yale University (CT) 3.6 27. University of Southern California 3.5 University of Virginia 3.5 29. Johns Hopkins University (MD) 3.3 New York University 3.3 Rutgers State University?New Brunswick (NJ) 3.3 SUNY?Stony Brook 3.3 University of California?Irvine 3.3 University of Utah 3.3 35. Ohio State University 3.2 Penn State University?University Park 3.2 University of Arizona 3.2 University of Chicago 3.2 University of Colorado?Boulder 3.2 University of Minnesota?Twin Cities 3.2 Washington University in St. Louis 3.2 42. Indiana University?Bloomington 3.1 Northwestern University (IL) 3.1 University of California?Davis 3.1 University of Rochester (NY) 3.1 Virginia Tech 3.1 47. Dartmouth College (NH) 3.0 University of Florida 3.0 49. Michigan State University 2.9 North Carolina State University 2.9 Rensselaer Polytechnic Institute (NY) 2.9 Texas A&M University?College Station 2.9 University of California?Santa Barbara 2.9 University of Pittsburgh 2.9 55. Arizona State University 2.7 SUNY?Buffalo 2.7 Syracuse University (NY) 2.7 University of California?Santa Cruz 2.7 University of Illinois?Chicago 2.7 60. Boston University 2.6 Iowa State University 2.6 OGI School of Science & Engineering?Oregon Health & Science U. 2.6 University of Delaware 2.6 University of Iowa 2.6 University of Oregon 2.6 Vanderbilt University (TN) 2.6 67. Case Western Reserve University (OH) 2.5 Northeastern University (MA) 2.5 Oregon State University 2.5 URLS: http://www.cs.rochester.edu/u/leblanc/nas-rankings.html http://www.research.sunysb.edu/research/nrcdata.html#discindex http://www.usnews.com