Exploration Sessions

Exploration session time/place:
Thursdays, 3:30 - 4:20pm, in GUG 218
Fill out the survey about what you thought of exploration sessions (skip questions 1-2)

Check out interesting homework results for the HCI assignment

Vote for the topics you want to discuss

Send (anonymous) feedback about the sessions

Each week we will offer a different opportunity to explore extra topics in computer science. 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 170 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 (Software engineering) -- 6/3/2010 icon Turn in Exploration HW9 here.

We discussed software engineering and how different development often is from what we've done in this course: software development methodology, testing, maintainability.

More information:

Homework: (due by Friday, 6/4 midnight via the link above)

  1. Fill out the survey about exploration sessions and software engineering!

Week 8 (Computer vision) -- 5/27/2010 icon Turn in Exploration HW8 here.

With Juliet Bernstein!

First we discussed imaging, the process of collecting light into ain image, similar to the eye. Then we talked about computer vision, which on a low level is processing an image as you might in PhotoShop using filters to change each pixel, on a mid level is finding features of images, and on a high level is image understanding, like facial recognition. We also discussed methods of creating 3D models, such as light filtering and the methods used in PhotoTourism.

More information:

Homework: (due by Friday, 6/4 5 pm via the link above)
    • Check out the PhotoCity game and watch the intro video on the front page.
    • Turn in a document describing your answers to the following questions: When adding new photos to a model, why do you think the photos have to overlap with the existing model? Why do you think that new uncaptured flags can be added at the edge after these uncaptured flags have been added to the model?
    • Play the mini-game and see which photos were easy to find the corresponding flags for and which were difficult. Describe which photos were difficult to match with the correct flag on the building and why (or if you thought all were easy - do you think they'd be easy for the computer?).

    Turn in a .doc, .txt, or .pdf file of your answers with the link above.

Week 7 (Computational Biology) -- 5/19/2010 icon Turn in Exploration HW7 here.

With Gabe Pratt and Rita Sodt!

We discussed the breadth of the computational biology field, applying math and computers to visualize and analyze biological phenomenon. Gabe talked about his research in Rita talked about her research in mathematical modelling of the growth of tumors in the brain. Then we looked at the Fold-It protein game.

More information:

Homework: (due by Monday, 5/31 5 pm via the link above)
    • Download and install Fold-It using these instructions.
    • Play some of the intro puzzles to get used to it.
    • If you get there, try playing one of the Science Puzzles and see what you find!
    • Write up your user name and what parts of the game you think it would be hard for computers to do.

    Turn in a .doc, .txt, or .pdf file of your write up to the link above.

Week 6 (Programming languages) -- 5/13/2010 icon Turn in Exploration HW6 here.

We discussed different paradigms for programming, such as imperative (like we started with in 142), object-oriented (like we've learned in 143), declarative, and functional. We also talked about static typing (checking for types at compile time, like Java) and dynamic typing (like Python). We looked at a grammar for the syntax of Java and some quirky statements we could make.

More information:

For fun:

Homework: (due by Friday, 5/21 5 pm via the link above)

    For this homework, you have some choices! You can do any one of the following:
  1. week 4's SortedIntList homework OR
  2. week 5's filter/map/reduce homework OR
  3. Download the Homework6.java file. First go through and guess whether each chunk of code will compile. Then uncomment each, one by one, and see whether you were correct! For any that don't compile, write why it didn't. Java's grammar is useful for this (you shouldn't need to look further than the blocks and statements). The first two are completed as examples.
  4. Turn in a .doc, .txt, or .pdf file of your write up to the link above.

Week 5 (Python: Dictionaries, Map, Reduce) -- 5/6/2010 icon Turn in Exploration HW5 here.

With Aryan Naraghi!

We covered some functional programming language features that are included in Python, namely map, reduce, and filter. Each of these functions takes a function and a list as a parameter, applies the function to each element of the list, and combines them in different ways. We also discussed anonymous functions and using functions as parameters to other functions. We briefly looked at dictionaries, which are Python's equivalent of Java's Maps.

More information:

Homework: (due by Friday, 5/14 5 pm via the link above)

    Download the homework file with function headers and comments, similar to the one used in lecture. Use python's map, reduce, and filter functions to write solutions for each function. Make sure to look at the provided tests to make sure that your code works, and feel free to make your own test cases as well! You are encouraged to use anonymous functions (see the session code), but you may have extra functions defined if you prefer.

    Turn in a homework5.py file of your answers with the link above.

Week 4 (Python Introduction) 4/29/2010 icon Turn in Exploration HW4 here.

With Allison Obourn!

We covered how to do 142 material in the Python language, including basic syntax, functions, loops, if/else, parameters, tuples, file I/O, lists, objects and classes.

More information:

Homework: (due by Friday, 5/14 5 pm via the link above)

    Download the homework file with function headers and comments, similar to the one used in lecture. Use python's map, reduce, and filter functions to write solutions for each function. Make sure to look at the provided tests to make sure that your code works, and feel free to make your own test cases as well! You are encouraged to use anonymous functions (see the session code), but you may have extra functions defined if you prefer.

    Turn in a homework5.py file of your answers with the link above.

Week 4 (Python Introduction) 4/29/2010 icon Turn in Exploration HW4 here.

With Allison Obourn!

We covered how to do 142 material in the Python language, including basic syntax, functions, loops, if/else, parameters, tuples, file I/O, lists, objects and classes.

More information:

For fun:

Homework: (due by Friday, 5/7 5 pm via the link above)

    For your assignment this week, create a Python file called sortedintlist.py that implements a class SortedIntList. Each SortedIntList object stores a sorted list of values. You should modify our provided ArrayIntList class from the file arrayintlist.py. (The file names intlist are misnomers because you could store any type of sortable value in the lists.) Your file should work with the provided testlist.py. You'll want to review the syntax for classes before writing this program.

    Define (or copy from ArrayIntList) the following operations on your list:

    • __init__(self, unique=False) - constructor with optional unique boolean parameter
    • append(self, value) - adds given value in sorted order
    • __contains__(self, value) - searches the list for a value using binary search
    • get_unique(self) - return whether only unique values are allowed
    • set_unique(self, unique) - set whether only unique values are allowed; if True, removes all duplicates from the list
    • max(self) - return the maximum element from the list; if list is empty, raises an exception
    • min(self) - return the minimum element from the list; if list is empty, raises an exception
    • __str__(self) - return a string representation of the list, such as "S:[4, 5, 5, 17, 17]" or "S:[4, 5, 17]U"

    To throw ("raise") an exception in Python, write the following:

    raise Exception("your error message here")
    

    To do a binary search in Python, use the bisect, bisect_left, or insort functions. Documentation for these functions is at the link below. To use them, remember to write: from bisect import *

    Since the provided testlist.py is not a very good or exhaustive test, you are encouraged to write your own testing code to make sure your list works. If you like, you can turn in your own testlist.py or share your testing code with others on the message board.

    Files:

    Turn in sortedintlist.py with the link above.

Week 3 (Human Computer Interaction) -- 4/22/2010 icon Turn in Exploration HW3 here.

With guest presenter Eli Williams!

We discussed human computer interaction (HCI), the practice of making applications that are intuitive and unobtrustive for people to use. We looked at the 10 Heuristics for user interface design, and used them to discuss several examples of websites and applications.

More information:

For fun:

Homework: (due by Friday, 4/30 5 pm via the link above)
    • Read through the Ten Usability Heuristics.
    • Find a website which you think is poorly designed. Record the url and explain which heuristics it violates and why.
    • Find a website which you think is well designed. Record the url and explain which heuristics you think it does well and why.

    Turn in a .doc, .txt, or .pdf file of your answers with the link above.

Interesting homework results:

Week 2 (Computer Security and Privacy) -- 4/15/2010 icon Turn in Exploration HW2 here.

We discussed computer security, protecting information's privacy, availability, and integrity. We talked about getting into the security mindset by creating attack trees and brainstorming ways of gaining access to Alyssa's computer. We also looked at vulnerabilities in enhanced drivers licences, ORCA passes, and Facebook quizzes.

More information:

For fun:

Homework: (due by Friday, 4/23 5 pm via the link above)

  1. Create an attack tree one of the following situations:
    • Stealing a car
    • Breaking into a house
    • Reading email in someone's Gmail account
    • ...something else you want to hack!
    Make sure your tree is fairly complete and has at least node one with four branches, and a path of length at least three.

    Turn in a .doc, .jpg, or .pdf file of your attack tree with the link above. Your "tree" can be either a picture like we did in class, or a numbered outline. Let Alyssa know if you have trouble with the file!

Week 1 (Computing yesterday, today, tomorrow) -- 4/8/2010 icon Turn in Exploration HW1 here.

This week we discussed a brief history of computing, from the abacus and human computers to the analytical engine and enigma machine. We looked at the quote "There is no reason anyone would want a computer in their home." from the president of Digital Equipment Corp. in 1977. We also discussed two trends that are considered the future of computing - ubiquitous computing (post-desktop computing with devices that are present everywhere) and cloud computing (computing through shared resources on the internet).

More information:

Homework: (due by Friday, 4/23 5 pm via the link above)

    • Choose one of the historical computers listed at History of Computing Hardware or find another description somewhere else. Record the amount of RAM, processor speed, hard disk size, approximate size (and approximate cost if available) of the machine.
    • Look up and record the amount of RAM, processor speed, hard disk size, and approximate size of your home computer (or use a computer in the IPL).
    • Write down your thoughts - how do the values compare?
Record your answers in a file named Homework1.doc or Homework1.pdf and turn it in with the link above.