...or leverage nature's vast focal-depth bounty and set your monitor up in front of a window. North-facing ones rarely have backlighting issues; awnings or shades can also do the trick.
When my nearsightedness and astigmatism were radpidly getting worse 12 years ago, my VMS-hacker optometrist recommended a low monitor (down and in is the natural eye direction, he said), a window placement, high resolution/high refresh/big fonts, and anti-glare coating for my glasses. My nearsightedness actually improved the first few years after I implemented his advice, and has been stable for 8 years.
My experience is that the best place to get comfortable walking shoes is a serious running-shoe store, such as Marathon Sports in the Boston area. Such places generally take a close look at your stride, your feet, and your previous shoes before making recommendations. Some allow you to test-walk the shoes outside, which tells you a lot more than a few paces in the shop. You'll pay somewhat more, but I find a well-fitted and properly-designed shoe makes a HUGE difference. As a side benefit, white running shoes seem to pass even the most strident TSA muster, and they're easy to take off if you get pulled for seconday screening.
One other thing: GOOD SOCKS! Something synthetic and designed for walking. I wear Thorlos and love 'em.
There are only a few problems which are in NP that are not either known to be NP-complete or known to be in P.
I know what you're getting at, but this statement is incorrect on two levels. First off, the spirit of your statement would be much more accurare if it referred to NP-hard problems rather than NP-complete problems.
Secondly (and more pedantically), there are an infinite number of problems that are in NP and are not known to be either in P or NP-hard.
Yeah, I very much think Scheme and the SICP approach would benefit this kid much more than learning the language of the month. Here's my suggested program:
SICP.
Pascal. The language basically prevents you from writing the equivalent of "bad" C code, and Pascal compilers give much more useful errors than C or Java compilers.
Introduction to Algorithms by Cormen, Leiserson and Rivest. Yes, working through the whole thing will take a long time, but the kid's got plenty of that. Knuth may also make sense, but avoid Sedgewick or any other complexity-analysis-lite authors like the plague.
Okay, that's a solid basis. Now the kid's preferences can come into play...maybe work through Tannenbaum's OS book while learning C, which leads into a close reading of the Linux or BSD source, etc. Or perhaps he will find some other area that interests him during that time--the advantage of the suggested foundation is that he can basically work his way into any CS subject area.
It makes relatively little sense to use any sort of tax-advantaged account for education savings for yourself, for the reasons other posters have pointed out. There are some things you can do besides saving, IMHO, to make things more fun in grad school:
Build great credit, and a lot of it. Grad students are not seen as good initial credit risks, but a history of on-time payments and significant balances will allow you to take advantage of credit. This may seem like a road to ruin at first, but take into account how cheap money can be at times...for example, I bought a new car in grad school. The manufacturer gave me a 0.9% loan, so it didn't make sense to pay for it with savings. Meanwhile, I knew a lot of "fiscally responsible" students who had avoided credit in college and couldn't get a $500-limit Mastercard, let alone a car loan.
(Speaking of which, credit-card interest is often very low for grad students--you fit the lender's "about to get in deep financial trouble, so entice with low-rate cards" profile. If you are careful, you can use this leverage to your advantage.)
Fully fund your retirement plan and let that serve as your emergency fund. For obvious reasons, it helps to have a financial safety net in grad school. You can play fast and loose with your income if you don't need to worry about emergency expenses. Good credit can reduce this need, but retirement cash could bail you out (perhaps literally) of a bad situation.
Listen to the sage advice of Rob Peters and Phillip Greenspun.Getting What You Came For is a great book, highly recommended for all prosepctive PhD students. Greenspun's pages tell it like it is.
It seems like Ars Digita U. is akin to those cram-all-of-premed-into-one-year programs offered by many fine universities for those who decide after college to pursue an MD. Your target audience is really nonengineers with a strong interest in learning software engineering and just enough classical computer science to get by. At the same time, you're presumably going to hire some ADU alumni to work side-by-side with classically-trained-and-degreed CS people. It's a brilliant tactic for recruiting low-cost talent.:)
But the idea has rekindled a thought I had long ago. Perhaps would the world be better off if undergraduate computer science programs were eliminated? It's a radical thought, but consider two things:
The core courses at most graduate CS programs rehash undergraduate material (algorithms, theory, OS, etc.) at a somewhat more rigorous level.
An undergraduate education in CS is very close to wothless for a software engineer, since any reasonably technical person can pick up most of the classical CS knowledge necessary from a copy of Sedgewick's Algorithms in C.
So, at least to my thinking (as the holder of a BA in CS), an undergrad CS degree serves only as a very basic credential, showing that the holder can program and probably can learn to be an effective engineer. The high value placed on the head of a CSBS only shows how insanely valuable an experienced engineer can become, rather than the intrinsic value of the degree itself.
So, what to do? My suggestion would be to start postgraduate software-engineering programs based on the law-school model. Use experienced engineers as teachers, read case studies, and use the Socratic method to force students to think like engineers. As an employer, I know that I would hire people trained in such a way in a minute, but there just isn't anything like that available in today's educational market.
So Phil, you're in the postgraduate education racket now. Do you see the rigorous Ars Digita U. program as a step towards more meaningful engineering credentials within the CS industry, or just as a way to convert liberal artists into billable hours?
You're forgetting the old programming axiom: Never do anything twice.
...and you're forgetting that it's called research for a reason. The point of reading through what others think of as crap is that some of it might not be crap to you.
Click on "Crypto Papers, Writings, and Books" on that page.
Top of that page: "Bruce Schneier's Applied Cryptography is the crypto Bible for the professional engineer and interested layman. It's a good survey of the state of the art in crypto techniques and protocols."
Yeah, that advice was really hard to find.
Learning to do research is learning to use search tools. Asking others for sources is a last resort. If someone else does the searching, the student misses out on the experience.
If my intellectual high horse is unacceptably high, it'll just be more painful when I fall off.
Savage, I am wholeheartedly agree that it's important to share knowledge. But the questioner is looking for sources, not knowledge. He could very easily have gone to a search engine, found a number of reference documents, and read them. Then he could have asked specific questions of specific people to gain knowledge. But instead he announced to the entire/.-realm that he wants sources, and that's just not cool.
At least when I was in school (way back in the '80s! *gasp*), the librarians would point you to the "search engines" (card catalogues, Books in Print, periodical indexes, etc.) and show you how to use them. They wouldn't do the searching for you, nor would you expect them to share an extant knowledge on the area you were researching. Librarians are there to teach you to fish, not to do the fishing for you.
As for teaching myself to drive...sure I did, to some extent. From my experience, I knew a lot about how to drive before I actually drove, plus I read a number of books on the subject. It's not like I expected the people who helped me to tell me how to drive--instead, I needed advice and guidance on the finer points. Also, I only asked for advice from people whose driving I had seen and respected, rather than anonymous strangers on/.
This project could be a great learning experience for this student. He chose an interesting topic that is well-covered on the Web. He could probably ask specific questions of experts in the field and get a few answers to spice things up with "personal communication" citations. But he'd learn a lot more if he had to find his sources by himself.
I get messages like this all the time via my web pages from desperate schoolchildren, and respond the same way to each:
The material is out there, and I could find it for you easily. But you are supposed to be learning to do your own research, and having me do the work for you teaches you nothing and wastes my time.
best of luck, James
It's harsh, but this is a point I feel strongly about.
Similarly, I would recommend that other posters resist the urge to "help" and refrain from responding to the question.
What if you had the choice between a child that might have low intelligence, get on badly at school, hate life and end up living drunk under a bridge, or a child that has a better chance of being happy, having genes for higher intelligence, less depression and less tendency towards alcoholism?
Hey now, the former describes a lot of my musical heroes...
Seriously, one thing concerns me about parents making such choices: braces. So many parents buy braces for their kids for cosmetic reasons, and would probably similarly choose to remove depression or alcoholism or low intelligence from their kid's makeup. Being gap-toothed and having had to deal with depression and a predisposition to alcoholism myself, I can't imagine such an attitude, but I suppose it does exist.
(So what's the answer? Age of consent laws for cosmetic dental work!)
But assuming you have to make the kid happy, smart and not-too-much-beer-swilling at or near conception-time, long before they can make those decisions...I dunno. I think probably whole levels of philosophy and law need to be built up around such things, and we're only going to do those things through discussion. But articles like this one seem to encourage people to forget about genetics, since corporations are going to make all the decisions. The corporate world will only exploit us if we let them.
What evidence is there that most people and civilizations use anything for "net-good" purposes?
Well, the fact that humanity has existed as long as it has is pretty good proof, in my book. I'm not enough of a present-time chauvanist that I believe the forces we're dealing with are that much more harmful/evil than past forces.
Lest you scoff, consider the major applications of genetic engineering so far: uniform livestock (yes I know that old-fashioned breeding was an attempt at this) to facilitate that production line of yours and the domination of plant foodstuffs by one large undemocratic, unmoral company.
Aside from the monopoly issues (which have nothing to do with genetic engineering), I don't see what the problem is with either of these things. If we can engineer an optimally efficient steer, we get the most meat for the least money. This should also translate to the least environmental impact--"least money" means less land for feed-growing per pound of meat, less waste (an optimal steer would never create waste!), etc. In an ideal world, the beefeaters of the world would go veggie, but since that ain't likely the optimal steer seems like a societal good thing. If we have genetically engineered food at all levels (and perfect competition), world hunger decreases, and that's good, right?
(reminder: whatever you're reading/. on was probably mass-produced, so be careful of moral purity.)
The HGP is disturbing, but in the sense the introduction of the production line was disturbing. It will probably have a net-positive influence on people's lives, but there is also room for unspeakable evil.
How do you control this? Law! Order! Morality! All those things humans have generally been pretty good at maintaining all these years. Yes, there will be abuses, but most people and most civilizations will use the HGP data for net-good purposes.
Just because we have the keys to human genetics doesn't mean we're necessarily going to take it for a joyride.
gcc 2.8.1 under linux actually has okay 64-bit support under Linux, in my experience. Not my #1-most-favoritest platform for such things, but usable at least in the C-sphere.
Alpha cluster are 64-happy, or maybe an SGI cluster (tho' SGI's 64-bit support was horrid last I tried).
(background: I've done a lot of C coding using MPI on large Beowulf clusters at Caltech. I've implemented the same codes on Sun and SGI shared memory machines as well as DEC and RS/6000 clusters.)
If you're looking to cluster for high performance, you need to decide which HPC paradigm you're going to go with and choose your clustering based on that.
Distributed shared memory (DSM) is great on the programmer side. You've got a big steaming chunk of memory shared among processors, and a bunch of parallel threads/processes (depending on OS) acting on that chunk. DSM makes a lot of sense for database servers, and is the prevalent HPC solution among the big server companies (Sun, SGI, etc.) since multithreaded code runs dandy without any modifications. MOSIX implements DSM.
The downside: vast memory bandwidth required for sharing and high overhead. In an educational environment (and IMHO), DSM is a Very Bad Thing, since programming DSM teaches you nothing about actually using parallelism--it's just like working in any other multithreaded environment.
Students are better served by learning on a message-passing system, which is what Beowulf clusters are. You have a bunch of computers and a way to make them talk to one another (PVM or MPI)--"now implement some algorithms!" MP machines are [given equal-quality implementations, a big given] generally faster and more scalable than DSM machines, as well as being more "pure". Optimizing DSM programs is much easier if you have MP experience.
Downside: MP is a pain to program and even more of a pain to debug. But students could use more suffering, right? Language support is a little iffier for MP, too, with Fortran and C being prevalent.
...or leverage nature's vast focal-depth bounty and set your monitor up in front of a window. North-facing ones rarely have backlighting issues; awnings or shades can also do the trick.
When my nearsightedness and astigmatism were radpidly getting worse 12 years ago, my VMS-hacker optometrist recommended a low monitor (down and in is the natural eye direction, he said), a window placement, high resolution/high refresh/big fonts, and anti-glare coating for my glasses. My nearsightedness actually improved the first few years after I implemented his advice, and has been stable for 8 years.
My experience is that the best place to get comfortable walking shoes is a serious running-shoe store, such as Marathon Sports in the Boston area. Such places generally take a close look at your stride, your feet, and your previous shoes before making recommendations. Some allow you to test-walk the shoes outside, which tells you a lot more than a few paces in the shop. You'll pay somewhat more, but I find a well-fitted and properly-designed shoe makes a HUGE difference. As a side benefit, white running shoes seem to pass even the most strident TSA muster, and they're easy to take off if you get pulled for seconday screening.
One other thing: GOOD SOCKS! Something synthetic and designed for walking. I wear Thorlos and love 'em.
Some other candidates:
Ken Iverson (APL)
C.A.R. (Tony) Hoare (Quicksort)
Stephen Cook (NP-completeness)
The Free Speech Radio News is available as an MP3.
#2 is valid, though.
I know what you're getting at, but this statement is incorrect on two levels. First off, the spirit of your statement would be much more accurare if it referred to NP-hard problems rather than NP-complete problems.
Secondly (and more pedantically), there are an infinite number of problems that are in NP and are not known to be either in P or NP-hard.
This is the only person thus far who knows what he/she is talking about. Everyone else should RTFFAQ and mod this up.
- SICP.
- Pascal. The language basically prevents you from writing the equivalent of "bad" C code, and Pascal compilers give much more useful errors than C or Java compilers.
- Introduction to Algorithms by Cormen, Leiserson and Rivest. Yes, working through the whole thing will take a long time, but the kid's got plenty of that. Knuth may also make sense, but avoid Sedgewick or any other complexity-analysis-lite authors like the plague.
Okay, that's a solid basis. Now the kid's preferences can come into play...maybe work through Tannenbaum's OS book while learning C, which leads into a close reading of the Linux or BSD source, etc. Or perhaps he will find some other area that interests him during that time--the advantage of the suggested foundation is that he can basically work his way into any CS subject area.(Speaking of which, credit-card interest is often very low for grad students--you fit the lender's "about to get in deep financial trouble, so entice with low-rate cards" profile. If you are careful, you can use this leverage to your advantage.)
But the idea has rekindled a thought I had long ago. Perhaps would the world be better off if undergraduate computer science programs were eliminated? It's a radical thought, but consider two things:
So, at least to my thinking (as the holder of a BA in CS), an undergrad CS degree serves only as a very basic credential, showing that the holder can program and probably can learn to be an effective engineer. The high value placed on the head of a CSBS only shows how insanely valuable an experienced engineer can become, rather than the intrinsic value of the degree itself.
So, what to do? My suggestion would be to start postgraduate software-engineering programs based on the law-school model. Use experienced engineers as teachers, read case studies, and use the Socratic method to force students to think like engineers. As an employer, I know that I would hire people trained in such a way in a minute, but there just isn't anything like that available in today's educational market.
So Phil, you're in the postgraduate education racket now. Do you see the rigorous Ars Digita U. program as a step towards more meaningful engineering credentials within the CS industry, or just as a way to convert liberal artists into billable hours?
...and you're forgetting that it's called research for a reason. The point of reading through what others think of as crap is that some of it might not be crap to you.
Yeah, that advice was really hard to find.
Learning to do research is learning to use search tools. Asking others for sources is a last resort. If someone else does the searching, the student misses out on the experience.
If my intellectual high horse is unacceptably high, it'll just be more painful when I fall off.
At least when I was in school (way back in the '80s! *gasp*), the librarians would point you to the "search engines" (card catalogues, Books in Print, periodical indexes, etc.) and show you how to use them. They wouldn't do the searching for you, nor would you expect them to share an extant knowledge on the area you were researching. Librarians are there to teach you to fish, not to do the fishing for you.
As for teaching myself to drive...sure I did, to some extent. From my experience, I knew a lot about how to drive before I actually drove, plus I read a number of books on the subject. It's not like I expected the people who helped me to tell me how to drive--instead, I needed advice and guidance on the finer points. Also, I only asked for advice from people whose driving I had seen and respected, rather than anonymous strangers on /.
This project could be a great learning experience for this student. He chose an interesting topic that is well-covered on the Web. He could probably ask specific questions of experts in the field and get a few answers to spice things up with "personal communication" citations. But he'd learn a lot more if he had to find his sources by himself.
The material is out there, and I could find it for you easily. But you are supposed to be learning to do your own research, and having me do the work for you teaches you nothing and wastes my time.
best of luck,
James
It's harsh, but this is a point I feel strongly about.
Similarly, I would recommend that other posters resist the urge to "help" and refrain from responding to the question.
Hey now, the former describes a lot of my musical heroes...
Seriously, one thing concerns me about parents making such choices: braces. So many parents buy braces for their kids for cosmetic reasons, and would probably similarly choose to remove depression or alcoholism or low intelligence from their kid's makeup. Being gap-toothed and having had to deal with depression and a predisposition to alcoholism myself, I can't imagine such an attitude, but I suppose it does exist.
(So what's the answer? Age of consent laws for cosmetic dental work!)
But assuming you have to make the kid happy, smart and not-too-much-beer-swilling at or near conception-time, long before they can make those decisions...I dunno. I think probably whole levels of philosophy and law need to be built up around such things, and we're only going to do those things through discussion. But articles like this one seem to encourage people to forget about genetics, since corporations are going to make all the decisions. The corporate world will only exploit us if we let them.
Well, the fact that humanity has existed as long as it has is pretty good proof, in my book. I'm not enough of a present-time chauvanist that I believe the forces we're dealing with are that much more harmful/evil than past forces.
Lest you scoff, consider the major applications of genetic engineering so far: uniform livestock (yes I know that old-fashioned breeding was an attempt at this) to facilitate that production line of yours and the domination of plant foodstuffs by one large undemocratic, unmoral company.
Aside from the monopoly issues (which have nothing to do with genetic engineering), I don't see what the problem is with either of these things. If we can engineer an optimally efficient steer, we get the most meat for the least money. This should also translate to the least environmental impact--"least money" means less land for feed-growing per pound of meat, less waste (an optimal steer would never create waste!), etc. In an ideal world, the beefeaters of the world would go veggie, but since that ain't likely the optimal steer seems like a societal good thing. If we have genetically engineered food at all levels (and perfect competition), world hunger decreases, and that's good, right?
(reminder: whatever you're reading /. on was probably mass-produced, so be careful of moral purity.)
How do you control this? Law! Order! Morality! All those things humans have generally been pretty good at maintaining all these years. Yes, there will be abuses, but most people and most civilizations will use the HGP data for net-good purposes.
Just because we have the keys to human genetics doesn't mean we're necessarily going to take it for a joyride.
Alpha cluster are 64-happy, or maybe an SGI cluster (tho' SGI's 64-bit support was horrid last I tried).
If you're looking to cluster for high performance, you need to decide which HPC paradigm you're going to go with and choose your clustering based on that.
Distributed shared memory (DSM) is great on the programmer side. You've got a big steaming chunk of memory shared among processors, and a bunch of parallel threads/processes (depending on OS) acting on that chunk. DSM makes a lot of sense for database servers, and is the prevalent HPC solution among the big server companies (Sun, SGI, etc.) since multithreaded code runs dandy without any modifications. MOSIX implements DSM.
The downside: vast memory bandwidth required for sharing and high overhead. In an educational environment (and IMHO), DSM is a Very Bad Thing, since programming DSM teaches you nothing about actually using parallelism--it's just like working in any other multithreaded environment.
Students are better served by learning on a message-passing system, which is what Beowulf clusters are. You have a bunch of computers and a way to make them talk to one another (PVM or MPI)--"now implement some algorithms!" MP machines are [given equal-quality implementations, a big given] generally faster and more scalable than DSM machines, as well as being more "pure". Optimizing DSM programs is much easier if you have MP experience.
Downside: MP is a pain to program and even more of a pain to debug. But students could use more suffering, right? Language support is a little iffier for MP, too, with Fortran and C being prevalent.