Всё зависит от вас. Если есть возможность поступить в хороший ВУЗ, то можно многому научиться и там. По опыту таковыми ВУЗами в России являются: МГУ, МФТИ, ВШЭ, ИТМО. Ну и конечно же необходима самостоятельная работа, без неё никуда. Курсы тоже можно, особенно они помогают в начале, когда кажется, что вокруг так много всего и как же всё успеть. Советую пройти Гарвардский курс CS50, он неплохо даёт новичкам. Правда, у него есть побочный эффект – после него вы не сможете адекватно воспринимать российское образование. Удачи! :)
Я всегда считал, что программированию можно научиться самостоятельно. А что делать с математикой? Она ведь тоже нужна.
Курсы+самообразование+репетитор(делательно из крупной компании) и вы станете суперпрограммистом. А еще лучше валите в сша или японию. Там из вас в тамошних вузах суперпрограммиста сделают.