CS200: Computer Science, Spring 2004
There are 30 students in the course.
Registration Survey Summary Responses
Your Names:Alex, Ben, Bill, Chelsea, Cris, Dan, Darryl, Debora, Erika, Erin, Evong, Haben, Henry, Jon, Kate, Kristina, Lauren (x2), Leah, Lincoln, Marija, Meeky, Nicole, Preston, Raquel, Redcliff, Seth, Steven (x2), Susan, TJ
5. MajorsArt, Biology, Biomedical Engineering, Business, Cognitive Science (10), Computer Science (6), Economics, Electrical Engineering (4), English. Maybe History, Media Studies, possible CLAS CS program (see http://www.cs.virginia.edu/clas/), Psychology (2.5), Systems Engineering (3), Undecided (4)6. YearFirst: 57. How did you find out about this class?
Community Scholar: 1Recommendation from a friend who took this course or CS201J: 128. Why are you taking this class?
Found in COD: 7
Recommendation from a faculty member: 6 — Jim Cohoon (2), David Evans, Worthy Martin, Jane Prey, Dean
- I looked for an interesting CS course on the online course offering directory and this syllabus was enticing.
- I did some programming in high school and wanted to continue, but none of the CS classes here seemed like a logical continuation. I saw it on the COD and checked out last semester's course website.
Advising recommendation: 3 — CLAS Open House, Cognitive Science, Systems
From CS201J: 4
Cognitive Science email: 1
9. Have you ever written a computer program?
- I thought it might be interesting and I hate the way people assume that because I'm a girl I can't know anything about computers. I always want to prove them wrong.
- Give me a new perspective on things I've learned, or an introduction to things I should know but haven't learned. Give me a more solid basis of learning for future Computer Science courses/work.
- I enjoyed computer science in high school because I think studying it deveops effective problem-sovling techniques. I am especially in the theoretical underpinnings of computer science which made this class seem all the more appealing.
- To look at different ways of approaching and understanding computer science, as well as keep programming skills in shape through the semester
- I would like to learn the basics of computer programming as a valueble tool for any career
- because I think I'll enjoy it, besides I'm sure I can make it count as a technical elective or something
- To gain a basic conversational ability in Computer Science.
- This class seems to delve into the theory behind why computer languages are the way they are, which seems interesting. It's important to understand things in order to use them well.
- My roommate reccommended it and the subject matter interested me
- Per major and for Navy ROTC scholarship. CS 110 would be too easy, and if a little more effort = a lot more knowlegde and understanding, I think it's worth my time. Very positive reviews.
- I have good back round for computers and the work that comes along with it to become a better computer scientist and gain more knowledge in the CS field
- To fufill CS requirement for cognitive science.
- I was signed up for CS 101 because I want to take a computer science course and then someone told me that CS 200 is more oriented toward college students and is in a smaller class setting. Since I know absolutely nothing about computer science I figured a smaller class was the way to go.
- Looks like fun
- the course seems interesting, and i am considering minoring in computer science.
- I'm focusing on computer science, and this class looked interesting.
- I liked 201J
- its a requirement for cog sci. While i think computer science should be interesting, i have NO experience.
- Because I know nothing about Computers.
- to meet my cs requirement in my cog. science major and to learn a little bit about computer programing
- Heard it was a good class.
- Because I was unwilling to take CS101 in Java and CS201 in C++. Dr. Cohoon knew I was looking for a class to continue the learning high" I experienced in his class and recommended this to me.
- I heard it is supposed to be an interesting course.
- I want to learn more about CS
- To satisfy the requirement and because I've always been interested in CS.
- Last semester I took CS120, which I found relatively easy, interesting, and also very valuable. This class seems to follow a similar model and that sounds good to me.
- This course seems like an interesting course and I would like to learn more about computer science
- I think it sounds very interesting and it fufills a requirement.
- I like the liberal arts approach to computer science rather than the engineering/scientific approach.
- To fufill my CS requirement for Cog Sci and it seemed to be the most interesting of the offered CS courses
- I find the course interesting. It offers an overview of computer science that is not available in other courses.
- I want to take this class because, despite being a EE, I have always enjoyed aspects of CS and have them to be interesting and complementing to my hardware oriented curriculum.No: 1010. What programming languages have you used and how much?
11. Who is your intellectual hero and why?
- C++, functions, loops, very basic recursion
- C++, lots, courses in high school and here at the university; Java, some, took a USem last semester; Visual Basic and LISP a little
- BASIC and VISUAL BASIC with minimal minimal experience. Summer camp half-days with very simple commands that I don't remember.
- C++ in tenth grade. I don't remember any of it.
- C++ in CS101 and Java in CS201J
- Perl, only for what I need in Unix
- C++, Visual Basic
- Java, CS 101
- Java: one semester, C++: two semesters
- C++ a lot; Java a little; Perl a little; PHP a little; Visual Basic a little; Lisp a little; HTML a lot; OpenGL a little
- C, plenty; Java, some; Perl, some; Basic, some; Scheme, some; Prolog, some; Smalltalk, some
- c++ and java. I have not used them very much outside of the classrooms.
- C++-one year; HTML, PHP, SQL- for about one semester
- C++ from CS101.
- I used C++ during my second semester first year. C++. Little and long ago
- C++ (fair amount), Java (fair amount)
- VB - about 2 years, C++ - about 3 years
- Basic, Fortran, COBOL, PASCAL approximately 15 to 20 years ago. I took CS101 last semester and believe I still have my Jr. Programmer's certificate he handed out somewhere.
- I did C++ for two years in high school (with a 5 on the AB AP exam, woo). During my free time in the class last year I also taught myself some Java. I taught myself HTML in middle school and made a few websites for myself. I spent a little time on Basic as a project in elementary school also.FamilyAnything else you think I should know about you?
Scientists, Inventors, Explorers
- My dad - he has taught me so much and its just recently (since I've been in college) that I've started to realize just how much he knows and what a crazy, intellectually challenging job he has.
- I think my dad. Cheesy, but true. Got his phD in entomology with relatively few role models in for academic careers where he grew up. Everyone else seemed to pretty much join the army. But he really loves what he does,I hope to be that lucky.
- My dad. He always seeks for the new field and he tried really hard for his achievements.
- My father bc he inspires me to be an engineer and always do my best :)
- My uncle, name removed, is a very smart and sophisticated man. He is a child neurologist who has been published hundreds of times. He did his pediatric fellowship at Harvard and his neurology fellowship at Washington University in St. Louis. He is now head of the neurology deparmtent at Baylor University. In addition to his intelligence he is also very humble and giving. He could be making a fortune as just a child neurologist. Instead he is doing research and focusing on the children even though he is paid less. He is probably one of the smartest men I know.
- My Father, he has been amazing sucessful and is highly respected in his field. He is also intensely learned about many subjects and desires knowledge for its sake alone.
- Albert Einstein for his many breakthroughs in science and math.
- Einstein. He's a genius. He thinks like no other people of thought before.
- Albert Einstein, unlike alot of other scientists, he explained his theories and principles so that the everyday man" can understand. Tried not to speak in jargon
- Dijkstra because he had such a unique and creative approach to computer science.
- John Nash, for revolutionizing economics and for the analyses which were enabled by his work that deconstructed the field in many ways. He began to actually model human behavior as a science.
- Watson and Crick. They were unconventional in that they were smart enough to pool resources from different places in a field and age where little was shared among colleagues.
- I have never really had an intellectual hero, but if I were to have one, it would probably be the guy who invented the keyboard and mouse. They are ingenius inventions that may not have required massive amounts of intellectual genius, but are nevertheless inventions that have changed/shaped the computing world. Without a way to interact with the computer, I'm not sure what I would do in my free time these days (games, surfing, email?)The mouse was invented by Douglas Engelbart. As for the keyboard, the "QWERTY" keyboard we use today was invented by Christopher Sholes. The keys were arranged to make it hard to type fast, since that would jam the typewriter.
- Leonardo DaVinci because he explored so many different areas of knowledge and wasn't afraid to believe in his ideas.
- Franklin because he invented an unusual experiment.
- Columbus, for going against the grain and taking a leap of faith like he did.
- I recently had a professor who could spit out info from practically any experiment by the creators' names alone and answer any question you wanted about it, without having to reference our textbooks at all. That was impressive.
- My high school computer science teacher. He genuinely enjoyed any sort of logic problem, and he showed me how to embrace and appreciate logic when solving problems.
- For lack of a preconceived intellectual hero, I choose my high school latin teacher, Doc Larrick, because he loves what he does and, though he has the mind of an intellectual, he has the humble demeanor of a close friend.
- Dave Evans :)
- Socrates. Establishing and utilizing the Socratic method of dialogue between teacher and student for learning and progress. I wish our educational system could be more like that.
- Boy, tough one! Probably still Jefferson in spite of his sexist and more recently revealed complex racist issues. I have long felt that he helped set in place the patriachal policies at UVA that have dominated it for so long and continue to guide it even today. Even so, we have come a long way. Aside from that he and his band of revolutionaries took a huge gamble and changed the world. He was incredibly industrious and creative, interested in the exploration and scientific experimentation that was proceeding at such a rapid pace in his time. I am always impressed with the incredible span of his knowledge and interest. Of course there's always Bill Gates and the $21 billion endowment he and Melinda(?) have set up to improve human health in Africa.
- That's a tough question, I haven't thought about it much. There are so many intellectuals I admire in many differnet fields... but since my biggest passion is music, I'll pick a musician. Matt Good. He's a Canadian, and writes some of the most amazing music I've ever heard. He's a modern-day philosopher on top of an amazing songwriter. It's really hard to explain the respect I have for that guy. I dream of being able to do the stuff he does. He is definitely one of my strongest role models, something to aspire to, but I would also consider him an intellectual judging by some of the things he has written.
- Hayao Miyazaki for the beautifully conceived and architected worlds he constructs in his Studio Ghibli animated films. See Princess Mononoke or Spirited Away as his latest works.
- Joe gibbs. He can turn a losing team into a winning team.
- Ayn Rand. She is an extraordinary woman, and a good writer too.
- Terrence Malick
- I never really thought about it so I guess I don't have one.
- i don't really have a specific one.
- I don't have one specifically, rather I like to draw from many to form my own conculusions and opinions.
- nobodyThose of you who are still looking for an intellectual hero will encounter some candidates (not all good ones) in this class including: Euclid, Ada, Grace Hopper, David Letterman, John Backus, Thomas Watson, Filus Bonacci, John Lennon, Paul McCartney, Guy Steele, Gerry Sussman, John McCarthy, Alonzo Church; Tony Hoare; Neil DeGrasse Tyson, Thomas Jefferson, Tommy Flowers; Alan Kay, Kristen Nygaard, Ole-Johan Dahl, Steve Jobs; Aristotle, Netwon, Whitehead, Russell, Epimenides, Gödel; Alan Turing; Von Neumann; Heisenberg; Barbara Liskov; Homer, Marco Polo, Claude Chappe, Edelcrantz, Kleinrock, J.C. R. Licklider, Bob Taylor, Vannevar Bush, Tim Berners-Lee and Leonard Adelman.
If I have to pick just one, it would be Richard Feynman. Feynman was best known as a physicist, but he was also an accomplished computer scientist, musician, adventurer and a tremendous teacher. Feynman actually taught a course quite similar to this one in the early 80s --- his son, Carl, was a student at MIT and took the intro CS course from Gerry Sussman (based on the notes that turned into the textbook we use in this class). Then, Prof. Sussman went visited CalTech and Feynman and Sussman co-taught a CS course based on those notes.
I encourage everyone to read, "Surely You're Joking, Mr. Feynman!": Adventures of a Curious Character and What Do You Care What Other People Think?: Further Adventures of a Curious Character. After this course is over, you may also want to read Feynman Lectures on Computation.
(Selected comments)Anything you want to know about me or the course?
- I'm from California :)
- Like I said, I know nothing. I'm starting from scratch here. :)
- I know absolutely nothing about computer science, and although probably not alone in the class with this dilema, it does make this course as an interesting challenge. I figure either I'll pick things up quickly and impress myself with my never realized natural talent for computer science, or be going to office hours A LOT. I'm keeping my fingers crossed for the first, but either one works I guess.
- I like to juggle.
- I am excited to take this course and see how it applies to other courses I have taken, am taking, and will take. I am passionately interested in videogames (I write a regular column for the Cav Daily). This semester, I am also taking a University Seminar course on feedback loops, which are crucial to videogame and other interactions.
- Unix sys. administration is fun
- I co-founded and work for two computer-related companies. One is a technology consultancy specializing in Internet-based applications and the other is a wireless internet service provider; both are based here in Charlottesville.
- I can program but I didn't really learn the basics, so it might be great
- I am pre-med but don't like to define myself as that.
- I am a very computer oriented person - someone who enjoys learning and reading about new computer technologies. I try to keep up with all the new stuff that comes out these days for computers (more so hardware wise than software), and find them to be extremely interesting. Some of my favorite browsing" sites are www.anandtech.com and www.tomshardware.com.
- I probably shouldn't answer surveys at 6:30 a.m. when my natural reticence is down.
- Well... building on the last question, I am a musician. I play guitar and write, I've been in a band for a few years now (we have a cd if you want to buy it, only $5!). I also ski, play hockey, and am a bit of a video game enthusiast, I suppose.What will I need to do to be successful in your class?In the two previous years I have taught this course, I believe all of the students who stayed with the course were successful, both in terms of learning and understanding important and interesting things, and in more superficial terms (no regular student has received lower than a B in this course, although of course, there is no guarantee that this will be true this year).Is it ok if we still don't have the books? They're not in the bookstore yet!
To be successful, you need to:
- Keep up with the course — its very hard to catch up if you fall behind. Each assignment builds on the previous one, and if you don't do one of the assignments, it will be hard to catch up on the next one.
- Be willing to try to figure something out even if it seems overwhelming at first. Be persistent enough to keep trying even if things don't make sense right away.
- Be willing to ask for help (of me, the assistant coaches, and your fellow classmates)You definitely need to read SICP before doing PS1. But, the full text is available on the web at at http://mitpress.mit.edu/sicp/full-text/book/book.html. I hope everyone will be able to find GEB soon, but don't worry if you aren't able to get it until the second week.Are you sure I'll do ok in this class without the experience?Yes, this course is designed to be accessible to students with no previous experience. In past years, the best students in the class often had no previous experience beforehand. (There are, of course, other reasons someone might not do "ok" in this class, but lack of experience is not one of them.)how available will you be if we need to come to you with any problems?As much as possible. My office hours are Wednesdays after class and Thursdays 4-5pm, and I am available other times by arrangement. As you know, professors have lots of other responsibilities in addition to teaching classes, so I can't promise to always be available on short notice. I can promise, though, that if you email me to arrange a meeting, I will be able to do this within a reasonable time. I don't generally mind if students come by my office at times other than my office hours, but I might not always have time to meet with you unless you arrange it before.Will you really give someone an A even if they didn't get the corresponding test scores?Yes, I assign final grades based on all information I have. If you have done other things in the course that convince me you deserve an A, then you will get an A even if your scores alone would not merit one. The assignments and exams are intended to teach you to think like a computer scientist by the end of the course, and if I am convinced that you can, then you will receive an A whatever the average of your scores may be. (On the other hand, if all of your scores are bad, it will be difficult for you to convince me you actually learned what you should have.)How will computer science evolve in the future? Will computers be able to think like people? How do you feel about this?Computing technology will continue to make rapid progress, and I expect Moore's law to continue to hold for at least another decade. Progress in computer science is slower, and I think it will take some major breakthroughs before the big questions are answered, but I do expect them to be answered in my lifetime.What are your personal interests and why are you teaching this course?
I don't think computers will ever think exactly like people, but computers will have computational capacity comparable to the human brain by around 2015-2025. Computers already can do many things that people used to think required "intelligence" much better than people, and can do as well as nearly all humans on many tasks that are considered highly creative (e.g., playing chess, composing music). But, computers are a long way off from being able to perform many "simple" tasks as well as a baby (e.g., face recognition, language learning).
I think it would be a shame if computers become so good at the things we believe make us uniquely human as to make human involvement in those things necessary only for nostalgic purposes.When I was a first year undergraduate, I took 6.001 from Gerry Sussman, which is what the SICP book is based on. That course inspired me to want to be a computer scientist. Since coming to UVa, I've believe the most important thing I can do is make most students learn some real computer science. You can read more details about my motivations in my fellowship proposal (which I wrote to get to start this class two years ago): http://www.cs.virginia.edu/~evans/pubs/teachingfellowship.pdfWhy did you decide to offer this course, and what is your background?See about for the first question. For the second, I grew up in the northern suburbs of Detroit, Michigan, and went to MIT for college. I did my undergraduate degree in Computer Science, and stayed at MIT to finish a Masters and PhD. I joined UVa in Fall 1999. See my home page for more.What projects are you working on or have you worked on?My main research interests are security and programming languages. The main projects I am currently doing are:What kind of program languages we will be learning
The major past projects I have done include Splint (a tool for finding security vulnerabilities and programming mistakes in software) and Naccio (a system for defining and enforcing safety policies on untrusted program executions).
- Programming the Swarm — how can we program collections of dumb, unreliable components to perform in a coherent and useful way
- Security in Physical Networks — designing cryptosystems for networks that are deployed in a physical environment
- Hybrid Analysis — what can we learn about programs by combining results from static (analyzing the code) and dynamic (analyzing an execution of the program) analyses.We will use Scheme for problem sets 1-6. For problem set 7 and 8, we will use some other languages (most likely PHP, SQL and HTML). By the end of this course, you should feel confident that you understand enough about how languages work, that you can learn whatever language you need on your own.Not really... maybe you could tell me, though, what class I could take in the future if I also wanted to learn some more programming, with C++, Java, or whatever.CS201 would be the most natural class to take after CS200 (unless you've already taken CS201). At the end of the class, I can give you better ideas what courses would make sense for you depending on what parts of this course you are most interested in.
Using these Materials