Wow. I’m Mr. Manager!

November 9, 2009 at 11:51 AM | Posted in Uncategorized | Leave a comment

Management might seem like a boring idea to those who have an Office-Space-esque perception of the position; fortunately, product management, at least in the way that many software companies define it, isn’t totally about about asking people to come in on Saturday (or move down to Storage B).

The precise definition of a product manager, or PM, changes a little from company to company, but the basic idea is this: while software developers take difficult problems and find creative solutions, PMs take a step back and determine what the problems actually are and why they’re a problem, then work with people to design or improve the product.   Teams discover problems by analyzing a product’s place in the market, conducting software tests or user tests, and identifying gaps in a product’s features or functionality.  They address problems by modifying the code itself, changing the interface, building new features, and marketing the product.  Obviously, taking care of all of these aspects requires a few different specialists (UI designers, developers, testers, and marketers, to name a few), and PMs are tasked with coordinating communication inside of the team and picking up any slack.

Product management is about working with people to solve technical challenges.  You may think of management as unappealingly top-down, but team hierarchy in many software companies is much flatter.  A PM’s job is less about telling people what to do and more about working alongside them to fill in gaps and keep the project on track.  That means that if something needs to be coded, a PM might step in and write some code.  They might mockup an interface or perform user tests, or decide on what features to implement next – essentially, they look ahead and make whatever needs to happen happen.

Most of these tasks require a solid knowledge of computer science, which is why companies prefer – or require – that PMs have a degree in computer science or computer engineering.  Google’s Marissa Mayer is a great example of a product manager (with an awesome job).

UI: rounded corners make everything better

October 19, 2009 at 12:10 AM | Posted in Uncategorized | Leave a comment

One might get the impression from our intro courses that computer science is all about writing Java code, and while it’s certainly the case that some CSE students go on to become hardcore Java haxxorz, many end up solving interesting problems in other languages and many others don’t spend much time coding at all.

There are a lot of different facets that make up a great program, or product, and one of those facets is user experience design.  Different companies might have slightly different definitions for the people who work on user interfaces and the user experience, but they all do essentially the same thing – making sure a product is easy for people to use.

A lot goes into designing a successful user experience.  The engineer has to have a good grasp of both aesthetics and how users behave, which enables them to design something that a user finds visually intuitive.  A background in computer science is invaluable in determining what can actually be done using existing technology.  User experience designers also get to spend a lot of time with test participants, learning about how their designs are perceived, how users interact with them, and what can be done to improve the experience.  It’s a strange mixture of technology, art, and psychology, and it’s vital to a product’s success.

Wikipedia has a good summary of user interface design that’s especially useful for all of the links to related topics.  If human-centered engineering seems interesting to you, you should take a look.

Making your files cloudy

October 5, 2009 at 6:25 PM | Posted in Uncategorized | Leave a comment


You would think cloud computing would be easier in Seattle, but that’s a lame joke, and I would never say it.

A friend pointed me to a pretty cool application today called Dropbox.  I don’t work for them or anything, so I’m not trying to sell you something (and it’s free).  When you install it, the program creates a folder on your computer called “My Dropbox”.  Whenever you’re online, Dropbox automatically uploads the contents of that folder onto their servers.  When you install Dropbox on multiple computers, the folder is shared between your PCs and your files are automatically kept in sync.  It’s sort of magical, and it’s a perfect solution for those of us, like myself, who have a desktop computer at home and a laptop they take to school.

Dropbox is a good example of a big tech trend called cloud computing.  Computers keep getting faster and hard drives keep getting bigger, but there are a few problems with doing everything on a personal computer.  That single hard drive, for instance, might take all your important files with it when it decides to die, or you could lose sensitive data if your computer is stolen.  There’s also quite a bit of processing power that goes, for the most part, unused.  Thanks to today’s much faster internet speeds, however, there’s a way to fix that.

Essentially, cloud computing involves building server farms – basically big warehouses stuffed with computers, and very few ploughs and oxen – and using them to provide tons of processing power and safe, backed-up storage.  The server farm is called the “cloud”.   When you use a cloud, you can replace your single PC that stores all of your data and does all of your processing with a less powerful (and more portable) personal computer that simply serves as a way to get on the internet and use the cloud.

