

Ask YC: is networking class worth it? - lg

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.
======
brooksbp
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.

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

Mathematical logical has very little to do with digital logic.

~~~
brooksbp
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.

~~~
lg
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! :)

~~~
brooksbp
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.

------
DaniFong
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.

------
tlrobinson
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?

~~~
lg
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.

------
staunch
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.

~~~
tlrobinson
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.

------
willarson
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.

------
andreyf
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.

------
jimbokun
Here's as simply as I can put it:

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

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

------
mwerty
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).

------
edw519
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.

