Одна дискуссия, которую я часто вижу на Reddit и Hacker News, - это ценность степени в области компьютерных наук. Многие люди полагают, что формальное образование не является необходимым или даже нежелательным в мире, где у нас есть Интернет, полный образовательных ресурсов, связанных с программированием. В конце концов, вы можете просто получить книгу по языку программирования или заплатить за MOOC или Bootcamp, верно?

Дело в том, что ... этого достаточно, чтобы изучить основы программирования, и, может быть, этого достаточно, чтобы получить доступ к какой-то работе, но программирование - это не то, чем занимается CS. Хорошо и хорошо смотреть на программирование с профессиональной точки зрения, и действительно, на этом уровне нет недостатка в занятости (особенно в сфере веб-разработки), но это ограничивает.

Лично я начал учиться программированию, когда мне было около девяти или десяти лет. Я начал со старых книг из библиотеки до того, как бесплатные онлайн-ресурсы стали настолько широко доступны, и постепенно расширял свои знания с годами. Я выучил несколько языков, некоторые из которых, например, Java, заполнили большие пробелы из-за того, что они уделяли больше внимания таким вещам, как структуры данных. Но в конце концов я понял, что упускаю многое из того, что покрывается степенью CS, и начал свою карьеру в колледже.

«Компьютерные науки - это не больше компьютеров, чем астрономия - телескопы». - Неизвестно, ошибочно приписывается Эдсгеру Дейкстре

Что такое компьютерные науки?

Это прикладная математика. Или «теория и прочее».

На первом курсе мои классы CS занимали лекционный зал, рассчитанный примерно на 150–200 студентов. К концу семестра это число сократилось до 30–40. Их прогнал грамотно разработанный курс «сначала в ширину», который, хотя и не был исключительно сложным, охватывал широкий спектр материалов, которые появятся позже в программе. На поверхностном вводном уровне он охватывал такие темы, как формальные языки, конечные автоматы, коды Хэмминга, архитектура оборудования, сети TCP / IP, алгоритмы подкачки диска, семафоры, логическая алгебра, логические вентили и многие другие. Это было сопряжено с вводным классом программирования, чтобы студенты одновременно могли научиться программировать (или, по крайней мере, познакомиться с одним из наиболее часто используемых языков в учебной программе), а также получить представление о том, что на самом деле представляет собой специальность.

Один из ключевых выводов состоит в том, что не делается акцента на программировании или на обучении программированию определенных вещей. Программирование - лишь один из инструментов в вашем арсенале, наряду с хорошими математическими навыками. Вы получаете один или два урока по программированию, и этого достаточно. С этого момента основное внимание уделяется вещам, более похожим на проектирование языка программирования. Или математически анализируя алгоритм, чтобы сравнить его с другими. Или написание некоторых компонентов базовой операционной системы.

Обычная программа CS не будет обучать написанию веб-приложений, использованию контроля версий, работе с конкретными фреймворками или программным обеспечением или другим профессиональным вещам. По крайней мере, времени на это не будет много. Основное внимание уделяется теории, критическому мышлению и другим забавным вещам. Вполне ожидаемо, что вы достаточно умны, чтобы понять, как использовать инструменты на ходу.

Как следует из названия, Компьютерные науки - это изучение вычислительной техники. Он включает в себя множество вещей, и это очень увлекательно.

Слон в комнате: математика

Моя программа на получение степени включает как минимум Исчисление I и Исчисление II, второй из которых является интенсивным, если ваши навыки алгебры не приближаются к сверхчеловеческим. (В некоторых школах требуется Исчисление III и / или линейная алгебра, но моя просто оставляет вас, чтобы набрать необходимое количество математических кредитов, как вы хотите, помимо обязательных классов. Так что что-то вроде курса перед исчислением будет учитываться, если вы не Calc -Готов начать.)

Исчисление - это интересно, и мне нравилось посещать эти курсы, но я знаю, что не одинока, когда говорю, что никогда не буду учиться математике на уровне колледжа в одиночку. Даже с Khan Academy у меня просто не было бы желания или преданности делу, чтобы придерживаться этого и посвящать такое время и усилия.

