Model-checking and software

One of the most frequently asked questions from high school students interested in computing is on the difference between computer science and computer engineering. There are many similarities, of course, including the chance to solve world-changing problems, the dynamism and creativity of the field, and great job opportunities. But at the risk of over-simplifying, I usually say that CPE has relatively more emphasis on hardware and CS has relatively more emphasis on software. And then, tongue-in-cheek, I sometimes go on to make cheap shots like claiming that software is what really makes computing so flexible and powerful, and pointing out that there are way more companies that design and build software than there are that design and build microprocessors.

Of course I’m biased on the issue. But software just continues to amaze me at how challenging and interesting it is. For example, there is an interesting interview with the 2007 Turing Award winners, published in the July 2008 issue of CACM, on the topic of ‘model-checking.’ Model-checking is the modern descendant of (provable) program correctness; it has had some good successes and continues to receive attention from some really smart people. There is still much to do, however, especially on the software side. According to Joseph Sifakis, ‘For hardware, it’s relatively easy to extract mathematical models, and we’ve made a lot of progress. For software, the problem is quite a bit more difficult.’ Fellow award winner, Edmund Clarke simply says, ‘software verification is a Grand Challenge.’

Read More

A computer is just a screwdriver

Recently a high school student told me he was advised to major in mechanical engineering rather than computer science because ‘computers are just a tool; you need to learn to do something with that tool.’ Interesting thought. Deserves a response. Maybe this is one of the reasons so few people are studying computer science, despite its intrinsic fascination and despite outstanding career prospects. Maybe people are so accustomed to computers that they take them for granted and don’t view them as objects of intellectual interest or world-changing potential any more. Maybe computers are now no more interesting than roads or motors or batteries—things that just work and you use them to do something more interesting. Oh wait. You mean there’s still interesting and important work to do on roads and motors and batteries? So isn’t it at least plausible that there is interesting and important work still to be done with computers?

I’ll grant that a computer is ‘just a tool’ in some sense. But the programmability of this tool makes a profound difference. By the way, this is why software is especially interesting and important, in my (biased) view.

Read More

Computers save energy!

Every week it seems like a hear of a cool new way in which someone’s life is made better through the creative use of computing. From this article in the Christian Science Monitor, entitled ‘Internet Helps Americans Save More Energy Every Year,’ comes this little tidbit:

‘… delivery giant UPS introduced new software to develop more efficient routes and help drivers avoid left-hand turns. Result: 28.5 million fewer miles driven and 3 million gallons of gas saved each year.’

Nice story. And simple enough to explain to your mother!

Read More

The Image of Computing

Computer scientists are doing a lot of self-analysis these days. ‘Why are so few students interested in studying CS?’ ‘What are the big questions CS should be answering?’ ‘How can we better explain what we do?’ Lots of discussion, hopefully with some good results for our field and for the world (see for a recent contribution to the discussion — there is plenty of useful propaganda there if you are considering CS as a major or a profession).

In fact, computer scientists have done relatively little of this kind of thinking during the short history of the field. I don’t remember worrying too much about the image of computing when I got into this business 20-some years ago. There were too many interesting things to learn and do to have time to worry about image. In some sense the field has been too young to ask and answer these kinds of questions. We’re still establishing our place in the world of science and engineering. And most of the people in the field have themselves been relatively young, busy establishing careers and moving at internet pace to create, innovate, solve problems, and build cool things. So it’s pretty interesting to watch now that we have both the people and the motivation to step back and address these big high-level questions.

Read More

Engineering Expo

Each fall the Student Engineers’ Council organizes an amazing job fair called Engineering Expo for majors in the College of Engineering, including computer science majors. This year more than 250 companies will show up, including 99 that indicate they want to talk to CS majors about full-time jobs or summer internships. No question this kind of exposure to great companies is one of the major benefits of studying at a school like Virginia Tech.

And about that job market … um … it’s pretty good. We expect to confer about 100 BS degrees in CS this year. There are 99 companies at Engineering Expo who want to talk to CS majors. Seems like a pretty good supply/demand ratio … if you are on the supply side.

Read More

Computing is a natural science?

Peter Denning, one of the big idea people in computer science, has an interesting article in the July Communications of the ACM, entitled ‘Computing is a Natural Science.’ Quoting from that article: ‘Information processes and computation continue to be found abundantly in the deep structures of many fields. Computing is not—in fact, never was—a science only of the artificial.’ He goes on to describe the evolution of computing, from a tool to do things faster that I already know how to do (e.g., analyze data, manage business processes), to a new approach which allows me to do new things I hadn’t considered before (e.g., computational science, data mining), to a fundamental idea or model used to understand other fields (e.g., biology, social science).

Good stuff. And yet another reason to study computer science today! Deep ideas about algorithms and information representation and processing are being used to study a wide variety of natural and societal systems. It’s an easy guess that new insights from computing will continue to emerge in even more fields.

Read More

Cool companies

I visited a cool company yesterday. Apologies for using the term ‘cool,’ but most people know it when the see it. And this place definitely looks like a cool place to work. It wouldn’t be for everyone mind you, since the location and the very clear company culture wouldn’t be to everyone’s liking. But this company is an example of one of the great things about the computer science field: there are a lot of really cool companies that hire our graduates.

This particular cool company is in the Fortune 500 and is very well-known in its market. Very few people would think of it as a software company. It is. Their success depends completely on their ability to innovate and create in the software sphere. A majority of the technical people they hire have computer science degrees. They like computer scientists’ problem solving skills and their ability to approach problems from different angles (which is why diversity is so important, by the way); they like the energetic can-do attitude of CS graduates. ‘There ought to be a way to do this better.’ ‘What new things can we do that meet customer needs in this rapidly changing field?’ ‘How can we push technology to do things better, faster, cheaper?’ This is how CS graduates think and employees at this company get to operate in this mode most of the time. The people we spoke with clearly like the idea of getting up in the morning and going to work!

Read More

Clean slate internet redesign

There is an article in the current issue of the Chronicle of Higher Education that gives a nice overview of the current push to make significant improvements to the internet. Lots of things could be better. Lots of things were not anticipated when the internet was designed 30 years ago.I especially like the quote that closes the article, from Jennifer Rexford of Princeton’s CS Department:

‘People built buildings before there was civil engineering. But a lot of them fell down. Eventually, out of those experiences, people developed principles that allowed for sound construction. We’re sort of at the same point with the Internet. We’ve learned a huge amount. Now there’s a need to go to the next level. The Internet has become so important that the stakes are a lot higher. We need a sound foundation so we can build networks that are worthy of society’s trust.’

This gets at something I often tell students who are interested in computer science: I believe we are much closer to the beginning than the end of the era of new and important and interesting computer science opportunities.

Read More