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
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
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
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
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
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
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
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