Some of the new ICS undergraduate and M.S. students may not have thought about the option of doing a thesis, and that some of the older ones may have thought about it but decided it wasn’t worth pursuing. After all, it’s extra work, so why do it? Aren’t theses just for people who want a Ph.D., not for people who want a “real” job after graduation?

That’s a very good question, and deserves an answer. Imagine that you are blind-folded and sat down before two bowls of ice cream. One of them has a scoop of Lucerne Vanilla. The other one has a scoop of Ben and Jerry’s Cherry Garcia. Your task is to taste them and decide which ice cream has higher quality ingredients, which one has been prepared more carefully, and finally, which one will be worth more on the market.

Now, let’s change the scenario only slightly. This time, you are a recruiter for either Motorola, Hewlett-Packard, Tektronix, Sun Microsystems, NASA, etc., and you have to choose between one of two ICS M.S. students to interview. Your “taste” of each candidate consists of their application.

The first candidate’s application consists of a resume, transcript of courses, and two average recommendations (in other words, two two-paragraph letters saying, “This student took my class, worked hard for a semester, and got an A.”)

The second candidate’s application consists of a resume, transcript of courses, three recommendations (at least one of which is a two *page* letter detailing a Professor’s close involvement with the student over the course of 12 to 18 months, specific examples of the student’s capabilities in creative problem solving, motivation, and intelligence, the Professor’s personal assessment of the student’s future prospects, and how the student compares to others the Professor has known during his/her career), and finally, a document written by the student containing the following:

  • A description of an area in computer science, and several important open problems in that area.
  • The design of an approach to understanding and potentially solving one of those problems.
  • The implementation of this approach. It might be a software system, along with an URL to the source or binaries for review. It might instead be a review of extant mechanisms and a novel analysis of them.
  • The evaluation of the approach after implementation. Did it really solve the problem and/or provide new understanding? If so, what got solved or better understood? If not, what was wrong with the design?
  • What should happen next? Should this be pursued further? If so, why? If not, why not? What should be pursued instead?

The reason why the second candidate will usually, but not always be picked over the first one is that the second candidate has demonstrated ability to perform several crucial business skills:

  • The ability to analyze a market to determine potential opportunities.
  • The ability to conceptualize concrete, feasible ways to exploit market opportunities.
  • The ability to implement a concept fully.
  • The ability to assess the impact of the concept on the market.
  • The ability to learn from experience.
  • Most importantly, the ability to put it all together in a coherent, well-written package, as is required for business plans, project proposals, and so forth in technology companies.

Sometimes the first candidate is chosen over the second one. This occurs when the actual job is a “worker bee” position without advancement possibilities. The recruiter will correctly realize that the second candidate will become frustrated quickly, go back on the market, and (given his/her credentials) obtain a more challenging position.

As Dave Barry would say, “I am not making this up.” In the past several years, I have consulted with software engineering management from all of the companies I mentionned above, and I have learned important things from this experience:

  • It’s not a cake-walk out there. You are competing against many others, some who will have much more industry experience than you, some who will have degrees from much “classier” Universities than UH.
  • You can compete and win against those other people by demonstrating that you have unique skills and experiences. “Knowledge of C++” isn’t unique. The design, implementation, and analysis of a WWW server that provides new insight into the concept of virtual electronic community, for example, is. (This was the topic of an ICS M.S. thesis by Rosemary Andrada).
  • You can compete and win against those other people if you have a better personal network. I have set up several industry internship positions for ICS students before they even graduated, giving them a substantial advantage over the competition. I also get e-mail from industry colleagues with position announcements and asking if I know anyone. I am sure other ICS faculty are in similar situations. In many cases, formal position announcements are written *after* the candidate they want to hire has been identified through the personal network, and written so that only that person has the qualifications.

One of the biggest mistakes you can make as an ICS student is to think that the school experience consists simply of obtaining a bunch of credits and a piece of paper. All that does is turn you into a container of Lucerne Vanilla ice cream in a freezer packed with Haagen-Daz and Ben and Jerry’s. I know that many of you want to be much more flavorful than that. Doing a thesis, and the relationship that you will build with ICS faculty members as a result, is the absolutely best way I know to add some crunch to your career.