Thursday, August 8, 2013

“Is Computer Networks a boring area?”

Over on Quora, the question-and-answer Web site, my hackles were raised when I saw this question that seemed out of left field:
Is Computer Networks a boring area?
I'm asking this question since I'm looking at possible areas to do Masters in, and one of them is Computer Networks. [...] I've never met anyone who's been passionate about this field as of yet. I've met people from areas like data mining, AI, computer vision, robotics etc. who're fiercely in love with their subject. Thirdly, the very nature of this field made me ask this question. Innovation seems slow in general, especially hardware, and it appears that you get lost in a sea of implementing protocols and going through a lot of fine lines of code, instead of working on the next big thing.
I'd be glad if someone proves me wrong. Am I missing something here?
I couldn't help myself from piping up to defend the honor of computer networking (and discuss my own work in the process). My own answer is below the fold, but I'm curious what readers here would say to this.

My answer:

I can't agree at all!! Computer networks and communications have much to arouse the passions. But the important question is what gets you going. 
Here are a few recent innovations in the field that you may have heard of. All of this stuff would be in-scope (indeed, has been in-scope and published about) at the major academic conferences, e.g. ACM SIGCOMM, Usenix NSDI, IMC, MobiCom, MobiSys, CoNEXT, ANCS, INFOCOM, etc.: 
  • the Internet
  • the World Wide Web
  • Wi-Fi
  • LTE / cellular packet networking
  • NFC / RFID / low-power and no-power communications
  • Skype / Facetime / Google Hangout / YouTube / Netflix
  • Peer-to-peer networking applications
  • Distributed hash tables, Bitcoin, Tor, Bittorrent
  • Malware, viruses, spam, worms, intrusion detection
  • Privacy / location privacy / breaking the privacy of existing stuff
  • social networking / Facebook / quantifying the influence of friendship
  • Dropbox / network file storage
  • XHR / Ajax / Meteor / dynamic Web sites
  • massive datacenters running MapReduce / Hadoop / Spark to crunch Big Data
  • Turbo codes / rateless codes / Viterbi algorithm / lots more stuff about codes
  • MIMO / two-way radios / mesh networking
  • securing radio-controlled implanted pacemakers and defibrillators against being taken over by supervillains (They Can Hear Your Heartbeats, SIGCOMM 2011)
Also, in 1998 there was a nice paper explaining the design of a new search engine by some grad students at Stanford (S. Brin and L. Page, The Anatomy of a Large-Scale Hypertextual Web Search Engine). Their paper was published in a journal called "Computer Networks and ISDN Systems." I'm not sure what happened but from reading the paper again, it had some good ideas and I hope they found their way into industry somehow.
For some stimulating ideas of open questions in the field, see Craig Partridge, "Forty Data Communications Research Questions," SIGCOMM Comput. Commun. Rev., Sept. 2011, available here (PDF) 
I can't think of ANY area of computer science that has produced more tangible changes for the average person over the last 20 years than networking and communications. You might have heard of the smartphone and Wi-Fi? The Web? Google? These have become pretty popular. This field has literally produced civilization-changing developments in just the last 20 years. (Can physics say that? Can computer vision?) 
AI and machine learning and robotics and CS theory and programming languages and computer architecture and graphics are great, don't get me wrong. And there's no reason we can't combine these things. Some of my own work is about trying to come up with learning techniques to help computers discover new networking protocols on their own. 
That is, up to this point we have had humans creating sensible algorithms by hand (e.g., TCP Cubic) to run on a network's endpoints, in order to share limited network resources between all the hosts contending for them. But the emergent behavior of these algorithms when you have a whole flock of machines running them is actually quite complicated and difficult to describe! (Indeed, the "teleology of TCP" -- the ends that it tries to achieve -- is still unknown. And at their current rate of progress, the queueing theorists will need about another 50 years before they can solve these kinds of problems analytically.) 
In my work, we flip this around: the humans specify their prior knowledge about the network and what they care about (throughput? low delay? fairness? some compromise?), and computers then create the best algorithm to run at the endpoints to realize those goals. It turns out that not only are the best computer-designed endpoint algorithms way better than our human-designed algorithms to date, they are actually even better than algorithms that depend on code running INSIDE the network. 
Think about that -- a computer-designed end-to-end algorithm can outperform our best in-network algorithms. That's kind of crazy (and not something that we have a theory to reason about yet), but it suggests real implications: instead of putting more crap inside the network to try to fairly adjudicate between your Skype call and your neighbors who run Bittorrent, maybe we can keep the Internet "dumb" after all, and preserve the real benefits of having a dumb network and the neutrality of network operators. 
Benefits like: a college kid in Massachusetts can make a crazy new service (Napster) or website (Facebook) without needing AT&T's or Comcast's permission. By now, these side effects of the network architecture have had a dramatic influence on most of the industrialized world. 
We haven't presented these results yet, but you can see some of our prior work here (

Or here (
So, sure, I am passionate about it! And I think the work is intellectually interesting and fun and provocative, and ties in to a lot of exciting work in multi-agent planning and economics and machine learning and resource allocation and information theory. But the important question is what gets you going. No advisor can manufacture passion and excitement for you out of whole cloth, and typically a master's student will have to be even more self-sufficient than a doctoral student to make sure they are working on a project that interests them. (The lab is not going to save its coolest project ideas in a folder, waiting for a master's student to come along and start work on them.)
I left school and worked "outside" before coming back to finish my graduate degree, and would recommend that path to anybody. If robots or vision are the things that really get you going, or you're not sure, or you need some time away to figure that out, by all means, if you can afford to take the time to think about it, that is a fortunate position to be in. Do what's right for you.
The better prepared you are to get cracking from day 1 (or at least start noodling around) in an area that seems cool to you, the more fun you're going to have when you get started and the better things will go.


  1. I did enjoy reading articles posted on this site. They are impressive and has a lot of useful information.
    computer hardware components

  2. I truly appreciate this post. I¡¦vet been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thanks again.
    Hadoop Training in hyderabad

  3. provides authentic IT Certification exams preparation material guaranteed to make you pass in the first attempt. Download instant free demo & begin preparation. 7495X exam questions answers