Как разобраться в Computer Science самостоятельно

Как учат Computer Science в России и США

Первые строчки всех мировых рейтингов вузов в области компьютерных наук занимают американские университеты. Российские обычно находятся далеко за пределами первой сотни. Тем не менее наши студенты нередко выигрывают чемпионаты мира по программированию или находят работу в ведущих IT-компаниях мира. Александр Журавлев и умный поисковик образовательных программ StudyQA — об основных особенностях бакалаврских программ по компьютерным наукам в России и США.

На первый взгляд бакалаврские программы американских вузов могут показаться российским студентам не слишком интенсивными. Во-первых, обучение длится три года вместо четырёх, а во-вторых, специализированных предметов обычно значительно меньше, чем в России. Так нормальной академической нагрузкой в американских вузах считается 8-9 предметов в год. У нас же дисциплин бывает и в два раза больше.

Ещё одно важное отличие американских программ от большинства российских — возможность выбирать курсы самому. В небольших колледжах разнообразие может быть не так уж велико, но в ведущих университетах у студентов обычно есть выбор между десятками различных курсов. Для получения диплома обычно необходимо прослушать несколько общеобразовательных курсов, не связанных с направлением обучения, а также набрать определённое число кредитов по специализированным дисциплинам.

Помимо этого, во многих американских вузах не нужно выбирать специальность заранее: поступают в университет обычно по единому конкурсу, а с направлением обучения (Major) можно определиться уже после начала учёбы. Впрочем, чтобы лучше разобраться в том, чем всё же отличаются программы, рассмотрим примеры бакалаврских программ по компьютерным наукам в США и России.

Зачем изучать компьютерные науки?

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

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

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

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

Направления

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

На сегодня Компьютерная Science преимущественно подразумевает следующие варианты развития событий:

  • программирование;
  • архитектура компьютера (электронно-вычислительных машин);
  • алгоритмы и структуры данных;
  • математика для IT и computer science;
  • операционные системы;
  • компьютерные сети;
  • базы данных;
  • языки программирования и компиляторы;
  • распределенные системы;
  • графика;
  • искусственный интеллект.

Если описать направленности кратко, это – написание программных кодификаций, а также информатика и математика. Но изучаемая информация выходит за пределы «стандартного» школьного и ВУЗовского обучения.

Programming

То, с чего начинают многие. Принципы написания программных кодов – основополагающая всех информационных технологий. Здесь вариантов воплощения задумки в жизнь несколько:

  1. Пойти обучаться в ВУЗ после 11 классов в школе. Отнимает от 5 лет, зато в процессе удается стать настоящим специалистом с дипломом государственного образца.
  2. Отдать предпочтение получению образования в техникуме/колледже после 9/11 классов. Человек здесь больше практикуется. По выпуску получает диплом о средне профессиональном образовании.
  3. Заниматься самообучением. Неплохой вариант для тех, кто еще не определился, стоит ли вообще связываться с IT-технологиями. Требует усидчивости и долгого кропотливого труда. Стать настоящим профессионалом в области написания кодов можно и без «вышки».

Последний вариант – это посещение Computer Science курсов. Есть варианты как для новичков, так и для уже более опытных людей. По окончании процесса выдается спецсертификат.

Внимание: все перечисленные методы получения знаний относительно программирования подходят и для остальных сфер. Но иногда добиться успеха без ВУЗа или техникума окажется предельно трудно.

Архитектура электронно-вычислительной техники

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

Для того, чтобы разобраться в области самостоятельно, можно прочесть книгу «The elements of Computing Systems». Позволяет осознать, каким образом функционирует computer. Здесь есть:

  • иерархия памяти;
  • вычислительный конвейер;
  • написание логики на языке описания аппаратов (HGL) посредством центрального процессора.

После изучения соответствующей литературы удастся намного лучше ориентироваться в архитектуре ЭВМ. Далее теорию обычно изучают посредством спецкурсов.

