April 21, 2007
Walter Bright wrote:
> Stephen Waits wrote:
>> Basically, seems like the students aren't learning much about the machine any more.  Were they ever?  Or were us "old-timers" (I'm 35, not quite an old timer, but whatever) just so excited about the whole thing that we all spent way too much time learning stuff on our own?  (I also quit college so I could learn more)
> 
> A guy in my dorm in college built a CPU board out of random logic (NAND, NOR gates) just for fun. Those are the kind of guys you want to hire!
> 
> I think it was Niven who wrote that a real scientist was one who'd fearlessly peer through the gates of hell if he thought he could learn something.
> 
> It isn't hard to tell the real engineers from the "just a job" folks in a job interview. The real engineers:
> 
> 1) did weird projects in their spare time, just for fun, not for credit
> 
> 2) regard getting a degree as incidental, and wind up leaving it forgotten in the bottom of a drawer
> 
> 3) took the hard classes that weren't required
> 
> 4) didn't duck the calculus classes
> 
> 5) can enthusiastically describe their projects
> 
> 6) can tell you how bright an LED can glow if you file down the housing a bit and stick it in liquid nitrogen
> 
> The charlatans:
> 
> 1) did nothing that wasn't required
> 
> 2) generally complain that their hard work goes unrecognized
> 
> 3) are much more interested in the salary & benefits rather than what the work is
> 
> 4) have difficulty describing just what their last project was and what their contribution to it was
> 
> 5) complain about outsourcing or foreigners taking their jobs
> 
> 6) never made beersicles from pouring beer into liquid nitrogen

Ironically, a friend of mine just recently acquired some liquid nitrogen and we've been chattering away at work planning all the things we intend to do with it.  Time to add beersicles to the list.. made from home brewed beer no less.  ;)  Bananas and marshmellows do fun things too... especially if loaded into certain old nerf guns, but I digress.

-- Chris Nicholson-Sauls -- who still dreams of cubicle nerf wars gone awry
April 21, 2007
Dave wrote:
> Walter Bright wrote:
>> Daniel Keep wrote:
>>> This is one thing I really lament about my uni education thus far.  Two
>>> topics that basically have *never* been covered in even minimal detail
>>> have been optimisation and debugging.
>>
>> Most great programmers didn't learn programming from taking college courses. They learned it on their own. Programming has the nice characteristic that it is fairly straightforward to learn on your own.
>>
>> Want to take advantage of what a university can offer? Taking the basic course in each of following will pay you lifelong dividends:
>>
>> 1) Calculus
>> 2) Accounting
>> 3) Physics
>> 4) Chemistry
>> 5) Statistics
>> 6) Electronics
> 
> I couldn't agree more. Software development is and always has been a craft(*) - part science, part art. Colleges have never been really good at teaching crafts -- no such thing as a "Bachelor of Crafts in Software Development" <g>
> 
> Personally, the best developers I've ever known (again, personally -- please note the next paragraph) have almost w/o exception been formally trained/educated for something else, and most of the CS majors went into management (but then again maybe they're truly the smart ones <g>).
> 
> That said, there are *alot* of super-smart CS students and graduates in this group, I gather. If it's truly what you love doing, a CS or related degree can only help because you get to goof-off for 4 years doing what you like and learning too <G>
> 
> (*) Alan Cooper ("The Father of Visual Basic") for the insight that Software Development is really more of a craft than a science.

I tend to tell people that all forms of art seemingly arise from some form of science. Programming just happens to be an artform still closely linked to its base science.  And our own Walter -- if I recall right -- is a prime example of a major developer whose background is in something else.  I'm pretty sure those airplanes didn't require new compilers.

-- Chris Nicholson-Sauls
April 23, 2007
Chris Nicholson-Sauls wrote:
> I tend to tell people that all forms of art seemingly arise from some form of science. Programming just happens to be an artform still closely linked to its base science.  And our own Walter -- if I recall right -- is a prime example of a major developer whose background is in something else.  I'm pretty sure those airplanes didn't require new compilers.

My training is as a mechanical engineer, with an emphasis on jet engines. I was fortunate enough to attend a university (Caltech) that thoroughly believed that all their sci/eng majors should be well grounded in a broad range of fields, and as I've gotten older and wiser I see the value in it now.

Caltech requires of all its graduates:

