Exploration Sessions

Each week we will offer a different opportunity to explore extra topics in computer science with our head TA, Nick Garrett (ngarrett at cs.washington.edu). 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 166 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 10 -- No Exploration Session This Week (Finish Critters and study for your final!)

Week 9 (Critter Hacking) -- Thurs, May 24 3:30-4:20 - GWN 201 icon Turn in Exploration HW8

  • This week we'll look at some awesome things that can be done with Critters. This will not help you complete your Critter assignment or win the Critter tournament. It is just for fun.
  • Homework -- Due Thurs. May 31, 2012 - 3:30p.m.
    • Turn in one file: critter.txt
    • Tell me about something awesome you want to implement in your critter, but don't know how to implement. What steps you would take to figure out how to implement your awesome feature? If you did implement it, what was the most challenging part?

Week 8 (Ruby) -- 5/17/2012 icon Turn in Exploration HW7

  • Ruby is another programming language like Java. Ruby is good for writing programs to process text and other data. It's used heavily in the Linux operating system and at companies like Amazon and White Pages. We'll take a very brief look at Ruby - it's capabilities and similarities and differences to Java.
  • This week's assignment doesn't require you to program in Ruby, but feel free to download Ruby and try it out using the links below. Learning more than one programming language makes you a better programmer in general.
  • Links from this session:
  • Homework -- Due Tues. May 24, 2012 - 3:30 p.m.
    • Turn in one file: advantages.txt
    • Point out one advantage that Java has over Ruby and one advantage that Ruby has over Java. Give an example of a program that would be easier to write in Ruby because of the advantage that you pointed out.

Week 7 (Web Programming) -- Thurs, May 10 3:30-4:20 - GWN 201 icon Turn in Exploration HW6

  • What does it take to put together a web page like your Facebook profile or the Google search page? This week we'll take a look at the breakdown of a web page and the technologies required to produce a standard Internet experience. We'll learn, at a high level, how web technologies, such as HTML, CSS, and Javascript affect the appearance of a web page.
  • Homework -- Due Tues. May 17, 2012 - 3:30 p.m.
    • Turn in 1 file: web.txt
      • Choose a website that you use regularly (a simple one would be best). In a text file, list the technologies that you think are used by the site and how they are used (i.e. what parts of the page are the results of which technology). Give an example of a CSS style rule used on the website. Remember in Chrome you can view the source code for a page with CTRL+u, and open the inspector with CTRL+SHIFT+i. Also you can right click an element and choose 'inspect element'. In Firefox, you can install Firebug to get the same functionality.
    • Here's a very basic guideline to the features of the technologies that we discussed:
      • HTML - Content
      • CSS - Styling
      • Javascript - Page interactivity/updating
      • Ruby on Rails/PHP/PerlMason - Dynamic page content creation
  • Some background materials

Week 6 (Security/Hacking) -- Thurs, May 3 3:30-4:20 - GWN 201 icon Turn in Exploration HW5

  • This week we will be exploring hacking and computer security with guest lecturer Franzi Roesner. She has worked at Amazon, and Microsoft in the past, and is part of the UW CSE Security and Privacy Research Lab.
  • Homework -- Due Thursday May 10, 2012 3:30pm
  • Option 1:
    • Watch a movie that involves computer security or hacking. Turn in a text file called movie.txt with the name of the movie you watched, whether the computer security issues or hacking was realistic, and why you do or don't think it was realistic. Possible movies are:
  • Option 2: In a file called car.txt, tell me three things that you think car manufacturers could do to make their cars more secure from attacks like the ones Franzi presented.

Week 5 -- No Exploration Session This Week (Study for your Midterm!)