Алгоритмы и структуры

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

Практика показывает, что алгоритмы и структуры «материалов» изучаются через:

  • специализированную литературу (электронную или бумажную);
  • обучающие видеоролики;
  • спец course.

В ВУЗах соответствующий раздел изучается, но не слишком углубленно. Получаемых знаний достаточно на первых порах, но затем приходится «ударяться» в самообразование.

Дела математические

В компьютерных науках невозможно обойтись без разного рода вычислений. Все, что связано с computers, можно отнести в той или иной степени к прикладной математике. Хороший программер или «комп.ученый» не оставит math в стороне. В один прекрасный момент решение поставленных задач, особенно при разработке сложного контента, отсутствие достаточного багажа знаний станет огромной проблемой.

Математиков, занятых углубленным изучением «дискретики», ждет успех в случае смены специализации в пользу IT-технологий. Связано это с тем, что компнауки относятся преимущественно к дискретной математике. Выходят они далеко за пределы матанализа.

Также рекомендуется изучать:

  • комбинаторику;
  • основы логики;
  • теорию вероятности;
  • графы;
  • криптографию (основы);
  • линейную алгебру.

Последняя особо важна для тех, кто предпочтет в будущем сконцентрироваться на графике и видео, а также машинном обучении. Математика для Computer Science – главный «раздел».

Операционные системы

Каждый современный юзер точно знает – операционных систем у ПК и других устройств полно. Каждое «системное программное обеспечение» обладает собственным функционалом, особенностями и интерфейсом. Чтобы стать настоящим специалистом в компьютерах, стоит изучать все ОС. Либо выбрать одну «специализацию», в которой совершенствоваться далее.

В соответствующей «категории» предстоит узнать о принципах работы ОС, а также об их видах. Лучше действовать путем прохождения курсов (можно дистанционно). Вариантов полно – как для новичков, так и для продвинутых «ученых».

При самообразовании идеально прочесть код маленького ядра, после чего откорректировать его. Пример – XV6. Это – современная интерпретация Unix x86, которая написана на ANSI C.

Программеры работают преимущественно с веб-серверами и компьютерными сетями. Значит, упомянутую сферу обделять вниманием нельзя. Она расскажет о:

  • принципах работы сетей;
  • разновидностях «подключений»;
  • настройке и отладке сетей.

Самоучкам рекомендуется прочесть книгу Computer Networking: A Top-Down Approach. Там не только теория, но и практика – небольшие проекты и задания.

Базы данных

База данных – совокупность информации, которая организована в концептуальную структуру, описывающую особенности соответствующих материалов и их взаимоотношения. Простыми словами – некое хранилище электронных сведений. Используются БД повсеместно – не только в программировании и IT, но и в обыденной жизни: экономика, бухгалтерия, юриспруденция. Даже при работе с 1C требуется знания баз данных.

В ВУЗах этому разделу уделяется достаточно времени как у «компьютерщиков», так и у математиков/экономистов/программистов. Но лучше посетить курсы по базам данных, чтобы получить максимально много полезной информации.

Компиляторы и языки

Программеры занимаются непосредственным изучением языков «общения» с компьютерами и приложениями. А вот работники компьютерных наук стараются разобраться в принципах работы оных. Соответствующие познания помогают обойти даже опытных разрабов. Схватывание нового материала будет максимальным и быстрым.

Данная область затрагивает:

  • принципы функционирования языков при создании машинных кодификаций;
  • программы, используемые при кодировании и эмуляции;
  • особенности компиляторов.

Своими силами здесь обойтись проблематично.

Распределенные системы

Распределенной системой называют некую систему, в которой отношения местоположения составляющих или их групп играют важную роль для дальнейшего функционирования. С развитием прогресса и IT даже самые простые приложения способны функционировать на нескольких computers одновременно. Распределенные системы являются наукой о том, как обеспечить подобное явление.

