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