Posts Tagged ‘bandwidth’

Midterms, Math, and My Major

Sunday, February 24th, 2008

So although I really don’t have time for it, I’m writing today in the interest of preventing this blog from becoming too stale. It’s amazingly sunny and warm outside this afternoon - 34 degrees. T-shirt weather, I think. Of course, as always, it will be short-lived; tomorrow and Tuesday we’re set to get five inches of snow. Wonderful.

It’s been two weeks now since my two-part “bandwidth saga,” and I’ve really been enjoying my new freedom. My seven-day usage total peaked around 30 GB and has now backed down to around 20 GB. It really is nice to not have to check the bandwidth meter every other minute to make sure I’m not in danger of getting dialupped.

The main reason for my silence recently is that I’m in the middle of midterm season, which looks like it will extend through the whole semester since the exams are so spread out that it takes nearly three weeks to get through them all. My classes this semester are definitely harder than they were last semester, though I guess that isn’t saying much since last semester’s were so easy. The hardest (and least interesting) by far is Math 240, a required course for CS that talks about logic and the math behind sets and trees and such. Though I understand that it could be beneficial to have a mathematical understanding of various CS concepts, I really can’t see myself applying that knowledge very often.

For example, last week we talked about algorithms and big-O notation, both of which I had plenty of experience with in my data structures class last semester. The professor went over some common searching and sorting algorithms, writing them in some crazy Pascalish pseudocode. (Pascal, seriously, in 2008?) Then, in talking about big-O notation, which is used to express the complexity of an algorithm, he proceeded to talk about the exact definition of big-O notation, and how you can prove that a polynomial is O(whatever), and so on. I guess this would be cool if I had any liking for math whatsoever, but mostly it just seemed confusing. Big-O notation is a simple concept. If you had the following code:

<?php

function loop($message, $times) {

    for($i = 0; $i < $times; $i++) {

        echo $message;

    }

}

?>

You would say that the function loop is O(N). N represents the problem size, which in simple cases is dependent on one variable but can sometimes be dependent on two or more. The function contains two major statements, the for loop and the echo statement, which prints the contents of a variable to the browser. The echo statement occurs in what is called “constant time”, or O(1), meaning that no matter what the value of $message is, the statement will take the same time to execute. The for loop, however, is not constant because the number of loops varies depending on what $times is set to. So the problem size N of the function is controlled by $times ($message doesn’t matter), and the function is O(N) because the for loop only contains constant-time statements. O(N * 1) is still O(N). If the for loop had contained another loop of some kind, also dependent on $times, the function would be O(N2). If the inner loop were dependent on something other than $times, the function would be O(N*M).

Going back to the Math 240 lecture, if you have a polynomial time function g = 2N2 + 8N + 1, representing it with big-O notation is easy. You drop all terms except the highest-degree one (2N2), and then drop that term’s coefficient. So the function g is O(N2). In Math 240 though, we take it further and prove exactly why that function is O(N2) using the definition of big-O notation. It’s rather abstract and confusing, and I really have no idea when I’ll need to know it in the real world. So far, this has been one of my problems with the CS program here in general. It feels very traditional, very by-the-book. You take classes like Math 240 because that’s just what CS majors do, not necessarily because there is much reason for it. It isn’t completely bad; it just feels like the curriculum is a little out of sync with what is really going on in the software world. You learn Java and C++, there is only one web programming course to take, software engineering concepts don’t seem to be taught much at all (or at least not officially). And yet people wonder why CS grads are often so woefully inadequate when they become software engineers….

The problem is that computer science is a massive and ever-expanding field. There really is no other field that is experiencing the kind of growth that CS has had for the past thirty years or so. And because of all this growth, it really doesn’t make much sense to have one giant umbrella CS major anymore. Instead, universities should have a separate school for computer science, where you could major in software engineering or computer graphics or assembly-language programming or whatever. At the very least, CS majors should be allowed to concentrate in one area. Trying to teach everyone everything just doesn’t make sense anymore.

Some would respond that the point of a college education isn’t to train you for a job - college is supposed to be more about abstract, foundational things that prepare you to be better in the long run. This may work for business or history, but in computer science even the basic things change pretty rapidly. In the past five years, we’ve seen a shift to multi-core processors able to run many instructions at once and superpowerful GPUs capable of doing far more than just generating 3D graphics. Programming either of these requires a very different manner of thinking that isn’t being taught today, and understanding them in an abstract, low-level way won’t be enough.

