But would you trust math olympiad performance over good grades in graduate level math courses? What about publications in respected math journals? If by the time you graduate from college your math olympiad scores are the best things you have going for you, you've got a problem.
As other people have mentioned, doing well in college is more about learning a lot and doing research than getting good grades. With this in mind, I think doing well in college can be important for a couple of reasons:
1) You should try to learn as much as you can.
2) Grad school. If you decide you want to go to grad school, it's important to have good grades and more importantly research experience.
3) Employment. Grades / research experience may not matter for a startup, but I think it does help with getting your foot in the door with big tech companies like Microsoft, Google, etc.
Only 1) matters as far as start ups are concerned, but it's good to keep options open. Your interests may change (I'm only 23, and my interests have changed a few times already).
The 1-norm tends to also be less sensitive to outliers, and in machine learning, 1-norm regularization leads to sparse solutions. The real reason 2-norm is popular is that it is easy to minimize (differentiable).
I don't know a lot about ILP algorithms, but my understanding of them is that they basically search the space of logical rules for rules that "explain" the examples they are given. More formally, they look for rules from which you could then prove the given examples. So in an ideal world you could give an ILP system a bunch of formulas and it would give you back the Peano axioms or something like that I'm not sure if state of the art ILP systems are good enough to do that in practice or not.
What you are talking about is more along the lines of inductive logic programming, where the goal is to induce general symbolic rules from specific examples. Even with ILP I'm not sure how exactly you could phrase things so that the machine could learn "addition" though. An ILP system could probably learn something like a + b = c implies b + a = c (i.e. commutativity) and other properties of addition from examples.
Metric trees (sometimes called ball trees) are a simple generalization of this to arbitrary metrics. They're also useful for points in a high dimensional euclidean space that have low intrinsic dimensionality.
I understand that it is in the best interests of an open source developer to give support for his software (assuming he wants people to use it), but he's in no way obligated to do so. Some people just develop software for fun and make it available to the public as an afterthought in the hopes like minded people will find it useful. I know with the personal projects I've released as open source, although I fixed bugs and responded to requests when I could, it was my goal to give prompt technical support.
I have to say, I'm not that sympathetic. If you are using open source software, you can't expect free support, and you definitely can't expect immediate free support. Plus, it actually looks like you got each of your questions answered within an hour, which is pretty impressive actually.
A bit of semantics: what we are talking about here is the difference between statically typed and dynamically typed languages, not strongly and weakly typed. Python is strongly dynamically typed. Java is strongly statically typed. C is (arguably) weakly statically typed (because it let's you treat anything as anything through casts, void pointers, etc).
The point jey was trying to make is that only languages that are both statically typed and compiled can catch missing methods. Consider for example a piece of code:
a.doB();
If the language is not statically typed, then the compiler does not know the type of "a" at compile time, and therefore doesn't know what class to check for method "doB". This is why even if you were to compile python you would still end up getting missing method error messages occasionally.
I don't see it on there, they must have taken it down. That said, Lisp isn't a really a pure functional language either if that is what you are implying (setf). I don't know enough about Erlang to say anything about that. It is odd that they specify "procedural" though. Anyone that knows a programming language probably knows a procedural programming language.
I think these guys seem to be accumulating a lot of smart people with good track records though. It's an ambitious problem for sure but the potential reward justifies the risk. Actually I think the biggest risk is that Google probably has a team working on natural language search that could beat them to it (this is just me speculating I have no insider knowledge).
I think the problem is still that there isn't really a clear definition of general intelligence or how it should be embodied on a computer. I agree that putting a bunch of different algorithms for different tasks in a box won't create something people would be willing to call general intelligence, but what do you expect a general purpose intelligence algorithm to do exactly? That is, if I handed you one, how would you test it? What are the inputs and outputs?
Don't get me wrong, I'd love to create a general artificial intelligence. It's just not clear to me what that means. In the absence of a good definition of the general problem, I think it's perfectly reasonable to pick an extremely hard specific problem (like visual object recognition), and focus on that, under the assumption that in order to completely solve this specific problem you will end up solving the (undefined) general problem.
"A "true AI" would discover regularities [2], or patterns, in any search space, and exploit these patterns to incrementally improve its ability to navigate the search space." -- Actually this sounds like Eurisko, a heuristic search program that modifies it's own heuristics http://en.wikipedia.org/wiki/Eurisko
Also, it's worth pointing out that the different techniques used in different subfields of AI are not always that different. There has been some work in creating very general powerful frameworks that explain a lot of specific algorithms, like Markov logic networks http://en.wikipedia.org/wiki/Markov_logic_network which are sufficiently powerful that they subsume all of logic and statistical graphical models (which is to say maybe 90% of all recent machine learning algorithms). With these sorts of general frameworks new algorithms and approaches in one subfield get ported over to other subfields, and there is more interaction then you might think.
I agree with tx. With C++ you can often avoid what would be virtual method calls in Java / if statements in C by using templates. This lets you effectively inline every function call. It'd be hard to do this in a clean way in C.
I also disagree that AI researchers are working on boring narrow problems. There are plenty of researchers working on huge open problems like object recognition, speech recognition, reinforcement learning, etc. And they're making great progress too. I think the reason most AI researchers don't talk about making "human-level AI" is that this isn't really a quantifiable goal. There are plenty of things computers can do better than people already (would you want a computer with "human-level" addition and subtraction?). And for just about every specific useful task humans do better than computers, there are a few dozen AI researchers working on it. Why is that not a reasonable approach to the problem?
For real. If only the world really worked this way. Even programming languages take a bit longer than a week to really learn. I find I go through at least two levels with a programming language: the first at which I know the syntax and can code small projects comfortably (this takes about a week), the next at which I have developed a personal coding style that works well with language and allows me to handle large projects (this takes at least 6 months or so of regular coding).
I had to stop reading there as I became ill. (23 year old that hasn't passed quals)