They preach to engineers that they should be well-rounded, and know a little bit of everything -- math, physics, yadda yadda yadda. But if you're joining late in the game, just focus on the important stuff:
For math, I'd definitely start with discrete mathematics. Work through it thorougly -- not only are its concepts like trees, graphs, recurrences, etc. immediately applicable to CS, but you should get a good feel for other elements of formal mathematics you'll need later, such as formal proofs and mathematical notation. If you really love discrete math after doing this, I'd suggest you pick up Knuth's book Concrete Mathematics -- but not many people would be ready to make that jump. Another branch of mathematics you might want to pursue is logic -- handy for AI, and it really puts you in a mindset you'll find useful in CS. (A shameless plug for my logic professor's awesome book is here.)
Then onto the computer science portion of our program: I don't know the extent to which you know programming, but assuming something minimal, start off by learning how to program in a scripting language. I recommend either Perl or Python (or both). If you're looking to apply your medical skills to computing, these languages are key -- in fact, today I turned down a job to hack on the Human Genome Project at my university. The preferred languages of applicants? Perl, C++, Java, and Python. So you'd score two of the four languages right there. Then, pick up a book on Algorithms, and start reading it (such as CLR). Hopefully, your brief foray into programming and your exposure to math by way of discrete and logic will make that read easy and enjoyable.
Where from there? Pick up a more widespread language, such as C++ or Java. Then pick a specialization in Computer Science that sounds interesting to you, and start reading about it -- such as networking, databases, computer architecture, etc. I can't emphasize enough how much a book can teach you -- a book can be all you need to succeed in many classes.
I know the above outline of what to learn is not found in most (all?) colleges. It's not what I'm going through right now at my university. But right now, off the top of my head, that's the best fast-track program I can think of.
Funny you mention that. I'm taking a class on design of digital systems at my university, and my professor works for JPL. He helps design the control systems onboard space vehicles such as the Mars rover. Anyway, a majority of the class grade is based on an end-of-the-quarter project, which we complete in groups of 2 to 4. On Wednesday he expressed interest in a group developing some sort of redundancy for FPGAs that would be suitable in spacecraft. You see, on Mars, you're not shielded from huge doses of radiation as you are on earth. A healthy dose of radiation bombardment could easily reprogram an FPGA chip on the surface of Mars; ASICs chips are used to overcome this problem.
Maybe he was gung-ho about anti-radiation redundancy because he already knew the likely problem of the Spirit. Who knows?
I knew it! I knew it! My mother always told me I was less social, but the second I saw this article I brought her down into the basement so she could read the article for herself! I sure proved her wrong!
Yes, the patent office is in a very sorry state indeed. I go to a respectable public university, and last week I caught sight of a flyer that said "Not know what you're doing after graduation? Try Patent Law..." Now I think it's good that they're trying to recruit people from decent universities, and it's okay to not know exactly what you want to do after college, but I thought it was appealing to the lowest common denominator. Which didn't exactly fill me with hope.
It's not really that simple, as a little rewording shows:
"Geeks want everyone to use Linux distros, obviously developed by geeks*.
Microsoft wants us to use Windows, developed by Microsoft.
Last time I looked my dad's laptop, roommate's PC, boss' PDA, etc etc etc all have a Microsoft OS, not a Linux OS.
It's a simple choice."
A product choice should not always be based on inertia. Since the MP3 player market since is so young, there isn't much inertia to begin with. Try quality, price, support, and other merits first.
* I apologize to those of you who have contributed to a Linux distro, but are not geeks. I didn't mean you, honestly;)
I agree with you without a doubt. Although I read the other day that, in 2003, it was estimated that we generated 2 exabytes of data in digital form. That's 2 x 10^18 bytes. 2^64 = 1.844 x 10^19, and with 16 bytes per hash, that's 2.95 x 10^20 bytes required for 2^64 different MD5 hashes. So I guess the storage for this project may exist in the future.
But I'm just being pedantic. In all honesty, who the hell cares? Brute force isn't that exciting, but some mathematical analysis may produce results, see here.
Yeah, it's about 1 in 2^128. There aren't even enough electrons in the universe to write down all the possible MD5 hashes, not to mention the strings that might hash to them.
With people hashing ramdonly generated strings and contributing to a universal list of MD5 hashes that have been generated, the chance of finding an MD5 collision is much higher.
If you are looking for a specific MD5 value, then the number of random strings you must hash must be on the order of the size of the hash's range. On average, you must hash roughly half the size of the range, or 2^128/2 = 2^127 random strings before finding a collision.
But if everyone is just picking a string at random, hashing it, and looking for a collision, then the chance of a collision occuring is much higher. It's based on the Birthday Paradox, a seeming "paradox" that if you have just 23 people in a room, there is over a 50% chance two of them will have the same birthday (most people assume 365/2). Now consider a hash function mapping people to their birthdays, and you'll see the application here. In fact, for a range of N possible values, only 1.17 x sqrt(N) random strings must be hashed before a collision is found by Stirling's approximation.
So, in fact, we must only consider O(2^64) random strings before finding a collision with MD5.
Why is the knee-jerk reaction always to make a cute and snappy comeback, as opposed to spending five seconds Googling for some exmaples, and enlightening oneself (and everybody else) in a follow-up?
So I Googled, and found this . Personally, I like how Michael Moore fights for the little guy, and when I watched Bowling for Columbine, I didn't know about these inaccuracies and I enjoyed the film. I thought it was really well done. But then I heard of these inaccuracies later, and it kinda leaves a sour taste in my mouth that he got the Academy Award for the film.
Anyways, on to books. I don't really pay attention to when books come out, but the good books I read this year are:
The Code Book by Simon Singh (brilliant) Euclid's Window by Leonard Mlodinow (non-technical, enjoyable) Emergence: The Connected Lives of Cities, Ants, and Software by Steven Johnson (enlightening, but too biased at times) The Night Is Large by Martin Gardner (this man knows about EVERYTHING) Lies and The Lying Liars Who Tell Them by Al Franken (hilarious, although obviously partial) Hegemony or Survival: America's Quest for Global Dominance by Noam Chomsky (if you can't tolerate Franken, don't try this)
Note I prefer non-fiction;) I think, of the books above, only Euclid's Window, Lies and the Lying Liars..., and Hegemony or Survival came out this year. They're all fairly recent, however, and worth a look.
Of course, IANAL, but I think this would be great for the RIAA, since they could theoretically sue just about anyone who RUNS this, since they're essentially ALL uploaders.
I just wish I had the answer to that riddle. I'm currently working a P2P project with some fellow undergrads at a university, and this issue has come up many times. The fact is, to anonymously send a file to another computer, there typically has to be an intermediate node between you, otherwise the receiving node has your IP address. Now the question is, can this node get the shaft? If so, there's not much inclination for users to join your network, since now they can be incriminated for not just downloading "censored" material, but simply forwarding it between a source and destination.
My opinion is that this is legal (but again, IANAL). An extreme anology to this sort of policy is the postal service dealing with mail bombs. The postal service obliviously forwards the mail bombs to the recipient, ignorant of their contents, just as intermediate nodes on a network mindlessly forward a file between a sender and a recipient. When a bomb reaches its destination and detonates, is the postal service held responsible? Likewise, should the intermediate nodes on our P2P network be responsible?
If anyone is a lawyer and can answer the question of whether an intermediate node would be held responsible in this situation, I would very much appreciate it:)
Also, about MUTE -- after skimming the design, it looks to be a good idea (after reading "Emergence: The Connected Lives of Ants, Cities, and Software" I always thought a P2P network based on ant-like behavior would be cool; it's great to see someone follow up on it). My only concern is with how well it scales. Have simulations been done on this? They sacrificed organizational structure for anonymity (distributed hash tables, such as Chord, Pastry, etc. often work the other way around), and with this lack of organizational structure comes no bound on the number of hops between a source and destination. It would be interesting to hear some feedback on this. (I'd try and participate, but alas, I'm at home on a 28.8K modem so I hardly think it would be proper for me to join a network and serve as a bottleneck...) Perhaps there is some way to overlay a reasonably static organizational structure on top, to ensure good performance when scaling (such as a deBruijn graph, for example)?
... can be found here.
I especially like the logo for Einstein's birthday (see March 14, 2003).
- shadowmatter
They preach to engineers that they should be well-rounded, and know a little bit of everything -- math, physics, yadda yadda yadda. But if you're joining late in the game, just focus on the important stuff:
For math, I'd definitely start with discrete mathematics. Work through it thorougly -- not only are its concepts like trees, graphs, recurrences, etc. immediately applicable to CS, but you should get a good feel for other elements of formal mathematics you'll need later, such as formal proofs and mathematical notation. If you really love discrete math after doing this, I'd suggest you pick up Knuth's book Concrete Mathematics -- but not many people would be ready to make that jump. Another branch of mathematics you might want to pursue is logic -- handy for AI, and it really puts you in a mindset you'll find useful in CS. (A shameless plug for my logic professor's awesome book is here.)
Then onto the computer science portion of our program: I don't know the extent to which you know programming, but assuming something minimal, start off by learning how to program in a scripting language. I recommend either Perl or Python (or both). If you're looking to apply your medical skills to computing, these languages are key -- in fact, today I turned down a job to hack on the Human Genome Project at my university. The preferred languages of applicants? Perl, C++, Java, and Python. So you'd score two of the four languages right there. Then, pick up a book on Algorithms, and start reading it (such as CLR). Hopefully, your brief foray into programming and your exposure to math by way of discrete and logic will make that read easy and enjoyable.
Where from there? Pick up a more widespread language, such as C++ or Java. Then pick a specialization in Computer Science that sounds interesting to you, and start reading about it -- such as networking, databases, computer architecture, etc. I can't emphasize enough how much a book can teach you -- a book can be all you need to succeed in many classes.
I know the above outline of what to learn is not found in most (all?) colleges. It's not what I'm going through right now at my university. But right now, off the top of my head, that's the best fast-track program I can think of.
Best of luck to ya,
shadowmatter
Funny you mention that. I'm taking a class on design of digital systems at my university, and my professor works for JPL. He helps design the control systems onboard space vehicles such as the Mars rover. Anyway, a majority of the class grade is based on an end-of-the-quarter project, which we complete in groups of 2 to 4. On Wednesday he expressed interest in a group developing some sort of redundancy for FPGAs that would be suitable in spacecraft. You see, on Mars, you're not shielded from huge doses of radiation as you are on earth. A healthy dose of radiation bombardment could easily reprogram an FPGA chip on the surface of Mars; ASICs chips are used to overcome this problem.
Maybe he was gung-ho about anti-radiation redundancy because he already knew the likely problem of the Spirit. Who knows?
- sm
I knew it! I knew it! My mother always told me I was less social, but the second I saw this article I brought her down into the basement so she could read the article for herself! I sure proved her wrong!
- shadowmatter
Yes, the patent office is in a very sorry state indeed. I go to a respectable public university, and last week I caught sight of a flyer that said "Not know what you're doing after graduation? Try Patent Law..." Now I think it's good that they're trying to recruit people from decent universities, and it's okay to not know exactly what you want to do after college, but I thought it was appealing to the lowest common denominator. Which didn't exactly fill me with hope.
I'd still have to go with Netscape 4. Does ring a bell!? Combined with neon colors and dancing hamsters, it was a recipe for instant blindness.
A product choice should not always be based on inertia. Since the MP3 player market since is so young, there isn't much inertia to begin with. Try quality, price, support, and other merits first.
* I apologize to those of you who have contributed to a Linux distro, but are not geeks. I didn't mean you, honestly
Recent IBM commercials can be found here.
- shadowmatter
I agree with you without a doubt. Although I read the other day that, in 2003, it was estimated that we generated 2 exabytes of data in digital form. That's 2 x 10^18 bytes. 2^64 = 1.844 x 10^19, and with 16 bytes per hash, that's 2.95 x 10^20 bytes required for 2^64 different MD5 hashes. So I guess the storage for this project may exist in the future.
But I'm just being pedantic. In all honesty, who the hell cares? Brute force isn't that exciting, but some mathematical analysis may produce results, see here.
Real men use SHA anyways ;)
Cheers,
shadowmatter
With people hashing ramdonly generated strings and contributing to a universal list of MD5 hashes that have been generated, the chance of finding an MD5 collision is much higher.
If you are looking for a specific MD5 value, then the number of random strings you must hash must be on the order of the size of the hash's range. On average, you must hash roughly half the size of the range, or 2^128/2 = 2^127 random strings before finding a collision.
But if everyone is just picking a string at random, hashing it, and looking for a collision, then the chance of a collision occuring is much higher. It's based on the Birthday Paradox, a seeming "paradox" that if you have just 23 people in a room, there is over a 50% chance two of them will have the same birthday (most people assume 365/2). Now consider a hash function mapping people to their birthdays, and you'll see the application here. In fact, for a range of N possible values, only 1.17 x sqrt(N) random strings must be hashed before a collision is found by Stirling's approximation.
So, in fact, we must only consider O(2^64) random strings before finding a collision with MD5.
I concur. Most recently I noticed it on Fox NFL broadcasts, where they use it whenever they update their score banner.
Why is the knee-jerk reaction always to make a cute and snappy comeback, as opposed to spending five seconds Googling for some exmaples, and enlightening oneself (and everybody else) in a follow-up?
;) I think, of the books above, only Euclid's Window, Lies and the Lying Liars..., and Hegemony or Survival came out this year. They're all fairly recent, however, and worth a look.
So I Googled, and found this . Personally, I like how Michael Moore fights for the little guy, and when I watched Bowling for Columbine, I didn't know about these inaccuracies and I enjoyed the film. I thought it was really well done. But then I heard of these inaccuracies later, and it kinda leaves a sour taste in my mouth that he got the Academy Award for the film.
Anyways, on to books. I don't really pay attention to when books come out, but the good books I read this year are:
The Code Book by Simon Singh (brilliant)
Euclid's Window by Leonard Mlodinow (non-technical, enjoyable)
Emergence: The Connected Lives of Cities, Ants, and Software by Steven Johnson (enlightening, but too biased at times)
The Night Is Large by Martin Gardner (this man knows about EVERYTHING)
Lies and The Lying Liars Who Tell Them by Al Franken (hilarious, although obviously partial)
Hegemony or Survival: America's Quest for Global Dominance by Noam Chomsky (if you can't tolerate Franken, don't try this)
Note I prefer non-fiction
- sm
I just wish I had the answer to that riddle. I'm currently working a P2P project with some fellow undergrads at a university, and this issue has come up many times. The fact is, to anonymously send a file to another computer, there typically has to be an intermediate node between you, otherwise the receiving node has your IP address. Now the question is, can this node get the shaft? If so, there's not much inclination for users to join your network, since now they can be incriminated for not just downloading "censored" material, but simply forwarding it between a source and destination.
My opinion is that this is legal (but again, IANAL). An extreme anology to this sort of policy is the postal service dealing with mail bombs. The postal service obliviously forwards the mail bombs to the recipient, ignorant of their contents, just as intermediate nodes on a network mindlessly forward a file between a sender and a recipient. When a bomb reaches its destination and detonates, is the postal service held responsible? Likewise, should the intermediate nodes on our P2P network be responsible?
If anyone is a lawyer and can answer the question of whether an intermediate node would be held responsible in this situation, I would very much appreciate it :)
Also, about MUTE -- after skimming the design, it looks to be a good idea (after reading "Emergence: The Connected Lives of Ants, Cities, and Software" I always thought a P2P network based on ant-like behavior would be cool; it's great to see someone follow up on it). My only concern is with how well it scales. Have simulations been done on this? They sacrificed organizational structure for anonymity (distributed hash tables, such as Chord, Pastry, etc. often work the other way around), and with this lack of organizational structure comes no bound on the number of hops between a source and destination. It would be interesting to hear some feedback on this. (I'd try and participate, but alas, I'm at home on a 28.8K modem so I hardly think it would be proper for me to join a network and serve as a bottleneck...) Perhaps there is some way to overlay a reasonably static organizational structure on top, to ensure good performance when scaling (such as a deBruijn graph, for example)?
- shadow