Hopefully I will be proven wrong and I will graduate with a great understanding of computers and software engineering, well prepared for the advancements to come. But, just as with the University of Wisconsin in general, I feel uncertain.

Ask and Ye Shall Receive?

Monday, February 11th, 2008

I got an email today from the Division of University Housing:

Dear University Housing Resident,

Recent upgrades to our ResNet infrastructure allow us to remove the quota that limited your bandwidth use, effective Monday, February 11, 2008. Students using ResNet are no longer subject to bandwidth caps, and any previous warnings or violations for exceeding bandwidth will be restored to normal speed.

We are pleased that this change will provide you even better service. This increased access will be helpful to you when using legal online video streaming services that have recently become available, such as NetFlix online delivery of paid movie rentals.

(…)

Best wishes,

Sathish Gopalrao
Director of Information Technology, Division of University Housing

Problem solved. Pretty strange that I should get that email only two days after writing about how annoying the bandwidth cap was. Woo!

On Bandwidth Cappery

Saturday, February 9th, 2008

At Wisconsin, students in university housing are connected to the Internet using a service called ResNet. Generally it is blazing fast: 18 Mbps down and 3 Mbps up. For comparison, decent residential DSL service is usually about 3 Mbps down and 768 Kbps up. This means that in a perfect world I could download an MP3 in about two seconds or a DVD in around an hour. (Of course, most websites are on 100 Mbps connections shared with a bunch of other sites, so real speeds are maybe half that.) That’s pretty awesome, though Internet users in Japan or South Korea would probably laugh at the idea that 18 Mbps is fast in the United States.

One thing that is not awesome, however, is that I am given all this glorious bandwidth with a few caveats. If I exceed 10 GB in any 7-day period, my bandwidth usage gets limited. Severely. It becomes dial-up. I have to turn images off so that pages load faster. Streaming audio and video is impossible. I can’t Skype with my boss in Arizona. I can’t realistically load more than one page at a time in my browser. It’s crippling, and it sucks. The limits come off after a few days of frustration and pain, and then I realize just how different the Internet is with a broadband connection.

Why have a bandwidth cap like this? I would guess that about 50% of ResNet users never come close to exceeding the cap. Things like Facebook, the iTunes Store, and the occasional YouTube video consume next to nothing. Another 25% might use more than 5 GB in a week every once in a while. You could call these people power users, knowledgable users, but not exactly hard-core users. Another 20% are in the category I’m in: they’re deeply interested in technology and the Internet, and always on the hunt for high-bandwidth content (and I don’t necessarily mean illegal stuff - even tech-unsavvy students have discovered the awesome HD episodes of LOST on ABC’s website). Along with using Skype, the iTunes Store, ABC.com, YouTube, and NFL SuperCast (last semester), I download Linux distros from time to time, new software or updates to installed apps, and large files related to my job. There is probably no day in which I use less than 500 MB of bandwidth. Multiply that by seven days, and I’m up to 3.5 GB of bandwidth per week no matter what. In a heavy-traffic week I might hit 15 GB.

But that is nothing compared to the final 5%’s bandwidth needs, the users who work with scientific data or produce video or download a lot of movies and music over BitTorrent. The majority of these people are probably abusing the network, and the bandwidth caps are in place because of them. At Case Western Reserve University, which my friend Garrett Singer attends, it was found in 2006 that 34 students were consuming 73% of the bandwidth allocated to all students living in residence halls on campus. That’s pretty insane, and it’s no wonder Wisconsin uses caps to thwart these kinds of users.

However, 10 GB is too low. According to the ResNet bandwidth usage policy, 10 GB is “a very large amount of data.” It was a very large amount of data. Two years ago 10 GB would’ve be fine. But online video has exploded over that period, as has VoIP calling (sometimes with video). Considering that the 18 Mbps connection speed is a tad excessive currently, it doesn’t seem like it would be such a big deal to lower the speed a bit and increase the cap to 20-25 GB. Then, people in the power user group would have more than enough bandwidth (you could sit on your computer for every waking hour and download 200 MB each hour continuously without breaking 25 GB).

As it is, the cap is annoying and inconvenient, but not impossible to work with. You can reset your usage total twice each semester (I used both resets and got throttled once last semester), and with time you get skilled at keeping yourself just under the cap. I cannot imagine what it would’ve been like last year though, when the cap was at 5 GB. I would’ve died.

Feesh.

Update: Two days after posting this I learned that the bandwidth quotas had been removed! Crazy.