Subject: Re: Comp. Sci. Majors? (WAS: ...duction to GNU AS? (books on binut...)
To: Brian A. Seklecki <lavalamp@spiritual-machines.org>
From: Steven M. Bellovin <smb@research.att.com>
List: netbsd-users
Date: 01/30/2002 09:52:21
In message <20020129232711.E96797-100000@digitalfreaks.org>, "Brian A. Seklecki
" writes:
>
> A big thanks to all who replied to my inquiry. The recommended
>resources provide quite a few useful directions to move in. A former
>co-worker said he'd let me borrow another text which uses NASM style
>macros in the examples. I must say, I was surprised by the lack of
>available subject matter on the topic, but I assume that has to with the
>nature of my exploration (purely personal...it's not every day
>light-reading), which leads me to my next topic, which is actually OT, so
>feel free to contact me personally/off-list.
>
> I am currently investigating my 4-year college options, and
>although I previously never gave it serious consideration, I think it
>would be of benefit to accent my present major (Business/Administration)
>with a Comp. Science minor. I'm assuming most of the current kernel
>hackers of a computer/microelectronic engineering or computer science
>background (or have just been at it so long by profession that it's second
>nature ;-} ... ).
>
> I'm going to be investigating the programs of study at all of the
>local sweat-shops, but for the most part, all of the curriculums exhibit
>some sort of external similarities, including basically 3 years of
>discrete mathematics classes of zero retainable value, followed by a
>semester or two of actual hacking data structures (in something crazy like
>Java), maybe an elective or two on Operating System Theory/Design, and a
>senior project to prove that you didn't sleep through the last 5 years of
>your life! Such is the corrupt nature of American higher education, I'm
>therefore looking for some personal insight/advice from those who've
>experienced the pilgrimage.
I don't know your interests or career plans. But before I put on my
hats as a computer science Ph.D., a researcher, and an adjunct
professor, I'll note my background is in systems administration,
systems programming, and kernel-hacking. I worked as a systems
programmer on OS/360 part-time while I was in college.
My basic advice is to pay attention to those time-wasting theory
classes.
I can't speak for certain of today's classes or the future of
technology. But I can tell you about how important a lot of that stuff
was for me. Network protocols? You need to understand finite state
automata and some coding theory. Graphics? You need linear algebra.
Network performance? Lots of queuing theory, calculus, and general
mathematical knowledge. Compilers? Formal languages. Data
structures? Computational complexity, which draws on lots of other
math. Cryptography? Formal logic, number theory, modern algebra, and
more.
I could go on, but my basic point is, I think, clear. You don't know
what you're going to need. But the most important think I learned in
grad school, I'd say, was *when* to drag out the formal tools. You
don't need them all the time, but knowing when is vital.
Then again, my undergraduate university had (and has) a strong liberal
arts requirement -- which was, in retrospect and even at the time, very
useful, so what do I know?
--Steve Bellovin, http://www.research.att.com/~smb
Full text of "Firewalls" book now at http://www.wilyhacker.com