o	3 years of calculus
o	2 years physics
o	1 year chemistry

among other courses.
April 23, 2007
Walter Bright wrote:
> Chris Nicholson-Sauls wrote:
>> I tend to tell people that all forms of art seemingly arise from some form of science. Programming just happens to be an artform still closely linked to its base science.  And our own Walter -- if I recall right -- is a prime example of a major developer whose background is in something else.  I'm pretty sure those airplanes didn't require new compilers.
> 
> My training is as a mechanical engineer, with an emphasis on jet engines. I was fortunate enough to attend a university (Caltech) that thoroughly believed that all their sci/eng majors should be well grounded in a broad range of fields, and as I've gotten older and wiser I see the value in it now.
> 
> Caltech requires of all its graduates:
> 
> o    3 years of calculus
> o    2 years physics
> o    1 year chemistry
> 
> among other courses.

If all you know is CS, then I think you're restricting the kind of work you can do.  It's not too tough to figure out how to be a competent programmer coming from a hard science or engineering discipline.  But going the other way is pretty much impossible.  My tack was to take a lot of CS courses, because they were fun and relatively easy, but go with EE as the major.  It was much more difficult, but I'm glad I did it that way.  The decent grounding in calculus, linear algebra, Fourier analysis etc that I got from that has allowed me to do things I never would have been able to consider had I just gotten the CS education.

I've heard that CS departments at schools these days are suffering from a big drop in the number of majors.  But that seems to me to be as it should be.  The IT boom brought on a lot of silliness.  You really don't need a CS degree to do most IT jobs.  Yes, *everybody* needs to know how work with computers these days to varying degrees.  Just like everyone needs math to varying degrees.  But that doesn't mean there need to be a lot of math majors, or CS majors.   Almost everyone takes a class or two from the math department, but very few major in it.  Likewise, pretty much everyone these days should have a class or two from the CS dept, but we don't really need that many majors.

--bb
April 23, 2007
Bill Baxter wrote:
> If all you know is CS, then I think you're restricting the kind of work you can do.  It's not too tough to figure out how to be a competent programmer coming from a hard science or engineering discipline.  But going the other way is pretty much impossible.  My tack was to take a lot of CS courses, because they were fun and relatively easy, but go with EE as the major.  It was much more difficult, but I'm glad I did it that way.  The decent grounding in calculus, linear algebra, Fourier analysis etc that I got from that has allowed me to do things I never would have been able to consider had I just gotten the CS education.

I agree. When I worked at Boeing, it was in the early days of using computers for engineering analysis. There were problems because the programmers didn't understand engineering, and the engineers didn't understand programming. So there'd be programs that worked great but solved the wrong problem. My lead engineer wryly remarked once that I was the only one he'd worked with who brought back numbers from the computer that weren't garbage. (Things have changed a lot since then, my friends who work there tell me that everything is done on computers now.)

I've never seen anyone learn calculus outside of the classroom, but plenty of people who learned programming outside of one.

> I've heard that CS departments at schools these days are suffering from a big drop in the number of majors.  But that seems to me to be as it should be.  The IT boom brought on a lot of silliness.  You really don't need a CS degree to do most IT jobs.  Yes, *everybody* needs to know how work with computers these days to varying degrees.  Just like everyone needs math to varying degrees.  But that doesn't mean there need to be a lot of math majors, or CS majors.   Almost everyone takes a class or two from the math department, but very few major in it.  Likewise, pretty much everyone these days should have a class or two from the CS dept, but we don't really need that many majors.

In defense of CS majors, Andrei has an academic CS background, and he's been a huge help in taking my limited back-of-envelope approach to the next level.

I once saw a news program on cheaters in universities. Students would shamelessly state on camera that they cheated whenever they could get away with it. I just find that stunning. Several would justify it with the claim that since they'll never use 97% of what they learn in college, there was no point in learning it, and therefore it was fine to cheat.

Just, wow. How pathetic and contemptible.

A friend of mine went through MIT, and he told me that after he was there for a while he had an epiphany. MIT wasn't teaching him things. MIT was teaching him how to think. And that's what the calculus, physics, etc., classes will give you. Sure it's hard, but that's what it takes to rewire your brain <g>.
April 23, 2007
Walter Bright wrote:
>> Caltech requires of all its graduates:
>>
>> o    3 years of calculus
>> o    2 years physics
>> o    1 year chemistry

