Each week we will offer a different opportunity to explore extra topics in computer science. There will be a homework assigned each week. You will accumulate one "exploration point" for each week that you attend the lecture and do the homework. At the end of the quarter, your total exploration points will be divided by 3 and will be added to your homework points. There will be 170 homework points total, so this isn't adding a lot to your potential score. As an example, if you were to participate in 3 exploration sessions, you would have 1 point added to your homework points, which is like getting one more point on a weekly programming assignment. The idea is to give people a small reward, but not something that is so large that people feel obligated to participate in these optional sessions.
One of the powerful things about Java is that it has a huge number of built-in libraries to do all kinds of cool things. We'll talk briefly about some of these things, and then we'll talk about how you can use Java to write a server. What is a server, and why is it important in the world of today's internet? We'll write our own basic server.
Edit the Server.java file we wrote on Monday to perform addition. The URL you type into the browser should be "localhost:1823/a=321&b=54" if you want to add 321 with 54. You should parse the URL string passed in the HTML header (the line with the "GET" request) and then print out the string "321 + 54 = 375" to the client's browser (it should work for any two values that you pass as "a" and "b"). Remember, when you run the Java file on your computer, you should visit http://localhost:1823/ on your computer to connect to your server. Turn in your new Server.java file to the link above. (This is graded on effort and completeness, not on perfect external correctness).
Links:
Files:
How do we protect information's privacy, availability, and integrity? We will talk about the security mindset and design attacks against a few real-world systems. We'll also learn about some specific issues in user authentication and social engineering.
Find a news article on computer security and write a three sentence summary of what this piece of news means for computer security, society, or the people involved. Include the title, source, and URL of the article in your writeup. Turn in a file called "hw9_uwid.pdf" to the link above (where "uwid" is replaced by your actual student ID #). Suggested sources: Google News, Slashdot.
Links:
Files:
How can we use the power of computers to improve our understanding of the biological world? We'll look at the role of computational tools in understanding our DNA and in programming molecules.
Read this article at wired.com. Write a 2-3 sentence summary of the article. Are you optimistic or pessimistic about the future of this kind of research?
Links:
What exactly does Google do and why is it such a big deal? What problems can arise in this field? We'll look at Google's PageRank algorithm and see how it helps refine the effectiveness of an Inverted Index. We will see that building an Inverted Index uses the same Collections ideas we have been discussing in class.
Visit Google Insights and play around with the tool. Record your answers in a file named "eshw5_uwid.pdf" (fill in your UW ID there) to the dropbox. Find a search term that satisfies each of the following conditions (you should have 5 separate search terms):
Links:
Files:
How do people communicate securely? In an age when huge computing resources can be used to break codes, privacy is a big concern. We'll look at some of the basics of cryptography and learn about RSA encryption, one of the most secure and widely-used cryptographic algorithms.
Take a look at the Wikipedia entry on cryptography. In a few sentences, identify your favorite type of secure communication and explain why you think it's cool (it doesn't have to be the best - just what you think is most interesting). Turn in a file called "eshw4_uwid.pdf" to the dropbox (fill in your UW ID there).
Links:
Files:
This week we'll talk about the power of human computation. In what ways are humans computationally better or more efficient than computers? Can we leverage this fact toward any useful end? We will take a look at some of the ways that people are already doing this to improve accessibility and our ability to search.
EDIT: The GWAP site appears to be down. If you are unable to access it, visit Google reCAPTCHA, do 2 text reCAPTCHAS and 2 audio reCAPTCHAS. Explain in 2 sentences how what you are doing is contributing to a computational problem.
Play a different game (not the ESP Game) at GWAP. Write 3-4 sentences to explain how humans are contributing to a computational problem. Do you think this game is an effective way harness human brain power? Turn in a file called "eshw3_uwid.pdf" of your answers to the link above.
Links:
Files:
This week we'll talk about artificial intelligence. What does it mean for a computer to be "intelligent"? What kinds of problems does AI help us to solve? We will take a look at different strategies computer scientists use to write intelligent programs.
Turn in a .doc, .txt, or .pdf file of your answers with the link above.
Files:
There is no session this week.