Week 4 (Grammars) -- Thurs. April 19 3:30-4:20 - GWN 201 icon Turn in Exploration HW4

  • This week we will be exploring grammars and some fun applications. Computer scientists care about grammars because we produce our own languages (like Java) and we want to understand the various programming languages that we work with. We will explain how to express a grammar in a formal manner and the homework will involve writing your own grammar file for a language that you make up.
  • GrammarSolverMain.exe Download this program to generate sentences from grammar files. This will only work on Windows. If you don't have a Windows machine, the IPL is available for all of your Windows-based needs.
  • Homework -- Due Thursday April 26, 2012 - 3:30 p.m.
  • Create a grammar with at least 3 productions (one production per line).
    Recall that each production has the form:
    non-terminal : terminal | terminal | terminal
    Although the "terminal"s above can also include non-terminals
  • Turn in your grammar in a file called grammar.txt. Here is an example to look at for formatting.
    You can optionally turn in some output generated from your grammar in a file called output.txt
  • Be Creative! Some ideas for grammars presented in lecture were:
    • Excuse generator
    • Java generator
    • English generator - valley girl style
    • English generator - brah style
    • Gangster name generator
    • Algebraic expression generator
    • Website generator

Week 3 (Computer Animation) -- Thurs, April 12 3:30-4:20 - GWN 201 icon Turn in Exploration HW3

  • This week we will explore the technology behind computer animation. We'll take a look at animation opportunities here at the UW as well as in industry. We'll see how animation can be accomplished using simple tools, like our own DrawingPanel class, or using more complicated tools for a much more impressive effect.
  • Slides from the lecture: icon PDF
  • Animated films produced by UW Students.
  • For homework, turn in an animation created using icon DrawingPanel.java in a file called MyAnimation.java. Optionally, use DrawingPanel to save your animation as a GIF file and turn it in as animation.gif. Here is the example that I showed in class...but you don't have to make something this complicated. Kirby!
  • We talked about using loops to change the position, size, and color of objects, and also to create gradients.
    • icon Motion.java We're changing the x,y position of an object based on the loop counter.
    • icon Size.java We're changing the dimensions of an object based on the loop counter.
    • icon AnimatedColor.java We're changing the color of an object based on the loop counter.
    • icon Gradient.java We create new colors whose Red, Green, and Blue componentts are based on the loop counter.
    • icon Polygons.java I mentioned in class that I'd post an example of how to create arbitrary shapes.

Week 2 (Thinking Machines/Artificial Intelligence) -- Thurs, April 5 3:30-4:20 - GWN 201 icon Turn in Exploration HW2

  • This week we will be thinking about thinking (meta thinking). In particular, can machines think? If they can, how would we know? These kinds of questions are central to artificial intelligence, which is a field of computer science. we'll look at some cutting edge AI research, and we'll have conversations with a few programs that appear intelligent. The homework will involve having a conversation with one of these programs and writing a few sentences about whether you think machines can think.
  • Links from this session:
  • Homework - Due Thurs. April 12, 2012 - 3:30 p.m.
    • Turn in one file: conversation.txt
    • Talk to Cleverbot or A.L.I.C.E. (links above). Copy and paste your conversation into a text file and submit it. Your conversation must consist of at least 10 lines entered by you (along with the 10 responses from the chat bot). Also tell me whether you think the conversation demonstrates that the chat bot is intelligent.

Week 1 (Intro) - Thurs, March 29 3:30-4:20

  • This week we'll talk about some fundamental questions for our course such as:
    • What is a computer?
    • What awesome things can we use them for that you may not have though of?
    • By the end of the course will I be able to do anything interesting/useful?
    • What fun things can I do in the major and beyond?
  • We'll talk about what to expect from exploration sessions and what you'd like to get out of them.
  • I'm (Nick) open to suggestions for future topics or modifications to planned future topics.
  • Possible future topics are:
    • Week 2: Artificial Intelligence
    • Week 3: Computer Animation
    • Week 4: Computer Security/Hacking (Guest Lecture)
    • Week 5: Grammars
    • Week 6: Ruby
    • Week 7: Web Programming
    • Week 8: Server programming - A web app
    • Week 9: Interacting with webpages from Java
    • Week 10: Critter Hacking