A really popular form of cloud computing is online email services like Gmail, which let you access email from anywhere and keep it backed up.  Google Docs (and soon, apparently, Microsoft Office Online) let you do all of your document and spreadsheet editing on the cloud.  On the professional side, Amazon’s Elastic Compute Cloud allows you to run things on their servers so you don’t have to maintain your own.

It’s pretty nifty.  I’m staring at my laptop and waiting for the day when it’ll turn into an internet-enabled sheet of glass.

Admiral Grace Murray Hopper

October 4, 2009 at 7:29 PM | Posted in Uncategorized | Leave a comment

Some of the TA’s were missing last week. Why were they out? It wasn’t the Swine Flu; they were at the Grace Hopper Conference, a celebration of women in computing named in honor of Admiral Grace Murray Hopper. Hopper is a distinguished computer scientist whose accomplishments were essential to computing and whose legacy has encouraged women to pursue careers in this underrepresented field.

It was Hopper’s idea that programing languages could be written closer to English text rather than machine code or a language close to machine code like Assembly. She developed the first compiler which made English-like languages possible. COBOL, a widely-used early language, was based on her code philosophy. Thanks to Hopper, you don’t have to write your programs in zeros and ones!

Here’s an example of how Hopper made coding easier.


li $a1, 2
li $a2, 3
add $a0, $a1, $a2


x = 2 + 3;

Click here for more information about Admiral Grace Murray Hopper or the Grace Hopper Conference.

Electronic voting machines

October 23, 2008 at 5:06 AM | Posted in Uncategorized | 1 Comment

Several states are using electronic voting in the coming election.  But is it safe?  Some are concerned.  A company named Diebold created the voting machines and wrote the program code that runs on them.  Diebold also creates ATMs, so presumably they have experience in creating rugged machines that cannot be broken by determined hackers.

But there have been some problems with electronic voting so far.  Machines in some elections have crashed or otherwise failed.  Some also say that the machines have visible, easily exploitable flaws and security problems that could allow an attacker to manipulate the vote counts.  One group even published a video showing how easy it was for them to compromise a voting machine.  Additionally, the former CEO of Diebold is known to have been a major contributor and fundraiser to George W. Bush’s reelection campaign in 2004, so some critics are concerned that the voting machines might try to bias themselves toward one party or another.  (Because of all the bad press and reputation, Diebold has recently renamed its voting machine division to Premier Election Solutions.)

How can we be sure that our votes are counted fairly?  Some (including California’s Secretary of State, recently) say that the solution is to make sure that all voting machines are fully open source.  This means that everyone would be able to see all of the source code for the machine to make sure it doesn’t contain any sneaky code or bugs. Others think that a paper trail should be made for all electronic votes so that people can hand-count them if necessary to ensure correctness and avoid vote fraud.


July 31, 2008 at 12:13 PM | Posted in Uncategorized | 2 Comments
Tags: , ,

A Parisian woman slides her purse across a sensor to get into the metro station.  A competitor in the Enduro off-road motorcycle race completes a lap and his time is automatically recorded by a computer.  Fluffy makes his way to a local pound, and his relieved owner gets a call alerting her of his whereabouts.  At an airport, an American citizen waves his passport in front of a computer to retrieve his ticket information.

All of these scenarios are linked by their enabling technology – Radio Frequency Identification, an automatic identification system.  RFID tags are placed on whatever needs to be identified and transmit their information to readers.  Tags don’t necessarily need to be powered: they can use energy from a radio signal to transmit back their data.  Whether or not a tag is powered affects the range at which it can be read.

This technology brings diverse challenges to computer scientists.  Scale is an issue — as more and more items become tagged, how do we design systems to efficiently store and retrieve information?  Similarly, if dozens of items are transmitting their IDs in an environment, how do we display the information in a human-friendly way?  Surely, a big list of unsorted IDs will not be very useful.  The largest challenge, though, is how to deal with issues of privacy and security.  How much information can be stored by a transit system which uses RFID for payment?  How can we prevent hackers from making unauthorized transactions on RFID-enabled credit cards?  How can people manage their own identities if everything they own is tagged?

The RFID Ecosystem at the University of Washington is asking just these questions and coming up with some interesting solutions.

You can also read more about the ORCA public transit card which is supposed to be integrated into Husky Cards this year.

