Exploration Sessions

Mondays, 3:30pm in room EEB 105.

Each week we will offer a different opportunity to explore extra topics in computer science with one of our TAs. 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 180 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.

Week 9 (Video Games) - Monday, June 3 3:30-4:20 in EEB105 icon Turn in Exploration HW9

This week we will have a guest session given by Aaron Nech. Do you like to play video games? Why not try making one? In this session, we'll build a simple 2-dimensional game. We'll cover how game code organization, basics of object interaction, and implementation of user controlled characters.

Week 8 (No Session) - Enjoy your Memorial Day

Week 7 (Computational biology) - Monday, May 20 3:30-4:20 in EEB105 icon Turn in Exploration HW7

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.

Week 6 (No Session) - we'll be grading your exams!

Week 5 (Cryptography) - Monday, May 6 3:30-4:20 in EEB105 icon Turn in Exploration HW5

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.
  • Session slides
  • Python RSA code
  • Homework -- due Monday, May 13 - 3:30pm
    • Crack this code and answer the question: 0919 20080919 030916080518 01 192018050113 1518 0212150311 030916080518? 230825?
    • Click here for a hint.
    • Click here for a second hint.
    • Turn in your response in answers.txt to the link above.

Week 4 (Search and Google) - Monday, April 29 3:30-4:20 in EEB105 icon Turn in Exploration HW4

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 for sorting search results and see how it helps refine the search for your query through an "inverted index". We'll write some code together to build a mini search engine, and we'll see that building an Inverted Index uses the same Collections ideas (maps and sets) we have been discussing in class.
  • Seminar slides
  • Google Trends
  • Google Flu Trends
  • Inverted index code we wrote
  • Homework -- due Monday, May 6 - 3:30pm
    • Visit Google Insights and play around with the tool. Find a search term that satisfies each of the following conditions (you should have 4 separate search terms):
      • there is a steady increase in the term's interest over time
      • there is a steady decrease in the term's interest over time
      • the highest regional interest in the term is from Australia
      • there is a periodic cycle of interest in the term over time
    • Turn in your response in answers.txt to the link above.

Week 3 (Artificial Intelligence) - Monday, April 22 3:30-4:20 in EEB105 icon Turn in Exploration HW3

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.
  • Files
  • Links
  • Homework -- due Monday, April 29 - 3:30pm
    • Have a chat with ALICE. Give an example of an interaction where ALICE responded in a human way, and an example where ALICE responded in an unnatural way. Why do you think it was difficult for ALICE to respond to you?
    • Turn in a file called answers.txt to the link above.

Week 2 (Networking) - Monday, April 15 3:30-4:20 in EEB105 icon Turn in Exploration HW2

This week we'll discuss the wide world of computer networking. How do two computers talk to each other? How does the Internet work? How do wireless and RFID work? How has the world change with the ever-increasing number of connected devices and the rise of mobile devices? We'll consider these questions and others.
  • Files
  • Links
  • Homework -- due Monday, April 22 - 3:30pm
    • 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").
    • HINT: You can use the String split() method to split apart a string. For example, if you say 'line.split("&")' on the above example, you will get back an array of length 2 with the two elements "a=321" and "b=54". You can split on "=" for each element to get the individual elements a and b. Use Integer.parseInt() to convert from Strings to ints.
    • 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, not on perfect external correctness).

Week 1 (Security) - Monday, April 8 3:30-4:20 in EEB105 icon Turn in Exploration HW1

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, social engineering, and current research in the UW Computer Science Department.
  • Seminar slides
  • Professor Tadayoshi Kohno and his team on Nova Science Now
  • Wired article on the Palin email hacker
  • Homework -- due Monday, April 15 - 3:30pm
    • We talked about the timing attack against a password-checking method. Design a quick experiment that demonstrates that this attack actually exists. The attack should use the given starter code (below) that already has the good and bad versions of the method, as well as the timing code.
    • Hints: Print out your results for analysis. Average over multiple runs. Like we saw in class on Wednesday, you may also need to "warm up" before you start timing so that Java optimizations don't affect your timing. You should use strings of at least length 10 in order to see results.
    • Turn in your code (TimingAttack.java).
    • Starter code