Recent submissions

Comment · 12 years ago
I used to live in a set of townhouses that did exactly your "drop box" idea. It worked really well, and I thought that it was quite common.
Comment · 14 years ago
Yes, it's much easier for humans to prove complex theorems than computers. Just as it is much easier for humans to build complex programs than computers.

Often times, a proof is (much) more complicated than just mixing theorems A, B, and C together to get result D. Many times proofs will require developing entirely new mathematical structures, or can be done only in steps.

As an example, a friend of mine just proved a great theorem about whether or not Hessenberg varieties can be paved by affines. Ignoring what this actually means, the proof involved firstly recognizing that a Hessenberg variety actually fits within a spectrum - it is somehow "between" other types of well- (or better-) understood varieties. These are paved by affines in (somewhat) obvious ways, and so it is natural to try to use the "between-ness" of the Hessenberg variety to construct a "between-ish" paving. This isn't a proof, but it is a direction (one that turned out to be fruitful). It would be very hard for a computer to have made this intuitive leap.

And it almost works. Except now you can't reduce things like you would like, and you need to construct multi-level fiber bundles in order to get the triviality that you want. And wait - this only works if the Hessenberg variety that we started with has such-and-such property.

So she's reduced the problem to a simpler problem. How does she know it is simpler? Intuition. A computer would have a very hard time recognizing whether or not this is actually simpler (even if it could get there). It turns out that this property holds when our Hessenberg variety is constructed from an element whose semisimple part under the Jordan decomposition is regular. So she has proved it for a huge class of varieties, but not all. Such a partial result would also be very difficult for a computer, since it isn't exactly what she set out to do. She's only partly there. But even this part is huge.

And there isn't anything hand-wavy about her argument, either. It's perfectly grounded in well-established theorems, all of which she understands the proof for. It's just that the original concept was shakey - the "between-ness". She had to work to ground it. It would have been exceptionally hard for a computer to make several of the intuitive leaps necessary to come up with the ideas for the proof in the first place.

Comment · 14 years ago
I'm very sorry to hear about your experience, thank you so much for sharing it.
Comment · 14 years ago
Thanks, you don't see any concrete experience because there isn't anything worth showing. I'm working on some stuff right now to do just that. It's actually a webapp to allow teachers and students to communicate math effectively without having to know LaTeX and email pdfs.

From what I've heard so far, it sounds like there is definitely opportunities for me, and that means that I can justify spending time working on these types of projects over the next couple of years.

Comment · 14 years ago
Awesome! I went to check out your blog post, only to discover that I've already read it (and it contains a lot of helpful advice, thanks!).
Comment · 14 years ago
Yeah, I've heard about the Wall Street programming options for mathematicians, but it is not a field that I'm interested in.

Actually, the CS dept at my uni has a big computer vision research program. I should go talk to them.

Thanks

Comment · 14 years ago
Thanks for the warning. I'm working on a project right now that I should be releasing soon to help with the "real project" problem.

This is another thing I'm afraid of - being overqualified/people thinking that they are actually my backup job. Is there any way to combat this?

Comment · 14 years ago
Thanks, that's really good to hear (I love big problems!)

My research is in abstract algebra (specifically Lie theory and algebraic geometry), which is pretty far removed from statistics or applied math in general.

Comment · 14 years ago
I can try:

1. Matrix multiplication is indeed defined oddly. To understand why, it can help to think of matrices as "linear transformations". For example, the matrix

| 0 -1 |

| 1 0 |

corresponds to counterclockwise rotation of vectors by 90 degrees (go ahead, try multiplying the vector <1,0> by this matrix - the answer should be <0,1>). Let's call this matrix A. Also, the matrix

|-1 0 |

| 0 1 |

corresponds to reflection over the y-axis (call this matrix B). If we begin with a vector v = <1,1>, then rotate twice by 90 degrees, then reflect over the y-axis, we should get the vector <1,-1> (it helps to draw a picture, but I am limited in these comments). We can figure this out by repeatedly multiplying by matrices: Av = <-1,1>, A(Av) = <-1, -1>, and B(A(Av)) = <1,-1> (you may want to multiply these out to check, then check by evaluating the operations geometrically).

