Upcoming Schedule

Final Exam

The final exam will be posted before midnight tonight and due by 4:59pm on Friday, 11 December. You should turn in your final exam on paper at my office, Olsson 236A. If I am not there when you come to turn it in, you can leave it under my door.

Project Presentations

  1. Days on the Lawn (Josh Lesko)
  2. HoosHungry (Casey Brown, Julie O'Brien, John Marion)
  3. QuoteMyProfessor (Kiran Kumar, Muzzammil Zaveri, Omer Shahab, Qihan Zhang)
  4. CVilleShopBuddy (Andrew Crute, Jonathan Burket, Trygve Loken)
  5. HoosList (Agneez Kang, Meng Zho)
  6. Football Projections (Belel Ait Oumeizne, Casey Bowling, Mark Varvaris, Travis Cook)
  7. Rhapsody Ballet Ensemble (Lizzie Bendycki, Erika Crawford, Katie Mitchell, Stephanie Marshall)
  8. Alpha Phi Omega Alumni (Ian Nathan)
  9. Connect 4 (Steven Massetti, Stephen Holtz, and Tom Pisano
  10. Omnomonster (Daniel Andrino and Richard McPherson) — Facebook food-finding app
  11. Pong (John Anderson and Justin Holmes)

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 cs1120 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 CS2220: Engineering Software next fall. If you are eager to take a software development course in the spring and either have some experience with Java programming or are not scared of having to learn this on your own (you shouldn't be from your experience in cs1120 learing new languages), you should take cs2110: Software Development Methods this spring. CS2110 counts as the cs2220 requirement for BACS students and covers many of the same ideas as cs2220.

These courses focus 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 cs2220/cs2110 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 would like to go into more depth on theoretical computer science (and can tolerate another class from me!), including questions like the power of different computing models and what problems can and cannot be solved by computers in a reasonable amount of time, take cs3102: Theory of Computation this spring.

If you think the Assistant Coaches are the most awesomest people ever and would like to be one for a future cs1120, talk to me or Prof. Weimer about being an assistant coach for cs1120 in the Spring or next Fall.

If you are interested in research in computer security or you have your own idea for and interesting project, talk to me about opportunities for students in my research group.

If you would like to understand better how music, art, and logic use recursive definitions, read Douglas Hofstadter's fascinating and compelling book, Gödel, Escher, Bach: An Eternal Golden Braid.

If you want to understand how the Internet is governed and what Jefferson would think about it, read David Post's In Search of Jefferson's Moose: Notes on the State of Cyberspace.

If you'd rather look at pictures, try Logicomix: An Epic Search for Truth by Apostolos Doxiadis and Christos Papadimitriou.

Course Evaluations

On the course pledge, you signed:

I will provide useful feedback. I realize that cs1120 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 or by contacting the course staff directly. I will fill out all course evaluation surveys honestly and thoroughly.
One way to honor this pledge is to submit the two course evaluations: If you are willing to provide more detailed feedback on any aspects of the course (including the course book), I am happy to meet you for coffee to do this.

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, History of the University of Virginia, 1819-1919, Vol. 2