I was asked how my older son got into programming and computer science.
He took the C programming series at the Stanford EPGY when he was in middle school and took AP Computer Science AB at high school freshman year.
At 9th grade, he got interested in competing at USACO, www.usaco.org. He went through part of the training and competed all four years and was able to advance to the gold division.
He also participated in TopCoder.com competitions. They are for professionals but also hold high school competitions. My son is still an active participant.
USACO and TopCoder generally have the best problems. There are other online judge systems with lots of problems at http://acmicpc-live-archive.uva.es/nuevoportal/ and http://www.spoj.pl/.
His experience in programming has allowed him to work as summer interns at Microsoft and Google. He had enjoyed working at both places. The jobs have also been a big help in paying his college tuition :-)