Это один из важнейших моментов специализации в области науки: вы будете вынуждены изучать высшую математику, вам будет предоставлено множество ресурсов, которые помогут пройти через это, и вы получите что-то бесценное. Исчисление буквально меняет то, как вы смотрите на окружающий мир. Я многому научился на этих обязательных занятиях, и это был замечательный опыт. Calc II был серьезной задачей, и я рад, что все закончилось, но теория, лежащая в основе этого, открыла глаза.

Исчисление буквально меняет то, как вы смотрите на окружающий мир.

Одна вещь, которая отличает компьютерную науку от других областей науки, заключается в том, что вам приходится изучать более эзотерическую математику, помимо проторенного пути исчисления. Типичная учебная программа обычно включает обязательный урок Дискретной математики. В то время как Calculus изучает, как что-то постоянно меняется с течением времени, Discrete Math изучает отдельные счетные вещи.

Дискретная математика - странный зверь. Речь идет о равных частях формальной логики и теории графов / множеств ... и, вероятно, этому учат, заставляя вас делать массу доказательств. Мне было трудно осмыслить некоторые из них, но, по сути, это небольшой вкус тех классов, с которыми приходится иметь дело специалистам по математике. Это сложный материал и серьезное упражнение для критического мышления, но концептуально он применим к большей части CS.

Что включает в себя учебная программа по информатике?

Одна из первых «содержательных» тем, которой обычно посвящено несколько занятий, - это алгоритмический анализ и изучение структур данных. Теоретические различия между наборами, связанными списками, хеш-таблицами, разными деревьями, графиками и т. Д. И способы их реализации обычно находятся в центре внимания одного класса. Обычно вы испытываете вкус сравнения алгоритмов с классическими функциями сортировки, реализуя их с нуля, прежде чем более поздние классы обратятся к этим знаниям исчисления, чтобы сравнить их с использованием формальных математических определений. Наряду с этим возникают проблемы с балансировкой деревьев, обходы графов и другие «забавные» вещи.

Параллельно с этими более абстрактными классами обычно существует равное количество классов, ориентированных ближе к аппаратному уровню. например системное программирование на C и операционных системах.

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

Кроме того, существуют обычные требования по гуманитарным наукам: некоторое количество кредитов на лабораторных занятиях и бинго-карта по темам, охватывающим историю, искусство и культуру, которые необходимо собрать для удовлетворения требований «всестороннего образования». Мне понравились два семестра по математической физике даже больше, чем по математическим классам.

Академические вопросы

Университеты - прекрасная вещь, о которой люди часто думают неправильно: получение знаний - это самоцель, а не просто средство для достижения цели. Будь то обучение для себя или проведение исследований для развития науки, научные круги придерживаются этой идеи. Цель университета - не быть программой трудоустройства. Корпорации не должны отдавать свои расходы на обучение на аутсорсинг. Это, прежде всего, создание знаний и, во-вторых, их передача будущим поколениям. Эта традиция - вот то, как наука развивалась на протяжении веков, и она по-прежнему остается основной концепцией, которая поддерживает ее.

Приобретение знаний - это самоцель, а не просто средство для достижения цели.

Слишком многие люди думают о колледже как о «получить степень в области х, чтобы устроиться на работу» или пойти в молодом возрасте и упустить свои возможности, но это гораздо больше. Думаю, я ценю это немного больше за то, что начал работать в возрасте 20 лет, а не в 18, и за то, что уже увлечен той областью, которую хотел изучать, но мне очень понравился этот опыт.

Хотя я признаю, что, скорее всего, вернусь в государственный сектор после окончания учебы, поскольку мне платят день и ночь, я полностью верю в государственные исследования и университетскую систему. Существует досадный извращенный стимул, который выкачивает людей из академических кругов в корпоративный мир. Это то, что необходимо решать на социальном и правительственном уровне, поскольку это бесценно.