But wait - there is also a matrix which represents this transformation (that is, the transformation which is rotation counterclockwise by 90 degrees twice then reflection over the y axis). It's the matrix

| 1 0 |

| 0 -1 |

which we'll call C (go ahead and check that this matrix works the way that I just said). Since multiplying a vector by C is the same as multiplying the vector by A then A then B, we have mathematically that

Cv = B(A(Av))

Now, it sure would be nice if there was a way to "multiply" matrices together so that the product B(AA) = C. In abstract terms, we want multiplication of matrices to correspond to composition of functions, since we can use matrices to represent functions. If we define multiplication of matrices in the usual "weird" way, then this property holds!

This lets us examine composing functions by multiplying matrices, which is a very powerful tool indeed. Another interesting thing to notice is that this explains why multiplication of matrices is not commutative (that is, order matters). If we rotate counterclockwise by 90 degrees, then reflect over the y axis, that's different than reflecting over the y axis then rotating counterclockwise by 90 degrees. So BA is not equal to AB.

2. I'm not sure that I understand your question here.

3. This question is beyond my ability to answer, so I'll leave it to someone else.

4. On the one hand, there are tricks to see this (e.g. 0.333... = 1/3, so 0.9999... = 3 * 0.3333... = 3 * (1/3) = 1), but I expect that you have seen them and been unsatisfied by them (I don't believe that these are satisfying explanations, personally, because I have simply replaced the unknown fact 0.999... = 1 with the equally unfounded fact 0.333.... = (1/3)).

In order to really understand what's going on, we have to understand what we really mean by 0.999... What is meant by 0.9? This is equal to 9/10. How about 0.99? This is 9/10 + 9/100. 0.999 = 9/10 + 9/100 + 9/1000. Following this reasoning, 0.999... is equal to the infinite sum 9/10 + 9/100 + 9/1000 + ... + 9/10^k + ...

Since there are infinitely many 9s in the decimal, we must add an infinite number of fractions of the form 9/10^k.

We've opened up a can of worms here - how do we add up infinitely many things? Also, if we add up infinitely many things, how can the result possibly be finite?

A Calculus II course will answer these questions rigorously, but let me attempt to make an explanation here.

Think of it as a game of wits. You start. Choose a number less than 1 - any number at all, just so long as it is less than 1. I'll try to find some number k such that 0.9999...999 (with k 9s in it) is closer to 1 than your number.

Suppose that you pick 0.97. That's pretty close to 1, only 0.03 away. But 0.01 < 0.03, and 1 - 0.99 = 0.01, so 0.99 is closer to 1 than 0.97. I win.

You try again, this time picking 0.999878787. That's much closer to 1, but still 0.000121213. Since 0.0001 < 0.000121213, 0.9999 is closer to 1 than 0.999878787. I win again.

In fact, let's suppose that you pick the number x. Since x is less than 1, 1 - x is some positive (but very small) number. No matter how small it is, though, I can find some k such that 1/(10^k) is even smaller (this fact is called the Archimedean principle, and it is one of the fundamental theorems of the real numbers). Another way to think about it is that 1/(1-x) may be very big, but I can find some k such that 10^k is even bigger. But then 0.999...99 (with k 9s) is going to be closer to 1 than your number, and I'll win again.

Now, what does this mean? Since 0.999... is bigger than 0.999...99 (with any finite number of 9s), it is bigger than every number which is less than 1 (by the game we just played). The smallest number which is bigger than every number less than 1 is just 1. Anything smaller just won't do (since there would be numbers between it and 1). This shows that 0.999... is at least 1.

I hope that helps. It isn't as elegant as the featured answer, but maybe it can be a little bit helpful to you.

Comment · 14 years ago
I have mixed feelings about this explanation.

On the one hand, the mathematician inside of me is raging "this is neither specific, nor rigorous!" In my opinion, this definition is as close to useless as a mathematical definition can be, since the person who has this (and only this) will be hard pressed to answer any other questions involving complex numbers. For example, what is multiplication by i+1? Without further understanding, I don't think such a question can be answered.

On the other hand, the teacher in my head is celebrating. This person managed to take a concept normally feared and hated by the population at large and made it interesting and understandable. The response is well thought out, and is much more engaging to the reader than any response that I could come up with. In short, this explanation is more likely to make the person interested in mathematics, while a more technical definition would probably just make them zone out.

What do other people here think about this? Is the clarity and interest worth the loss of utility? Am I totally off base?

Comment · 14 years ago
While it depends on what you mean by "incredibly difficult", I would say that if you are doing any work with 3d modelling, it would be necessary to understand basic linear algebra. These concepts will transfer directly - if you are representing your model with points in 3-dimensional space, then displaying those points on a screen is a projection map, and can be described (and quickly calculated) with a matrix. This is a typical example.

Another common example would be a course in number theory. A common topic in number theory is public-key encryption, much more in-depth than is sometimes covered in other courses. In addition, the techniques that you learn in such a course can easily be applied to any "number-crunching" you would need to do. Here is an example:

Problem 1 from Project Euler (http://projecteuler.net/problem=1): Find the sum of all the multiples of 3 or 5 below 1000. A brute-force program for this is simple, but it is much faster if we first notice some patterns: (3 + 6 + 9 + ... + 999) = 3 * (1 + 2 + ... + 333). But then (1 + 2 + ... + 333) = 334333/2 (this would be easily recognized by someone who has taken a number theory class), and so the sum of all of the multiples of 3 below 1000 is 3 333 * 334 / 2. Similarly, for 5, there are 199 multiples, so the sum of all of these is 5 * 199 * 200 / 2. But then we must subtract the multiples of 15, since we double counted them: there are floor(1000/15) = 66, with sum 15 * 66 * 67 / 2. So the answer is (3 * 333 * 334 + 5 * 199 * 200 + 15 * 66 * 67)/2 = 299498.

That was a particularly trivial example - number theory will give you a lot more than some parlor tricks like the above. But this example took a loop through n numbers and reduced it to a single line of simple arithmetic. And for someone who understands number theory, this algorithm is as quick to think of as it is for a typical CS student to think of the brute-force algorithm.

I would also venture that a course or two in "Abstract Algebra" would be both beneficial and accessible to CS majors. This is less immediately practical than linear algebra in the above example, but closer in its style of thought to programming than, say, calculus, topology, or differential equations. The abstraction (which many math majors complain about) would be fairly straight forward for a CS major, I would think.

Comment · 14 years ago
In addition to the other comments, it should be noted that this happens after the fact. You don't really know what your bugs will do until they turn up, which you can only know after you run the program.

Similarly, they didn't know what their results would be until after they ran the experiment. At that point, they can either: share the results, or hide the results. Hiding the results is the absolute worst thing that any scientist can do. The only time the option not to share the results would be acceptable is when they can be discredited or discounted (and sometimes they should still be shared). Since they couldn't discredit their results (they tried), they took the only responsible option remaining.

Indeed, they didn't just publish the results, they asked others to look for the bug. Like others have said, this is the best possible outcome.

Comment · 15 years ago
I think that you are right, in that this would probably prepare students for jobs very well.

However, I think that a Bachelor's degree is supposed to be about something other than job training. Sure, there is some overlapping material between "prepare for a job" and "get a Bachelor's degree," but not very much. People who have a Bachelor's are expected to have knowledge that is both broad and deep. That is, they are expected to know far more than they need to know, and have skills outside of their area of expertise.

Not that there is anything wrong with your approach, I just think that it disagrees with the overall goals of a standard university degree program, which is not terribly concerned about job preparation.

If you can just copy and paste answers, with source, then you haven't actually learned anything (technically, you might have, but there is nothing in your work to support this conclusion - unknowledgeable until proven knowledgeable). The grade you receive should be a measure of the skills you have obtained, and the things that you have learned, rather than the results you produce. Sure, you can do this in the real world, but in the real world you are not trying to show what skills you have obtained, you are only asked to produce results - this is the major difference between the education environment and the work environment.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton