"Качественное знание языка" - это неопределенное понятие.Скорее можно разделить на олимпиадное и промышленное программирование.В олимпиадном программировании изучают эффективные алгоритмы решения различных задач. То есть как можно решить алгоритмичекую проблему за минимальное время. Теоретически это позволит в будущем делать программы быстрее. Но современное промышленное программирование обычно строится на готовых пакетах и применять олимпиадные навыки обычному программисту очень редко когда приходится.В школах изучают именно олимпиадное программирование, так как все олимпиады, а значит и рейтинги и БВИ основаны на этих навыках.Промышленное программирование учит работать над совместным проектом, где задействованы множество программистов. Чтобы потом из кусочков кода, написанного множеством людей, можно было собрать единую программу и она работала без ошибок. Для работы надо писать проще и унифицированно, а не изобретать новое, как на олимпиадах. Этому в школах почти не учат.