Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask YC: is networking class worth it?
10 points by lg on Dec 18, 2007 | hide | past | favorite | 16 comments
Hey, expert web app writers. Problem: I have a choice between taking networking or mathematical logic in my final semester. I prefer logic, but in June I'm joining a startup and there's pressure to learn "the practical stuff." So the question is: would taking a networking class give me a big edge, vis a vis writing web apps? Or is this stuff pretty easy to pick up? Overview of the networking material is here: http://remus.rutgers.edu/cs352/F07/#Lecture_Notes The course project is writing a bittorrent client in Java.


I really wouldn't worry about which class to take. Both are important. Too bad you don't have time to take both (assumption). Networks might be more "practical" if you're applying for a job at Cisco. Logic might be more practical if you're applying for a job at Xilinx. Both would be practical if you're applying at Google. I would suggest that you take the one you're more interested in. Personally I would choose the networking class, and it might be more applicable when you start hacking at your startup... but take logic if you like it that much. Don't waste $$$ on a class that you're not as interested in -- especially when you have the luxury of choosing between two CS courses.

Also - don't stress over it. It's your last semester, you'll have the rest of your life to learn whatever you didn't learn at Uni.


"Logic might be more practical if you're applying for a job at Xilinx."

Mathematical logical has very little to do with digital logic.


Calculus has very little to do with Computer Science. I meant that Mathematical Logic will probably exercise your brain better than Networking for something like Digital Logic/FPGA design.


Thanks for the feedback; that's partly my motivation with wanting to take logic--if math requires me to think more, then I should take that, because developing good thinking habits is so valuable. But a bunch of the comments here suggest that the networking material is very useful, so I'm leaning towards that now. And you're right, I have my whole life to learn new things... but damn it, I don't want to be at a disadvantage! :)


I find that I learn things easier and deeper when I'm not forced to. Forced meaning I have to learn some person's way of learning the material, I have to know what someone thinks is the most valuable knowledge of the material, I would be influenced by the person basically...

Then again this theory of learn is completely out the window when it includes someone of expertise. I would be much happier and consistently motivated to take an intro to high-level programming class from Guido (Python) than some recent grad student.


Take the class with the best prof and the students who are most fun to be around.

I would personally take networking, because I tend to find mathematical logic, as it is typically taught, quite dull. There are better ways to make sense of things. For example, people still teach Godel's Incompleteness theorems as he proved them, yet with the halting theorem, which many a drunk freshman can understand, it falls out quite naturally.


Looking at that syllabus, it covers a lot of useful topics for web apps: sockets, threads, TCP and UDP, the major application protocols (HTTP!), cryptography, authentication...

and Web 2.0... WTF!... I'm sorry but that's a ridiculous topic to have in a college networking course. Is "Web 1.0" a prerequisite?


Yeah the gimmicky feel counts against it (also the lack of web 2.0 slides compared to the other topics...maybe they just show the youtube bubble video?) But I know a guy who works at Google and has taken it and says he learned a lot, and I guess I'm willing to assign some baseline level of blind trust to a Googler.


Most web apps don't involve any kind of low level networking. You're dealing with HTTP all day and even the details of that are abstracted away if you're using a modern framework. The networking course might be useful, but it's definitely going to give you a big edge.


It's definitely a good thing to understand how the lower levels of an abstracted system works. For example, read Joel Spolsky's explanation of "Shlemiel the painter's algorithm" problem: http://www.joelonsoftware.com/articles/fog0000000319.html

Perhaps a more applicable example in web applications is the use of things like Ruby on Rails ActiveRecord. If you had no idea how ActiveRecord worked, you might end up making zillions of database queries without even realizing it. I have a feeling this is part of the reason some people have trouble scaling Rails apps...

In the case of networking and web apps, at the very least it's a good idea to know things like the difference between TCP and UDP. You probably don't need to know routing protocols and that sort of thing though.

That said, I'm not sure which to recommend. I took some of both (2 networking courses, and basic logic was covered in discrete math and 2 AI courses I took... including the one I have a final for in 7 hours...) and I've found the networking ones to be much more applicable, but it's also good to know about logic as well.


I would take the networking class. My first reason is that it is a survey course, and networking is a massive topic. Its helpful to have a wide exposure to different parts of it. Once you know a bit about the various parts you are in a much more flexible position to go back and specialize in what seems useful later on. But its handy to have an inkling of the direction you need to look in.

So, I would take the networking course because it'll give you a broader perspective. You'll never know what problems you'll run into, nor the solutions to those problems, but having a broad and diverse background allows you to direct your efforts into the proper direction for the specific problem.


I took both classes - logic last semester, networking this semester.

For CS work, networking definitely a better idea - it's very important to understand how the things you're building on top of work, and it's not all as simple/intuitive as it seems.

Math logic, on the other hand, is enough fun that with a little curiosity, you should have no problem learning everything on your own.


I'd guess that the networking class would include a lot of "lab" or opportunity to try something, fail, get help, try again, and succeed. Mathematical logic, OTOH, is probably a little easier to learn on your own. I'd take advantage of the interaction you'd get in the networking class.


Here's as simply as I can put it:

I wish I would have taken this course as an undergrad.


Thanks, that's the kind of comment I was afraid of :) ...my mind is now pretty much made up.


Take the boring one. You'll find it easier to learn the interesting one by yourself (provided you have time while working on your startup).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: