Exploration Sessions

Exploration session time/place:
Thursdays, 3:30 - 4:20pm, in BAG 154

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 9 -- No Exploration Session This Week (Finish Critters and study for your final!)

Week 8 (Critter Hacking) - 3/1/2012 icon Turn in Exploration HW6

  • 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. March 8, 2012 - 3:30p.m. No submissions accepted after Mon. March 12, 2012 - 3:30pm
    • Turn in 1 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 7 (Web Programming) - 2/23/2012 icon Turn in Exploration HW5

  • 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, Javascript, and Ruby on Rails, affect the appearance of a web page.
  • Homework -- Due Tues. February 28, 2012 - 3:30 p.m.
    • Turn in 1 file: web.txt
      • Choose a website that you use regularly. 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.
    • 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 - Dynamic page content creation
  • Some background materials

Week 6 (Ruby) -- 2/16/2012 icon Turn in Exploration HW4

  • 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 will prepare us for next week's exploration session where we'll talk about using Ruby on Rails to write web applications.
  • 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. Feb 28, 2012 - 3:30 p.m.
    • Turn in one file: advantages.txt
    • 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. Type your answers in a text file.

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

Week 4 (Thinking Machines/Artificial Intelligence) -- 2/2/2012 icon Turn in Exploration HW3

  • 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. February 9, 2012 - 3:30 p.m.
    • Turn in one file: clever.txt
    • Talk to Cleverbot and then click "Thoughts so far". 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 Cleverbot).

Week 3 (Computer Animation) -- Thurs. 1/26, 3:30pm in BAG 154 . icon Turn in Exploration HW2

  • This week we will be exploring 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, icon PowerPoint
  • 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 position of objects, size of objects, and 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 Gradient.java We create new colors whose Red, Green, and Blue componentts are based on the loop counter.

Week 2 -- No Exploration Session This Week (Snow)

Week 1 (Grammars) -- Thurs. 1/12, 3:30pm, in BAG 154 . icon Turn in Exploration HW1

  • 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 January 19, 2012 - 3:30 p.m.
    No submissions accepted after Thursday January 26, 2012 - 3:30pm
  • Create a grammar with at least 5 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.
    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
    • Algebraic expression generator
    • Website generator