Нужно понимать, что такое теория множеств, теория графов, булева алгебра, матрицы, основы ООП. Это не обходимый минимум, чтобы хотя бы быть среднем программистом, а не быдлокодером. А универ и уж тем более курсы ничего не сделают, если человек не способен.