University of Virginia Computer Science
CS150: Computer Science, Fall 2005

(none)
2 December 2005

CS150 Notes 39 (2 December 2005)

Upcoming Schedule

Where to Go From Here

I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customer got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.

Alan Perlis, quoted in Abelson & Sussman, Structure and Interpretation of Computer Programs

Although CS150 has striven to be consistent with Perlis' spirit, when you fly in an airplane, put your money in a bank, get LASIK eye surgery, or live near a nuclear power plant, you would be worried if the people who programmed those things agreed with Alan Perlis that their job was not to make then "error-free". If you want to learn how to make robust programs and reason about their correctness, take CS201K: Engineering Software in the fall. CS201K focuses on engineering, not computer science. That means the course is mostly about ideas and methods for building programs that behave reliably under constraints of cost and time (how long does it take to get the program working, and how expensive will it be to change it). The ideas and techniques you learn from CS201K will enable you to think about design more clearly (whether of software, or something else), and will lead you to build more useful and exciting programs than you would without them. If you are willing to learn Java on your own (or already know Java), you can take CS201: Software Development Methods this Spring.

If you are interested in learning more about algorithms, data structures, and how programs execution, talk to me about taking CS216 this Spring. Normally, CS201 must be taken before CS216, but from CS150 you have enough background to do well in CS216 this Spring.

If you are interested in Inexpensive Program Analysis, Physical Cryptography and Security or System Security, or you have your own idea for and interesting project, talk to me about winter, spring, and summer opportunities for students in my research group.

If you want to learn more about the history of computing, take MDST 110.

If you want to learn more about Ada Byron's father, take ENNC382.

If you want to learn more about logic, take PHIL 242.

If you want to learn more about how language works, try AMEL 365.

If you want to learn about music and computers, take MUSI 339.

If you want to learn more about cryptology, take CS588. (You have enough background to take this next time it is offered.)

If you want to learn more about how biology programs, take BIOL 405.

If you want to learn more about quantum physics, try PHYS 355 (at your own risk!).

If you finish reading GEB and want to read more by Hofstadter, try Metamagical Themas: Questing for the Essence of Mind and Pattern (a collection of his essays for Scientific American) and then Le Ton Beau De Marot : In Praise of the Music of Language (all about translation).

Project Presentations

If your group has successfully produced a working web application, you may demonstrate it in class on Monday, December 5, instead of submitting a report. Project presentations should briefly explain the motivation behind your website, and then demonstrate what it can do. A clear presentation should make the audience understand why someone would want to visit your site, and what they can do there.

Presentations will be strictly time-limited to 4 minutes. This sounds short, and is, but if you use your time wisely and plan what you will do carefully, you can accomplish a great deal in 4 minutes. (Note: 30 seconds of presentation time during the Super Bowl costs $2.4 Million, this is enough for good advertisers to tell an effective story. You should consider your 4 minutes worth $19 Million, enough to tell a very effective story!) Groups will present in reverse numeric order.

It is not necessary or recommended that all members of the group speak during the presentation. It is hard to speak well when you are also trying to drive a website, so I recommend having one team member driving the computer while one or more others speak. I think most groups can present effectively only using your website, but if you would like to display a few PowerPoint slides also, send them to me before 12:30 Monday.

Course Evaluations

CS150 will be offered again this Spring (taught by Professor Greg Humphreys). If you found the course to be worthwhile, please encourage your friends to take it. If you found the lectures to be torturous, the problem sets to be a ridiculous amount of work, and the exams to be unfathomable, you can encourage your enemies to take it instead.

On the course pledge, you signed:

I will provide useful feedback. I realize that CS150 is an evolving course and it is important that I let the course staff know what they need to improve the course. I will not wait until the end of the course to make the course staff aware of any problems. I will provide feedback either anonymously (using the course feedback form) or by contacting the course staff directly. I will fill out all course evaluation surveys honestly and thoroughly.
You are expected to do this for 3 course evaluations: If you are having a hard time thinking of something to write in the comments box on your SEAS evaluation, you might use this quote for inspiration:
Who can forget that stream of English undefiled, so smooth, so deep, and yet so clear, that passed from point to point with gentle touch, that commonly flowed along with the quiet of conscious power, yet sometimes became tumultuous with feeling, and then came the music of the cataract and the glory of the rainbow!

William Barton Rogers' teaching evaluation, in History of the University of Virginia, 1819-1919, Vol. 2

Final Exam

The final exam will be handed out on Monday, December 5, and due before 4:59pm on Friday, December 9. The final will be take home, open notes, and open book. As I will be out of the country on December 9, please turn in your exam to Brenda Perkins in the Computer Science office in Olsson Hall. The exam covers everything from the course readings, lectures, problem sets, and exams, as summarized in CS150 Condensed. It will emphasize the most important concepts from the class. You should expect to see some questions on defining procedures (including recursive definitions and using procedures as parameters and results), analyzing complexity, computability, and modeling computation. There might even be a question or two on languages and networks. It would be especially unwise to neglect to make sure you understand everything from Exam 2, and you should not be surprised if the exam contains a question based on Appendix B of the Google paper.

If you are thinking about scribbling "Pledged" or somesuch on your final exam, please re-read the CS150 course pledge you signed at the beginning of the course. If after reading this, you feel that writing on your exam will somehow reduce the likelihood that you will be tempted to cheat, please feel free to do so and I will try not to hold it against you. Otherwise, I expect your academic honor, morality, and sense of fairness will be sufficient to ensure you follow the exam rules and intent honestly.

"); print ( $res[$first] ) ; print (""); ?>
CS 150: Computer Science
University of Virginia
evans@virginia.edu
Using these Materials