Для изучения Science соответствующей области требуется просмотреть книгу Distributed Systems. Лучше пробежать глазами по всем изданиям. 3-е – это своеобразное дополнение к предыдущим.

Дисциплины Сomputer Science

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

Лучшая книга: “Структура и интерпретация компьютерных программ” (Structure and Interpretation of Computer Programs). Авторы: Джеральд Сассман (Gerald Sussman) и Хэл Абельсон (Hal Abelson).

А на JavaRush, кстати говоря, всем желающим доступен для изучения легендарный гарвардский курс “CS50. Основы программирования”, полностью переведенный на русский.

Алгоритмы и структуры данных

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

Лучшая книга: The Algorithm Design Manual. Автор: Стивен Скьена (Steven Skiena).

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

Лучшая книга: “Архитектура компьютера и проектирование компьютерных систем” (Computer Organization and Design). Авторы: Дэвид Паттерсон (David Patterson) и Джон Хеннеси (John Hennessy).

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

Лучшая книга: “Введение в операционные системы” (Operating Systems: Three Easy Pieces). Авторы: Андреа Арпачи-Дюссо (Andrea Arpaci-Dusseau) и Ремзи Арпачи-Дюссо (Remzi Arpaci-Dusseau).

Мало что в современном ИТ может обойтись без использования Интернета, поэтому ИТ-специалистам важно понимать, как Всемирная сеть работает, чтобы использовать ее потенциал по полной.

Лучшая книга: Computer Networking: A Top-Down Approach. Авторы: Джеймс Куросе (James Kurose), Кит Росс ( Keith Ross).

Математика для computer science

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

Лучшая книга: Mathematics for Computer Science. Авторы: Альберт Р. Мейер (Albert R. Meyer), Эрик Леман (Eric Lehman) и Фрэнк Томсон Лейтон (Frank Thomson Leighton).

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

Лучшая книга: Readings in Database Systems. Авторы: Джозеф М. Хеллерштейн (Joseph M. Hellerstein) и Майкл Стоунбрейкер (Michael Stonebraker).

Как из обычного кодера стать крутым разработчиком? Изучаем Computer Science - 2

Лучшая видеолекция: Joe Hellerstein’s Berkeley CS 186

Языки и компиляторы

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

Лучшая книга: “Компиляторы: принципы, технологии и инструменты” (Compilers: Principles, Techniques and Tools). Авторы: Альфред Ахо (Alfred Aho), Моника С. Лам (Monica S. Lam), Рави Сети (Ravi Sethi), Джеффри Ульман (Jeffrey Ullman).

Лучшая видеолекция: Alex Aiken’s course on Lagunita

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

Лучшая книга: Distributed Systems, 3rd Edition. Авторы: Мартен ван Стин (Maarten van Steen) и Эндрю С. Таненбаум (Andrew S. Tanenbaum).

Теоретический минимум по Computer Science, Владстон Феррейра Фило, 2018, PDF, EPUB

Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием. Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день.

Если вы хотите щелкать задачи как орешки, находя эффективные решения, то эта книга для вас. От вас потребуется только чуть-чуть опыта в написании программного кода. Если вам приходилось этим заниматься и вы различаете элементарные операторы вроде for и while , то все в порядке. В противном случае вы найдете все необходимое (и даже больше) на каких-нибудь онлайновых курсах программирования 2 . Вы можете пройти такой курс всего за неделю, и притом бесплатно. Для тех же, кто уже знаком с информатикой, эта
книга станет превосходным повторением пройденного и поможет укрепить знания.

Все книги представленные на сайте WEB-Программист только в ознакомительных целях. Любое их использование Вами допускается только в ознакомительных целях. Если Вы планируете их использовать в дальнейшем, то Вы обязаны приобрести их у правообладателей. Администрация сайта не несет ответственность за их использование Вами

