Computer Science Comprehensive Examinations 1978/79 - 1980/81
Total Page:16
File Type:pdf, Size:1020Kb
August 1981 Report. No. STAN-(2581-869 Computer Science Comprehensive Examinations 1978/79 - 1980/81 edited by Carolyn E. Tajnai Department of Computer Science Stanford University Stanford, CA 94305 . L Computer Science Comprehensive Examinations 1978/79- 198W81 edited by Carolyn E. Tajnai Department of Computer Science Stanford University Stanford, CA 94305 Abstract The Stanford Computer Science Comprehensive Examination was conceived Spring Quarter 1971/72 and since then has been given winter and spring quarters each year. The Camp serves several purposes in the department. There are no course requirements in the Ph.D. and the Ph.D. Minor programs, and only one (CS293, Computer Laboratory) in the Master’s program. Therefore, the Comp fulfills the breadth and depth requirements. The Ph.D. Minor and Master’s student must pass at the Master’s level to be eligible for the degree. For the Ph.D. student it serves as a “Rite of Passage;” the exam must be passed at the Ph.D. level by the end of six quarters of full-time study (excluding summers) for the student to continue in the program. This report is a collection of comprehensive examinations from Winter Quarter 1978/79 through Spring Quarter 1980181. Foreword In November, 1978, Frank Liang published the first collection of Computer Science Department Comprehensive Examinations, STAN-CS-75-677, and the document proved to be a tremendous success. No attempt has been made to emulate Frank’s style; this collection is strictly utilitarian. The comprehensive examination serves severa! purposes in the department. There are no course requirements in the Ph.D. and the Ph.D. Minor programs, and only one (CS293, Compuler Laboratory) in the Master’s program. Therefore, the comprehensive fulfills the breadth and depth requirement. The Ph.D. Minor and Master’s student must pass the exam at the Master’s level to be eligible for the degree. For the Ph.D. student it serves as a “Rite of Passage;” the exam must be passed at the Ph.D. level by the end of six quarters of full-time study (excluding summers) for the student to continue in the program. The written portion is a six-hour examination given winter and spring quarters. Until January, 1979, the programming portion was a 5-day take-home project given the week after the written portion, and the two were graded together. At the June 13, 1978, Faculty Meeting it was decided to separate them; the grading would be independent. During 1979/80 the Comprehensive Examination Committee became aware of the difficulty of equitably grading a progr,a.m written during a high stress, five day period. The following motion was passed at the June 10, 1980, faculty meeting. Professor (Michael) Genesereth, representing the Comprehensive Examination Committee, proposed that the following procedure be adopted for the Comprehensive Programming Problem. “Students in the M.S. and Ph.D. programs (and Ph.D. Minor students who have passed the written examination) in Computer Science must prepare a programming project of sufficient complexity and quality to demonstrate compctcnce in computer programming. This project must be supervised and endorsed by a member of the Computer Science Department faculty and submitted to the Comprehensive Examination Committee for final approval. The project must be written at Stanford by the student, working independently. The project must exhibit the use of sophisticated algorithms and data structures and be well documented. Programs will be judged on the basis of correctness, efficiency, clarity, and style. The project may be the result of CS293 work, although it need not be. The project should represent at least 3 units of work.” Professor Genesercth made a motion that the proposal be accepted; Professor (Forest) Baskett seconded the motion, and it was passed. At the faculty meeting on June 9, 1981, new guidelines Cornpukr Scierxe Deparlmenl Requiremenrs jbr [he Comprehensive Programmitzg Projecf were adopted, for further clarification. See page ix of this report. For those of you who are preparing to take the exam, lots of good luck. Carolyn Taj nai July 1981 . 111 Comprehensive Examinat!on Reading List (Revised August 21, 1981) ALGORITHMS AND DATA STRUCTURES Aho, A. V., Hopcroft, J. E., and Ullrnan, J. D., The Design and Analysis of Computer Algorithms, Addison- Wesley, Reading, Massachusetts, 1974, Chapters 1, 2, 3, 4.1-4.4, 5.1-5.4. Chapter 10.1-10.5 covers some of the same material as Garey & Johnson (below). Garey, M. R., and Johnson, D. S., Computers and Intractability, Freeman, San Francisco, 1978, Chapters l-3. Knuth, D. E., The Art of Computer Programming, Volume 1, Addison-Wesley, Reading, Massachusetts, 1968, Chapter 2 (except for Section 2.3.4). NtTIFICIAL INTELLIGENCE Barr, A.V. and E.A. Feigenbaum (eds.), Handbook of Artificial Intelligence, Volume l., Kaufmann, Stanford, 1981. Winston, P.H.,Artificial Intelligence, Addison-Wesley, Reading, Massachusetts, 19’77, Part I, Chapters l-9. HARDWARE SYSTEMS General: Mano, M., Computer System Architecture, Prentice-Hall, Englewood Cliffs, New Jersey, 1976, Chapters l-5, 7, 8, 11.1, 11.2, 11.5, and 12; or you may substitute Gschwind, H. W. & McCluskey, E. J., Design of Digital Computers, Springer-Verlag, New York, 1975, Chapters 2, 3, 5, 6, 7, 8.2, 8.3 (except for 8.3.5.1), 8.4. Memory Hierarchy: Matick, R., Computer Storage Systems and Technology, Wiley Intcrscience, Chapter 9. Strecker, W. D., Cache Memories for PDP-11 Family Computers, 3rd Annual Computer Architecture Symposium. Computer Systems: C. A. C. M. Jan 1978: CRAY-1 , pages 63-72; IBM 370, pages 73-96. Stack Computers: Stone, H. htro dUC Iont’ to Computer Architecture, SRA, 75, Chapter 7. I/O: Kraft, G. D. and Toy, W. N., Mini/Microcomputer IIardware Design, Prentice-Hall, 1979, Chapters 3, 5, 6, 8, 9. , NUMERICAL ANALYSIS Atkinson, K. E., An Introduction to Numerical Analysis, Wiley, New York, 1978, Chapters l-3. Or you may substitute Conte, S. D., and De Boor, C., Elementary Numerical Analysis: An Algorithmic Approach, 2nd ed., McGraw-Hill, New York, New York, Chapters l-2 and 4.1-4.8; or Conte and De Boor, 3rd ed., 1980, Chapters l-3. Forsythe, G. E., Malcolm, M. A., and Moler, C. B., Computer Methods for Mathematical Computations, Prentice-Hall, 1977, Chapters 2, 4.4, and 4.5. Forsythe, G. E., and Moler, C. B., Computer Solution of Linear Ngebraic Systems, Prentice-Hall, 1967. SOFTWARE SYSTEMS Aho, A. V., and Ulhnan, J. D., Principles of Compiler Design, Wiley, New York, New York, 1975. Brinch Hansen, P., Operating System Principles, Prentice-Hall, 1973. Dahl, O.-J., Dijkstra, E. W., and Hoare, C. A. R., Structured Programming, Academic Press, New York, New York, 1972. Graham, R., Principles of Systems Programming, Addison-Wesley, Reading, M&achu$etts, 1975. Stone, H. S., Introduction to Computer Organization and Data Structures, McGraw-Hi& New York, New York, 1972, Chapters l-8. Contains basic knowledge about computer organization. Most students should just skim this. Wats&, R., Timesharing System Design Concept+ McGraw-Hi& 1970, section 2.4, or Denning, P., “Virtual , Memory ,” Computing Surveys, September, 1970. THEORY OF COMPUTATION Hopcroft, J., and Ullman, J., Introduction to Automata Theory, Languages, and Computation, Addison- Wesley, 1979, Chapters l-3, 4.1-4.6, 5-7, 8.1-8.5. Manna, Z., Introduction to Mathematical Theory of Computation, McGraw-Hi& 1973, Chapters 1, 2 and 3. Alternative introductions to logic appear in Mendelson, E., Introduction to Mathematical Logic, Van Nostrand, Chapters l-2, or Enderton, H., A Mathematical Introduction to Logic, Academic Press, 1973, Chapters l-2. McCarthy, J., and Talcott, C., LISP: Programming and Proving, (available from Stanford Bookstore) 1980, Chapters l-3. RECOMMENDED COURSES The Comprehensive Exam is meant generally to cover the material from the following courses: CS 111 (assembly language); 311 (hardware) 137A (numerical analysis); 107, 142, 143, and 246A (systems); 144A, B (data structures); 156 (theory of computation); and 223 ( ar t’I lcialf intelligence). Since the precise content of these courses varies somewhat, the actual scope of the Exam will be determined by the references above. Please note that the reading list includes some material involving structured programming as well as the history and culture of Computer Science even though it does not correspond to any particuiar course. vi The Exam will also assume a certain mathematical sophistication and a knowledge of programming. The mathematical sophistication required may include knowledge of techniques such as induction, recursion, “divide and conquer” (e.g., techniques in sorting algorithms, case arguments, etc.), and will be at the level of an upper division undergraduate in the mathematical sciences. Proofs of correctness for simple programs may be required. The programming knowledge required will be an ALGOL-like language (e.g., Pascal), a knowledge of LISP, and possibly some assembly language. The exam will be “open-book-and-notes.” This means you are allowed to use any materials you bring with you, plus copies of the above materials which will be made available. Non-smoking and smoking examination rooms will be scheduled. Copies of previous exams are available from the department. PROGRAMMING PROBLEM Students in the M.S. and Ph.D. programs (and Ph.D. Minor students who have passed the written examina- tion) in Computer Science must prepare a programming project of sufficient complexity and quality to demonstrate competence in computer programming. This project must be supervised and endorsed by a member of the Computer Science Department faculty and submitted to the Comprehensive Examination Committee for final approval. The project must be written at Stanford by the student, working independently. The project must exhibit the use of sophisticated algorithms and data structures and be well documented. Programs will be judged on the basis of correctness, efficiency, clarity, and style.