The Turing Test

July 17, 2008 at 12:44 AM | Posted in history | Leave a comment

In 1950, Alan Turing, a computer science pioneer, suggested a simple test to assess the thinking power of machines.  A human would converse with either a program or another human through a computer interface and would try to guess which it was speaking to.  Programs consistently capable of fooling its judges into thinking they were human could be said to emulate intelligence.  Turing figured that trying to measure whether programs really thought would be very difficult — after all, defining creativity or intelligence has been the source of philosophical debate for centuries.  He predicted, though, that within a few decades, computers would be good enough at his test that arguments over whether they could think would become irrelevant.

A quick look at a hilarious transcript from the Loebner Prize competition shows that his prediction hasn’t come true.  Each year, chat bots like George, pictured above, are entered into this competition and the most convincing one wins a cash prize.

These bots may not even come close to passing as human, but they sure are entertaining to talk to!  Try the following:

  • Eliza – one of the first programs of its kind, written in the 60s
  • A.L.I.C.E – winner of the 2000, 2001 and 2004 Loebner Prize
  • Jabberwacky – winner of the 2005 and 2006 Loebner Prize

Jabberwacky and A.L.I.C.E both learn from their conversations with different people but Eliza only looks for key words and responds with stock sentences.  Loops, conditionals and a way to read user input are enough to replicate most of its behavior — cool!

Is CS still a sexy job market?

July 7, 2008 at 11:48 PM | Posted in Uncategorized | 4 Comments
Tags: , ,

There’s some concern these days about the job market in technology fields. But Computer Science students certainly have something to smile about. Computer software engineers ranked #1 of 50 on CNN’s list of best jobs in America.

With an average salary of $80,427 per year, software engineering is the second fastest growing field on the list, with almost 1.2 million jobs expected to be available by 2014. That’s a growth rate of 46.07 percent over the 10 years, or an additional 44,770 new jobs in the field per year.

Additionally, computer/IT analysts ranked seventh on the list. Paying on average $83,247 per year, that field is growing at a rate of 36.10 percent, making it the seventh fastest growing field on the list. The number of jobs for an analyst is expected to jump to nearly 2 million by 2014, an increase of over 67,000 jobs per year.

MONEY magazine, with, rated the jobs based on a variety of factors. The magazine collected data from the Bureau of Labor Statistics and chose positions that had an above-average growth rate over 10 years and required at least a bachelor’s degree. Positions were also rated on stress levels, flexibility in hours and working environment, creativity and ease of advancing in the field.

(courtesy UIUC)

Computing companies are well-represented in’s list of the best overall companies to work for:
1. Google
2. Quicken Loans
6. Cisco Systems
8. Qualcomm

Many tech companies offer interesting and unusual perks: eBay, Quicken Loans, Google, Microsoft

These computing companies rank among CNNMoney’s top-paying overall companies: Adobe, Cisco, Network Appliance, eBay, Texas Instruments, Yahoo!, SAS Institute, Google

Industrial Robots

July 3, 2008 at 11:20 AM | Posted in Uncategorized | Leave a comment
Tags: , ,

Why use robots on assembly lines and in repair shops?  Unlike humans, these can carry on repetitive tasks all day and night without any failures.  They can lift extremely heavy loads and systematically move them within .006 inches of their target.  All of this, of course, is enabled in large part by clever programming.

There also exist many complex software packages for simulating the behavior of industrial robots and attempting to simplify the task of controlling their many axes.

Wikipedia may not be a very academic source, but it has a great article on industrial robots.  You can also learn more about how they are programmed.

One Laptop Per Child

June 30, 2008 at 11:47 AM | Posted in Uncategorized | Leave a comment
Tags: , ,

The One Laptop Per Child project has received a lot of media attention, including a lot of criticism, especially since announcing that the next version of the tiny educational laptop would run Windows XP.

Regardless of its flaws, the MIT-initiated project has inspired many companies, including Intel and Asus to produce their own low-powered machines for developing regions.  The design and production of these brings together technologists, designers, educators, economists… cool!

The current OLPC system is mostly written in Python.  Once you’ve attended some of our Tuesday sessions, why not start contributing?!

The official website.

Next Page »

Create a free website or blog at
Entries and comments feeds.