Все книги представленные на сайте WEB-Программист только в ознакомительных целях. Любое их использование Вами допускается только в ознакомительных целях. Если Вы планируете их использовать в дальнейшем, то Вы обязаны приобрести их у правообладателей. Администрация сайта не несет ответственность за их использование Вами

Все книги представленные на сайте WEB-Программист только в ознакомительных целях. Любое их использование Вами допускается только в ознакомительных целях. Если Вы планируете их использовать в дальнейшем, то Вы обязаны приобрести их у правообладателей. Администрация сайта не несет ответственность за их использование Вами

Теоретический минимум по Computer Science, Владстон Феррейра Фило, 2018

Бхарат Рамсундар, Реза Босаг Заде — «TensorFlow для глубокого обучения»

TensorFlow — библиотека для создания нейронных сетей, разработанная компанией Google. Она призвана упростить написание нейронных сетей, но освоить её саму не так легко — потребуется больше времени, чем на библиотеки для классического ML вроде SciKit-learn.

В этой книге рассказано о том, какие нейронные сети можно создавать с помощью TensorFlow. В начале есть обзор общих принципов работы полносвязных, свёрточных, рекуррентных слоёв, а также ячеек долгой краткосрочной памяти (LSTM). Затем рассматриваются классические архитектуры глубоких сетей: LeNet, AlexNet, ResNet, AlphaGo и другие.

Знакомство с самой библиотекой начинается с создания простых моделей — линейной и логистической регрессии. Помимо синтаксиса библиотеки рассмотрены математические основы работы сетей — матричные и тензорные операции. Отдельные главы посвящены работе с графическими процессорами (GPU), обучению с подкреплением и будущему глубокого обучения.

Книг по Data Science на русском языке, в которых подробно рассматривались бы возможности TensorFlow, до сих пор не так много. В это издание, несмотря на его небольшой объём, поместился классический набор программиста нейронных сетей: от применения библиотеки в задачах компьютерного зрения до программ для обработки естественного языка.

Определение

Computer Science – перспективное направление современного обучения, тесно связанное с IT-технологиями. Представляет собой совокупность практических и теоретических данных, используемых специалистами при создании и задействовании:

  • информационных систем;
  • баз данных;
  • разнообразных технологий;
  • вычислительной техники.

Сюда также относят программирование. Впервые в качестве относящейся к computers возникла в 20 веке (30-е годы). Образовалась область посредством объединения математической логики и созданием компьютеров.

Говоря простыми словами, Computer Science – все то, что относится к современной «вычислительной технике». Для большинства иностранцев ассоциируется со специальными курсами или направлением обучения в ВУЗе.

Для чего необходимо

Computing Courses по упомянутому направлению в основном проходят программисты – как новички, так и опытные специалисты. Их разделяются на несколько категорий:

  1. Тех, кто собственными силами хотел окунуться в мир IT и изучил языки программирования. Обычно – один из них. Далее обучение прекратилось.
  2. Тех, кто осознает, что в современном мире прогресс и развитие держится на АйТи-технологиях, которые непрестанно совершенствуются. Такие люди не сидят на месте, постоянно изучают что-то новое. Они хорошо разбираются в Computer Science. Способны придумывать нестандартные решения тех или иных задач.

В первом случае работников нельзя назвать лентяями – они просто занимаются «стандартными» обязанностями. Такие лица прекрасно подходят для решения типовых задач и написания элементарных приложений.

Второй вариант – более системный. Подобные спецы готовы заниматься разработкой инновационного программного обеспечения. Работники делают разнообразные утилиты для бизнеса, совершенствуя его с минимальными затратами. Обеспечено полноценно и постоянное развитие.

Стоит обратить внимание еще и на то, что Computer Science – это еще и весьма перспективное высокооплачиваемое направление. Подчиненные в выбранной области получают не только самосовершенствование и бесценные знания, но и достойный заработок.

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

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector