3 - zalecam jednak stosowanie wersji angielskiej. Pomijając oswajanie się z ingliszowskim słownictwem - jak na mnie dużo lepsza jakość materiału (choć na Khanie już od około roku nie byłem więc coś mogło się zmienić).
4 - temu najbardziej polecam matematykę na Khanie każdemu, kto ma z nią problemy. Programowanie też jest ok, o ile jest się początkującym.
5 - tego akurat nie polecam nie licząc pobieżnego zapoznania się z CAŁĄ teorią związaną z danym zagadnieniem - zwyczajnie konkretną wiedzę wolę czerpać z pracy własnej i książek. Jeżeli jednak ktoś potrafi faktycznie sporo wynieść z takich materiałów to MIT jest świetny.
11 - warto wiedzieć, jak Google działa, ale nie polecam zbytniego zagłębiania się w ten kurs.
Z polskich źródeł: http://eduinf.waw.pl/inf/alg/001_search/index.php (bardzo przydatne źródło wiedzy o algorytmach i baza "gotowców", których odpowiednie przerobienie pod kątem problemów na SPOJu ułatwia zrozumienie algorytmu) i http://wazniak.mimuw.edu.pl/index.php?title=Strona_g%C5%82%C3%B3wna (dużo mniej przydatne źródło wiedzy - jak to kiedyś ktoś powiedział: "Na UJ mądrzy wykładowcy w ramach wykładów przedstawiali teorię a pomijali zupełnie zadania i temu na wykłady nie chodziłem - teorię mogłem poznawać samemu z jeszcze mądrzejszych książek". Jeżeli jednak książek brakuje to faktycznie jest to niezłe źródło informacji. Czasami są tu zadania z rozwiązaniami co jest największym atutem tej strony. Znalazłem tam także wytłumaczone jakieś zadanie z łatwych na SPOJu).
Wszystko co "web" jest tutaj: http://www.w3schools.com/default.asp. Nie umiesz CSS? Godzina i już wiesz o co chodzi! Zwracam jednak uwagę na fakt, że następny etap to "Ok! No to teraz zrealizuję jakiś własny pomysł na stronę w necie" - inaczej można zostać specjalistą od używania kilku komend a nie umieć stworzyć prostej strony internetowej.
Jak zwykle w takich tematach:
1) Wszystko oparte na moich doświadczeniach.
2) Nie jestem programistą tylko przyszłym bezrobotnym i nigdy nie miałem do czynienia z informatyką(*) - nie licząc podstaw Worda w szkole, z których nawet miałem piątkę 
3) Jeżeli o czymś nie wspomniałem to albo z tego nie korzystałem albo korzystałem sporadycznie albo turdność znalezienia tej rzeczy graniczy z trudnością znalezienia materiałów na Wikipedii.
(*) Rozumianą jako przedmiot, kurs bądź kierunek studiów a nie nauka.
EDIT
Szukając jakiejś miotły pokroju Nimbus 2001 z funkcją zamiatania płaszczyzny do momentu znalezienia pary punktów, które dzieli najmniejsza odległość, znalazłem http://olympiad.cs.uct.ac.za/. Co tu dużo mówić... skarbnica wiedzy! Strategie na Międzynarodową Olimpiadę Informatyczną, niespotykanie proste i krótkie kody rozwiązujące problemy nie tyle trudne, co żmudne (BigInt, wspomniane zamiatanie i punkty, przecinanie się figur geometrycznych a dalej to już nawet nie patrzyłem), poradnik debugowania na Linux, poradnik testowania rozwiązań i doskonalenia ich od bruta do wzorcówki, krótkie wprowadzenia teoretyczne do różnych zagadnień, lista sztuczek i porad dotyczących implementacji dodatkowych funkcjonalności wzmiankowanych żmudnych algorytmów (na przykład jak zrobić BigInt od podstaw i nie narobić się przy tym, kiedy i dlaczego nieraz najlepiej wcale nie optymalizować aż nadto programów, jakie czynności w różnych sytuacjach znacząco zmniejszą objętość kodu realizującą daną funkcjonalność), poradnia językowa (na przykład c++ 11) i wiele innych włączając w to zbiór zadań!
Sądzę, że warto zwrócić na to uwagę. Przykładowo, koncepcja algorytmu Dijkstry nie jest szczególnie złożona, ale optymalny kod realizujący ten algorytm zwykle nie jest dla osoby nie znającej tego kodu (prawie) na pamięć pięciominutową przyjemnością. Tutaj rozważane są różne rozwiazania tego problemu (niestety znalazłem dość skromny pdf, ale kody i przykłady pewnie też gdzieś są). A na tak proste i użyteczne makro jakie tam znalazłem chyba nigdy bym nie wpadł... Słowem polecam 