Bill Baxter wrote:
> If all you know is CS, then I think you're restricting the kind of work you can do.

I have a Computer Science degree, and I have never needed calculus, physics, chemistry, etc. in any of my programming jobs.  I resent all the time I was forced to waste taking these courses, instead of learning about my trade.

Sure, these topics would have been useful if I wanted to get a programming job in a field that made use of it, but I don't want these kinds of jobs, and there are plenty of programming jobs that don't need them.  I even wouldn't have minded being exposed to the topics, but I was forced to take the same physics and calculus courses as mechanical engineers.  I wasted so much time memorizing formulas and learning how to solve problems that I never touched again.

I'm not into heavy math or physics, though I like the concepts at a high level.  This doesn't make me a bad coder.

> I've heard that CS departments at schools these days are suffering from a big drop in the number of majors.

My understanding is that there is a greater emphasis on Software Engineering as a degree for those who want to actually code instead of doing academic research.  This is a good thing.  Too many programmers graduate from college woefully unprepared for working in the industry.

-Jeff
April 23, 2007
Walter Bright wrote:
> Bill Baxter wrote:

>> I've heard that CS departments at schools these days are suffering from a big drop in the number of majors.  But that seems to me to be as it should be.  The IT boom brought on a lot of silliness.  You really don't need a CS degree to do most IT jobs.  Yes, *everybody* needs to know how work with computers these days to varying degrees.  Just like everyone needs math to varying degrees.  But that doesn't mean there need to be a lot of math majors, or CS majors.   Almost everyone takes a class or two from the math department, but very few major in it.  Likewise, pretty much everyone these days should have a class or two from the CS dept, but we don't really need that many majors.
> 
> In defense of CS majors, Andrei has an academic CS background, and he's been a huge help in taking my limited back-of-envelope approach to the next level.

Yeh, I'm not saying there's anything inherently wrong with a CS degree. But you may be better off with something else, unless what you really want to do is take fundamental concepts of computing to the next level.  Just like you don't major in math just to learn how to use math.  You major in math if you're interested in creating *new* math.  Or discovering it.  Whatever you want to call it.

If what you want to do is create advanced new compilers or new languages, or new algorithms, then yeh, the CS degree is a good thing, provided it's done right.

--bb
April 23, 2007
Bill Baxter wrote:
> 
> If all you know is CS, then I think you're restricting the kind of work you can do.  It's not too tough to figure out how to be a competent programmer coming from a hard science or engineering discipline.  But going the other way is pretty much impossible.  My tack was to take a lot of CS courses, because they were fun and relatively easy, but go with EE as the major.  It was much more difficult, but I'm glad I did it that way.  The decent grounding in calculus, linear algebra, Fourier analysis etc that I got from that has allowed me to do things I never would have been able to consider had I just gotten the CS education.

I have a CS master degree myself (is that what you call a major?), and I had all of the subjects you mention above. Over 5 years, I had calculus, linear algebra, the fourier stuff, laplace and friends (this was actually a math course especially for the computer students), statistics, physics, a tad chemistry, discrete mathematics, basic electronics, and some more digital techniques, molecular biology, pencil drawing (!), tree/wood facade project and introductory philosophy. In total, this amounted to almost 2 years, I think. The rest was CS related, the basics (computers, programming, etc), intermediate (software engineering/planning, databases, programming languages, etc) and my chosen subjects/projects (natural languages, algorithms, graphics, and a whole year spent on projects (including the master thesis) for privately held companies).

All in all, I think this is as good as it will get at a university. Most of my fellow students ended up as consultants in Accenture and friends, very clever people, but at least a few chose their route more from the career outlooks back when we started, rather than a true interest in computers. Those of us who chose due to the latter, mostly have jobs in other areas, and quite a few have started their own companies.

> I've heard that CS departments at schools these days are suffering from a big drop in the number of majors.  But that seems to me to be as it should be.  The IT boom brought on a lot of silliness.  You really don't need a CS degree to do most IT jobs.  Yes, *everybody* needs to know how work with computers these days to varying degrees.  Just like everyone needs math to varying degrees.  But that doesn't mean there need to be a lot of math majors, or CS majors.   Almost everyone takes a class or two from the math department, but very few major in it.  Likewise, pretty much everyone these days should have a class or two from the CS dept, but we don't really need that many majors.

