Текст позаимствован из поста хабропользователя arielf. Очень советую прочесть статью полностью, речь идет о высшем образовании.
--------
У каждой специальности есть свой минимальный набор обязательных знаний. У информатики и программирования такой основой служат математические курсы; так что вопрос: «нужно ли программисту образование?», обычно превращается в «нужна ли программисту математика?» или «нужно ли программисту так много математики?» Учитывая, что программист в классическом смысле – это инженер, вопрос можно сформулировать и иначе: «нужно ли образование инженеру?» Споров на этот счёт обычно не возникает. Проблема разве что вот в чём: не все хотят быть учёными и инженерами. Если предел ваших мечтаний – успешная игра в App Store, а не проектирование искусственного интеллекта, криптографического алгоритма или программ трёхмерной анимации, вы можете смело минуя вуз приступить к её выполнению, но и в этом случае знания не испортят вам карьеру. В вузах не знают, кем вы себя видите через много лет и чем планируете заниматься – не говоря уже о том, что вы сами в семнадцать лет можете ещё этого не знать. Считается, что лучше заранее научить вас всем основам, чем упустить что-то важное. Кроме того, основные курсы, как правило, взаимозависимы и нельзя просто взять и изъять некоторые из них. И их главная цель – не научить вас всему на свете, что в принципе невозможно, а предоставить вам примерную карту современных научных и инженерных знаний, чтобы при столкновении с неизвестным, вы смогли принять верное решение, в каком направлении идти.
Вернёмся к математике. Практически все книги по алгоритмам требуют от читателя некоторой математической культуры. А алгоритмы и структуры данных – как сказал Никлаус Вирт – являются программами, и не умея работать с ними, нельзя называться программистом. Причём это не обязательно умение разрабатывать свои алгоритмы, намного чаще нужно изменять чужие, приспосабливая их к частным случаям, но также и умение доказывать их корректность и применимость в различных условиях, и умение анализировать их поведение в некоторых ситуациях. Математика активно применяется таких областях как криптография, графика, распознавание образов, работа с видео, звуком и изображениями, математическое моделирование реальных процессов. В таком, казалось бы, приземлённом системном программировании без серьёзных математических знаний невозможно написание компиляторов, планировщиков и файловых систем.
Математика является тем каркасом, на который нанизываются все прочие знания. Увы, многие начинают осваивать профессию с конца. Программист, изучивший языки программирования, инструменты разработки, различные технологии и паттерны, но не освоивший математические основы, напоминает художника, научившегося в совершенстве разбираться в красках и кистях, освоившего множество приёмов, но при этом не знающего композиции, перспективы, анатомии и прочих основ. У него может быть много гениальных мыслей, но выразить их он не сможет, и всё, на что ему остаётся рассчитывать – это работа ассистентом или раскрашивание чужих картин. Изредка незнание основ формирует новые стили, как, например, в случае с Ван Гогом (к его чести нужно сказать, что он осознавал свои проблемы и брал уроки живописи у профессионалов), но чаще становится препятствием в творчестве. И если в искусстве это ещё можно оправдать тем, что автор так видит, то в промышленности неправильный алгоритм генерации случайных чисел, приведший к тому, что миллионы долларов честных налогоплательщиков промахнулись мимо цели, не оправдан ничем.
При этом нельзя забывать, что для большинства программистов математика является скорее инструментом, чем наукой, и преподавать её нужно именно так, особенно первые курсы, всякий раз объясняя студентам, зачем им это нужно.
По работе я с самыми разными задачами сталкивался от веба до обработки сигналов, да и диплом имеется. Чувак, ты познакомиться хочешь или совета спросить?)