This Document: //www.cs.virginia.edu/evans/cs390/
Every Self-Respecting Computer Scientist Should Know
but might not learn in CS101-CS390
Research LinksProgramming the Swarm (//swarm.cs.virginia.edu) — how can we get robust, secure, predictable behavior from lots of unpredictable, independent parts operating in hostile environments?
Splint (//www.splint.org) — secure programming using lightweight state analysis. How can we identify likely security vulnerabilities by analyzing code?
Sampling of recent Fourth-Year Thesis projects
- Anthony Aiello, Planners that Learn
- Chris Frost and Mike Peck (independent study project), Cracking the Cracker Barrel Game (see their presentation in the Rotunda Dome Room, Friday, 11 April at 11am)
- Jon McCune, Adaptable Sensor Networks (CMU PhD Program, CRA Honorable Mention)
- Ankush Seth, Scalable Swarm Computing Primitives
- Matthew Suhocki, How Biology forms Abstractions
- Shobana Thyagarajan, Differentiating between Humans and Computers Remotely and Automatically
- Nadim Barsoum, WIL: A Tool fo Web-data Extraction
- Dev Batta, Finding a Give-And-Go In a Simulated Soccer Environment
- John Calandrino, Applying Computer Network Flow Efficiency Techniques to Vehicular Traffic Systems. (CS Department Research Award Winner, Cornell University PhD Program)
- Giles Cotter, Generation of Pseudorandom Numbers From Microphone Input in Computing Devices.
- Mike Cuvelier, Behavior of Composed Swarm Primitives
- Nicholas Dunnuck, An Ethical Analysis of the Goals and Methods of Developing Artificial Intelligence Systems
- David Friedman, Using Splint to Detect Buffer Overflow Vulnerabilities in Sendmail (Johns Hopkins PhD Program)
- William Haubert, An Interactive Approach to Secure and Memorable Passwords
- Errol McEachron, A System for Synthesizing Swarm Applications
- Lap Fan ("Jack") Lam, Detecting Email Viruses By Analyzing Network Traffic Patterns
- Bill Oliver, Analyzing Group Behavior: Developing a Tool to Evaluate Swarm Programs
- Kenneth Pickering, Evaluating the Viability of Intrusion Detection System Benchmarking
- Douglas Ross, Cyberfridge.com - Magnetic Poetry for the World Wide Web
- Adam Sowers, Analysis of the Selected Key Pairing Encryption for Client-Server Systems
- Lim Vu, Securing Web Communications
- Chris Barker, Static Error Checking of C Applications Ported from UNIX to WIN32 Systems Using LCLint
- Felipe Huice, A Database-backed Personal Information System for Automatic Creation of Home and Summary Web Pages
- Jennifer Kahng, Evaluating Web Browser Security Interfaces for a More Meaningful Design
- Ryan Persaud, Investigating the Fundamentals of Swarm Computing (UCSD grad school)
- Dan Rubin, The Security of Remote On-Line Voting
- Adam Trost, Extendable Swarm Programming Architecture
- Phil Varner, Vote Early, Vote Often, and VoteHere: A Security Analysis of VoteHere (UVa grad school)
- Julie Vogelman, Determining Web Usability Through an Analysis of Server Logs
What is Computer Science?Computer science is the study of information processes. It is not a natural science since it deals primarily with unnatural, abstract stuff like numbers, graphs, strings and procedures. Rather, it is more like mathematics. The key difference between computer science and mathematics is that where mathematics is declarative (it deals with what is knowledge), computer science is imperative (it deals with how to knowledge). Computer science centers on understanding how to describe procedures (that is, precise methods for manipulating information) and to reason about the information processes they encode.
I do not know when I have been so tantalized by anything, and should be ashamed to say how much time I have spent upont it, in vain. These Functional Equations are complete Will-o-the-Wisps to me. The moment I fancy I have really at last got hold of something tangible and substantial, it all receded further and further and vanishes again into thin air...
Ada Byron, letter to Augustus De Morgan, 27 November 1841.
From Ada, the Enchantress of Numbers: A Selection from the Letters of Lord Byron's Daughter and Her Description of the First Computer, by Betty A. Toole, 1998.)
For more information: Ada Byron, CS200 Lecture 1
What problem did the first electronic programmable computer solve?
If you want to try and break a simple variant of the Lorenz Cipher, try CS200 Problem Set 4. If you are up for a bigger challenge, try breaking the Enigma variant on CS588 Problem Set 2.
- //www.codesandciphers.org.uk/lorenz/ Tony Sale's Lorenz Ciphers and the Collosus.
- //www.picotech.com/applications/colossus.html Colossus - The Worlds First Electronic Computer
- //www.eclipse.net/~dhamer/lorenz.htm The Lorenz SZ40/42 cipher attachment - FISH and TUNNY (details on the Lorenz cipher device)
- //www.redherring.com/mag/issue63/news-flowers.html Tommy Flowers, 1905-1998, Red Herring Obituary for Tommy Flowers
Why was the first "personal computer" built?
Some Funny Things Happened on the Way to the Moon, Richard H. Battin, 1989. One Giant Leap: The Apollo Guidance Computer, Dag Spicer, from Dr. Dobb's Journal. (Includes computer specs.)
The MIT Instrumentation Lab had been designing software for the Apollo onboard guidance system even before the word software was invented. I still remember the first time I told my wife that I was in charge of "Apollo Software". She exhorted me: "Please don't tell any of our friends!"
Some Funny Things Happened on the Way to the Moon, Richard H. Battin, 1989.
Is Computer Science a science, engineering or other?The Liberal Arts
Grammar: study of meaning in written expression
Rhetoric: comprehension of verbal and written discourse
Logic: argumentative discourse for discovering truth
Arithmetic: understanding numbers
Geometry: quantification of space
Music: number in time
Astronomy: laws of the planets and stars
Read Neil deGrasse Tyson's Science's Endless Golden Age (attached)
For more on Golden Ages, Goalden Ages and Grade Deflation, see CS200 Lecture 15.
What are the world's most complex programs?Molecular structure of Nucleic Acids, James Watson and Francis Crick. Letter to Nature, sent 2 April 1953 (50 years ago today!).
50 Years of the Double Helix
NCBI Human Genome Resources
What is abstraction?Abstractions hide information. Computer scientists learn several types of abstraction including:
- Procedural Abstraction (CS101) — abstract what to do from specific values to do it to
- Data Abstraction (CS201)— abstract away data representation details from what you can do with it
- Abstraction by Specification (CS340) — Abstract away how details by saying what a procedure does
Who was the first object-oriented programmer?
By the word operation, we mean any process which alters the mutual relation of two or more things, be this relation of what kind it may. This is the most general definition, and would include all subjects in the universe. Again, it might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine. Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition...
Ada Byron, 1843
And they showed me really three things. But I was so blinded by the first one I didn't even really see the other two. One of the things they showed me was object oriented programming they showed me that but I didn't even see that. The other one they showed me was a networked computer system...they had over a hundred Alto computers all networked using email etc., etc., I didn't even see that. I was so blinded by the first thing they showed me which was the graphical user interface. I thought it was the best thing I'd ever seen in my life. Now remember it was very flawed, what we saw was incomplete, they'd done a bunch of things wrong. But we didn't know that at the time but still though they had the germ of the idea was there and they'd done it very well and within you know ten minutes it was obvious to me that all computers would work like this some day.
Steve Jobs (on seeing a Smalltalk demo on his 1979 visit to Xerox PARC)
Bjarne Stroustrup. What is "Object-Oriented Programming"?. Proceedings of the First European Software Festival, 1991.
Daniel Ingalls. Design Principles Behind Smalltalk. BYTE Magazine, August 1981.
Who invented the Internet?If you're not sure how close today's Internet comes to achieving the speed of light, see CS200 Lecture 28.
Available within the network will be functions and services to which you subscribe on a regular basis and others that you call for when you need them. In the former group will be investment guidance, tax counseling, selective dissemination of information in your field of specialization, announcement of cultural, sport, and entertainment events that fit your interests, etc. In the latter group will be dictionaries, encyclopedias, indexes, catalogues, editing programs, teaching programs, testing programs, programming systems, data bases, and — most important — communication, display, and modeling programs. All these will be — at some late date in the history of networking - systematized and coherent; you will be able to get along in one basic language up to the point at which you choose a specialized language for its power or terseness.
The Computer as a Communication Device, J.C.R. Licklider and Robert W. Taylor, Science and Technology, 1968.
Why should we say goodbye to "Hello World"?C++ Standard Core Language Issues List
206 things about C++ that language committee isn't sure about, try to find 6 of them that relate to the "Hello World" program.
For what I think a reasonable first program should be, see CS200 Problem Set 1.
University of Virginia
Department of Computer Science