At my university, they are seeing a little bit lower levels on the incoming students' grades, but they're far away from having empty seats. Norway seems to be in a somewhat special situation these times though, companies sucking up all technical engineers coming out of Norwegian institutions. Also, Trondheim being a small city, and still having major employers like Google, Yahoo, Sun, ARM and Atmel, make CS majors a highly sought after group of employees.

-- 
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
April 23, 2007
Jeff Nowakowski wrote:
> Walter Bright wrote:
>>> Caltech requires of all its graduates:
>>>
>>> o    3 years of calculus
>>> o    2 years physics
>>> o    1 year chemistry
> 
> Bill Baxter wrote:
>> If all you know is CS, then I think you're restricting the kind of work you can do.
> 
> I have a Computer Science degree, and I have never needed calculus, physics, chemistry, etc. in any of my programming jobs.  I resent all the time I was forced to waste taking these courses, instead of learning about my trade.

I have (such as using physics in game code), and, of course, in the engineering coding I've done.

At worst, I simply have the pleasure of knowing the basics in that stuff, and can enjoy things like I once attended a dinner put on by the JPL mission director for a Mars probe, and was able to follow what he was talking about. I can appreciate what the Wright bros did and why they were successful while their contemporaries failed. I can read about technical things happening and be able understand what they're talking about. I know why those 9/11 conspiracy theories are hokum (all the "anomalies" are easily explained if you have even an elementary knowledge of physics and chemistry). It enabled me to correct a severe structural flaw in my house that the architect, structural engineer, and builder failed to notice. I have yet to find a roofer who understands what "galvanic corrosion" is, and I always check what kind of nails they use on the flashing (they're always wrong), saving me a ton of maintenance costs.

The downside (if you could call it that) is that knowledge of real physics takes away from enjoying movies that have "Hollywood physics".

> Sure, these topics would have been useful if I wanted to get a programming job in a field that made use of it, but I don't want these kinds of jobs, and there are plenty of programming jobs that don't need them.  I even wouldn't have minded being exposed to the topics, but I was forced to take the same physics and calculus courses as mechanical engineers.  I wasted so much time memorizing formulas and learning how to solve problems that I never touched again.

It's too bad you were made to memorize formulas. To me, that isn't what physics is about, and at Caltech we were never made to memorize/regurgitate formulas. It's about learning how to solve complex problems. That skill comes in very handy with programming.

For example, a common programming problem is your program doesn't behave. How do you go about fixing it? It's the same organized way of thinking as solving a physics or calculus problem.
April 23, 2007

Walter Bright wrote:
> Jeff Nowakowski wrote:
>> Sure, these topics would have been useful if I wanted to get a programming job in a field that made use of it, but I don't want these kinds of jobs, and there are plenty of programming jobs that don't need them.  I even wouldn't have minded being exposed to the topics, but I was forced to take the same physics and calculus courses as mechanical engineers.  I wasted so much time memorizing formulas and learning how to solve problems that I never touched again.
> 
> It's too bad you were made to memorize formulas. To me, that isn't what physics is about, and at Caltech we were never made to memorize/regurgitate formulas. It's about learning how to solve complex problems. That skill comes in very handy with programming.

Maybe that's why I'm stuck with this burning desire to *never* get within a hundred kilometres of any maths course ever again.  I know *why* it's useful, but having to sit down and memorise huge numbers of formulae so that I can write down answers for one test and then never look at it again was driving me crazy.

But I'm not crazy.  He he.

> For example, a common programming problem is your program doesn't behave. How do you go about fixing it? It's the same organized way of thinking as solving a physics or calculus problem.

Really?  I'd always been taught that combining "hit it with a hammer until it sees your way" reasoning and chemistry was A Bad Idea™.  And now I find out they were wrong!  Cool!

Now, if you'll excuse me, I'm gonna go hammer some red phosphorous and potassium chlorate together--what's the worst that could happen?*

	-- Daniel

* Serious obligatory disclaimer: Do not try this.  Ever.  See the third last paragraph of http://www.theodoregray.com/PeriodicTable/Stories/015.8/index.html

-- 
int getRandomNumber()
{
    return 4; // chosen by fair dice roll.
              // guaranteed to be random.
}

http://xkcd.com/

v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP  http://hackerkey.com/