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
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?
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
Turn in Exploration HW6
Some background materials
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
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
- Ruby on Rails/PHP/PerlMason - Dynamic page content creation
Week 6 (Security/Hacking) -- Thurs, May 3 3:30-4:20 - GWN 201
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
- 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
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.
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:
Although the "terminal"s above can also include non-terminals
non-terminal : terminal | terminal | terminal
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
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: PDF
Animated films produced by UW Students.
For homework, turn in an animation created using 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.
Motion.java We're changing the x,y position of an object based on the loop counter.
Size.java We're changing the dimensions of an object based on the loop counter.
AnimatedColor.java We're changing the color of an object based on the loop counter.
Gradient.java We create new colors whose Red, Green, and Blue componentts are based on the loop counter.
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
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