Перейти к содержимому

Scientific computing что это

  • автор:

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

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

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

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

Приводить сотни всевозможных материалов для программистов-самоучек мы не будем, а лишь попытаемся ответить на два главных вопроса:

  • Какие дисциплины следует изучать и почему?
  • Какие из доступных ресурсов, книг, серий лекций для конкретной дисциплины имеет смысл посмотреть?

В качестве ответа приведём список материалов, опубликованный Озаном Онай (Ozan Onay) и Майлзом Бёрном (Myles Byrne) — инструкторами в школе компьютерных наук Брэдфилда в Сан-Франциско. Данная подборка литературы и курсов основана на личном опыте обучения сотен программистов-самоучек.

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

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

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

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

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

Дисциплины

Программирование

Лучшая книга:

Структура и интерпретация компьютерных программ

Львиная доля студентов Computer Science начинают с «вводных курсов» по программированию. Однако такие курсы будут полезны не только новичкам, но и вполне себе специалистам, которые по какой-либо причине пропустили некоторые базовые для программирования вещи.

Мы рекомендуем взять во внимание классическую «Структуру и интерпретацию компьютерных программ». Прочтите как минимум три главы приведенной выше книги, выполняя упражнения для практики. Для тех, кому данная книга кажется слишком сложной, рекомендуется «How to design programs». Тем же, кому она наоборот кажется слишком лёгкой, следует обратить внимание на «Concepts, Techniques, and Models of Computer Programming».

Можно также послушать лекции университета MIT по данной теме. Как альтернативу мы рекомендуем прослушать лекции Брайана Харви из университета Беркли, особенно, если для вас это в новинку.

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

Архитектура ЭВМ

Лучшая книга:

Цифровая схемотехника и архитектура компьютера

Лучшая серия лекций: Berkeley CS 61C

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

The elements of Computing Systems — амбициозная книга, которая даёт понимание того, как работает компьютер. Каждая глава — строение одной маленькой детали большой системы: от написания логики на HGL (языке описания аппаратуры) через центральный процессор к созданию тетриса.

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

Не ищите простого объяснения сложных вещей в этой книге — автор заходит издалека. Если конкретнее, то в книге, например, почти полностью отсутствуют два очень важных концепта в современной архитектуре ЭВМ — вычислительный конвейер и иерархия памяти.

Как только вы почувствуете себя в своей тарелке, читая эту книгу, смело переходите на Computer Organization And Design, отличный текст, который стал своего рода классикой. Также обратите внимание на курс CS61C, лекции которого доступны онлайн.

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

Лучшая книга:

Алгоритмы Руководство По Разработке

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

Есть сотни книг для изучения алгоритмов, но наш фаворит — «Алгоритмы Руководство по разработке» от Стивена Скиена. Наш выбор пал именно на неё, потому что автор определенно любит то, что он делает и хочет донести свои знания до читателя.

Для тех же, кто предпочитает лекции в формате видео, Скиена предлагает свой онлайн-курс. Также следует обратить внимание на курс Тима Рафгардена, доступного на Lagunita (сервис от университета Стэнфорда) или на Coursera. Материал обоих авторов очень полезен и информативен и кому из них уделить внимание — решать вам.

Мы практикуемся, решая задачи на Leetcode, потому что их задачи кажутся нам наиболее интересными. К тому же у каждой задачи есть ветка обсуждения и прикрепленное решение для самопроверки. Стоит отметить, что подобного рода задачи могут являться вопросами на интервью и решение их может сыграть вам на руку в будущем трудоустройстве. Для проверки своего знания алгоритмов решите 100 случайных задач на Leetcode.

В завершение, мы настоятельно рекомендуем How to solve it — великолепный материал для практики решения задач. Подходит как тем, кто изучает компьютерные науки, так и математикам.

Математика для компьютерных наук

Лучшая книга:

Mathematics for Computer Science

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

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

Хорошим началом изучения дискретной математики является сборник лекций от László Lovász. Профессор проделал хорошую работу, чтобы сделать математику понятной и интуитивной, так что его работы куда больше подойдут новичкам, чем формальные математические тексты.

Для большего погружения советуем Mathematics for Computer Science — записи с лекций по одноименному курсу MIT, которые по объёму тянут на полноценную книгу. Видео данных лекций, кстати, тоже в свободном доступе.

Для линейной алгебры мы предлагаем начать с плейлиста Основы линейной алгебры.

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

Лучшая книга:

Operating Systems: Three Easy Pieces

Лучшая серия лекций: Berkeley CS 162

Operating System Concepts и Modern Operating Systems — классика в вопросе операционных систем. Обе довольно часто подвергались критике в основном за то, что не являются 1000-страничными быстроустаревающими энциклопедиями, новое издание которых приходится покупать каждые пару лет.

Существует ещё одна книга по операционным системам, которую мы также очень рекомендуем к ознакомлению. Three Easy Pieces: структура повествования книги делает её легкой к восприятию, а задания помогут закрепить полученные знания.

После прочтения указанных выше книг имеет смысл пройтись по конкретным операционным системам и прочесть следующее: A commentary on the unix operating system, The design and implementation of the freeBSD operating systems и Mac OS internals.

Идеальный способ закрепить полученные знания — это прочесть код небольшого ядра и внести в него свои изменения. Как вариант можно взять XV6 — современную реализацию 6 версии Unix для архитектуры x86, написанную на ANSI C. В приведённой выше Three Easy Pieces есть раздел с заданиями с XV6, полный интересных идей для потенциальных проектов.

Компьютерные сети

Лучшая книга:

Computer Networking: A Top-Down Approach

Лучшая серия лекции: Stanford CS 144

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

Наш фаворит в этом вопросе — Computer Networking: A Top-Down Approach. Небольшие проекты и задания для практики на протяжении всего материала весьма интересны и стоят вашего внимания. Также следует обратить внимание на Wireshark labs, любезно предоставленные автором книги.

Для тех же, кто предпочитает просмотр лекций чтению книг, мы рекомендуем серию лекций от университета Стэнфорд Stanford CS 144.

Небольшие проекты, как ни странно, более полезны для освоения компьютерных сетей, нежели задачки. Некоторые из них — HTTP сервер, чат-приложение на UDP, мини TCP stack или же распределённая таблица хэшей и т.д.

Базы данных

Лучшая книга:

Readings in Database Systems

Изучение баз данных требует куда большего упорства, чем нужно для других тем, так как базы данных —относительно новая область компьютерных наук (с 1970-ых). Её основы скрыты от нас по вполне себе понятным коммерческим причинам. К тому же многие потенциальные авторы книг по базам данных предпочли сами стать разработчиками и основали свои компании.

Учитывая приведенные выше обстоятельства, мы настоятельно рекомендуем новичкам избегать книжек и начинать прямиком с записей CS186 весны 2015 от Джо Геллерштейна из университета Беркли. После данного курса уже можно переходить к книжкам.

Одна из них — это Architecture of a Database System от того же профессора из того же университета. Книга даст читателю углубленный взгляд на реляционные базы данных и послужит отличным скелетом для будущих знаний в этой области.

Readings in Database Systems, также известная как красная книга по базам данных (никто не вымирает), представляет собой сборник публикаций по данной теме. Для тех, кто осилил CS186, эта книга может стать следующей остановкой.

Если вы настаиваете на том, чтобы начинать изучение баз данных по книжкам, то советуем обратить внимание на Database management systems.

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

Под конец, моделирование данных — один из самых пренебрегаемых аспектов в изучении баз данных. Здесь нашим фаворитом является Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World.

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

Лучшая книга:

Compilers: Principles, Techniques and Tools

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

Классикой в данном вопросе является Compilers: Principles, Techniques and Tools. К сожалению, этот материал больше подходит учителям, нежели самоучкам. Однако книга отлично подойдёт для непоследовательного чтения, для выхватывания отдельных кусков из материала и изучения по ним. К тому же, если у вас будет учитель, это лишь ускорит ваше обучение.

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

Потенциальной альтернативой этой книге может стать Language Implementation Patterns. Она написана с упором на инженеров, которые собираются практиковаться на языках вроде DSL.

В качестве проекта для закрепления материала можно написать свой компилятор для простенького языка вроде COOL. Те, кому данный проект кажется невыполнимым, могут начать с чего-то вроде Make a Lisp.

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

Лучшая книга:

Distributed Systems, 3rd Edition by Maarten van Steen

Число компьютеров и их разнообразие увеличилось за последние несколько десятков лет. Если раньше крупные компании закупали огромные сервера для обеспечения работы каких-либо программ, то сегодня нам кажется очевидным тот факт, что даже самые незначительные программы работают на нескольких компьютерах одновременно. Распределённые системы — наука о том, как это обеспечить.

Книга, которую мы хотим посоветовать, — Distributed Systems, третье издание которой служит прекрасным дополнением всем предыдущим. Учитывая то, что распределенные системы — область, которая достаточно часто меняется, нет уникальной книги, которая проведёт вас по этому тернистому пути. Приведённая же выше книга, по нашему мнению, наиболее близка к этому идеалу.

Можно также обратить внимание на серию лекций MIT 6.824, но, к сожалению, качество записи звука оставляет желать лучшего.

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

Часто задаваемые вопросы

Что насчет искусственного интеллекта и графики?

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

  • ИИ: пройдите введение в ИИ от университета Беркли и выполните проект Pacman. Прочтите великолепную книгу от Рассела и Новрига Artificial Intelligence: A Modern Approach;
  • Машинное обучение: пройдите этот курс на Coursera и убедитесь, что действительно понимаете смысл повествования и основы машинного обучения, прежде чем переходить на Deep Learning;
  • Графика: ознакомьтесь с серией лекций из университета Беркли CS184 и прочтите книгу Computer Graphics: Principles and Practice.

Насколько важно строго следовать порядку, приведенному в статье?

На самом деле, все 9 дисциплин достаточно часто пересекаются. К примеру, возьмите дискретную математику и алгоритмы: изучение математики поможет вам в освоении алгоритмов. Знание алгоритмов, в свою очередь, даст стимул погрузиться в дискретную математику. В идеальном сценарии программист достаточно часто повторяет данный материал в своей карьере.

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

Что общего у данного списка с Open Source Society или FreeCodeCamp?

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

Касательно FreeCodeCamp, данный ресурс сконцентрирован на программировании, а не на компьютерных науках.

А где же язык X?

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

Почему вы до сих пор рекомендуете книжку с драконами (Compilers: Principles, Techniques and Tools)?

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

COMPUTER SCIENCE

The conference will bring together experts in computer science, nanotechnology and related fields.

(CS) досл. компьютерные науки, теория вычислительных машин и систем; вычислительная техника (как область знаний) общее название для совокупности дисциплин, связанных с конструированием компьютеров и их использованием в обработке информации. Объединяет теоретические и практические аспекты многих наук, таких как электроника, программирование, математика, искусственный интеллект, человеко-машинное взаимодействие, конструирование ЭВМ и др. см. тж. artificial intelligence, complexity theory, software engineering

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

Сотрудник Силиконовой долины о Сколково, computer science и математике

Что такое Computer Science, где проходит грань между этой наукой и математикой и чего можно ожидать от Сколково, в интервью «Газете.Ru» рассказал доктор Андрей Голдберг, ведущий научный сотрудник одной из лабораторий Силиконовой долины (США) — Microsoft Research.

— Что в целом собой представляет такая популярная в настоящее время в мире наука, как Computer Science?
— Computer Science (CS) — это междисциплинарная наука, объединяющая в себе элементы различных областей знаний — от электромеханики до математики. Традиционно CS включает в себя такие вопросы, как теория алгоритмов, языки программирования, системы и построение компьютерных сетей, искусственный интеллект и архитектура вычислительной системы. Кроме того, не так давно начали появляться новые междисциплинарные сферы, связывающие CS с другими науками. К ним можно отнести квантовые вычисления, теорию игр и вычислительную биологию.

— Есть ли русскоязычный аналог термина Computer Science?
— Наиболее близкий перевод — информатика, но язык как-то не поворачивается так сказать. В английском этот синоним Computer Science употребляется только в словосочетаниях, например bioinformatics. И я не одинок: в России многие пользуются термином Computer Science без перевода.

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

— Можно ли выделить в истории развития науки конкретный момент, с которого началась Computer Science?
— Общепринятой исторической датой зарождения CS считается 1936 год, когда Алонзо Чёрч и Ален Тюринг независимо формализовали понятия алгоритма и абстрактной модели вычислительной машины. Однако CS — наука мультидисциплинарная, и каждая область имеет свою историю. Алгоритмы впервые упомянуты в девятом веке в книге персидского учёного Мухаммеда аль-Хорезми. Для программистов CS появилась в 1947 году, когда был обнаружен и ликвидирован первый компьютерный bug (моль в реле компьютера Harvard Mark II).

— Расскажите немного о себе: где получали образование, где работаете, чем занимаетесь, какова область ваших научных интересов.
— Мне посчастливилось получить образование в лучших школах и вузах. Я закончил московскую спецшколу № 57, а высшее образование получил в США: степень бакалавра в Массачусетском технологическом институте, магистра — в Беркли (Berkeley), а доктора философии опять в MIT. В настоящее время я работаю в лаборатории Microsoft Research — Silicon Valley. До этого работал в академии (Stanford University), исследовательских отделениях крупных компаний (GTE Laboratories, NEC Research Institute) и стартапе (InterTrust Technologies).

Мой опыт включает работу с алгоритмами, структурами данных и теорией игр, алгоритмами в большей степени. Меня интересует их изучение с точки зрения научного метода. Это включает как разработку и анализ эффективных алгоритмов, так и их имплементацию и экспериментальное изучение. Часто теоретические идеи улучшают практическую эффективность алгоритмов, а эксперименты дают идеи и направления для теоретических разработок. Идеальный результат — практичные и теоретически обоснованные алгоритмы.

— Приведите, пожалуйста, наглядный практический пример использования CS из области вашей деятельности.
— Последние несколько лет я занимался задачами маршрутизации: имея карту и запрос «как проехать из пункта А в пункт Б», требуется найти самый быстрый (или самый короткий) путь из А в Б. Формально это задача о нахождении кратчайшего пути в графе. Алгоритмами для этой классической задачи занимаются более 50 лет.

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

Эти новые алгоритмы используются на практике, в том числе в Bing Maps. Быстрые алгоритмы делают практичными дополнительные функции маршрутизации. Например, в реальном времени можно перетянуть маршрут через альтернативную точку. Эти алгоритмы также могут быть использованы в навигационных системах и мобильных телефонах.

— Недавно стало известно, что индийский математик Винай Деолаликар представил свое доказательство одной из «Задач тысячелетия» — проблемы неравенства классов сложности P и NP. Данная проблема — это все-таки в большей степени математика или же это прямая задача из области CS, тем более что Деолаликар работает исследователем в компании HP?
— «P=?NP» — это очень важная задача на границе математики и CS. P — это класс задач, для которых существуют (теоретически) эффективные алгоритмы; NP — класс задач, для которых можно, угадав правильное решение, эффективно его проверить. Известно, что если есть эффективный алгоритм для любой из «самых сложных» задач из NP (например, для задачи коммивояжера), то P=NP. Многие области теоретической CS основаны на предположении, что не все задачи NP находятся в P. Например, в криптографии предполагается, что сообщение можно эффективно расшифровать, зная соответствующий ключ, но нельзя эффективно расшифровать без ключа. Если P=NP, такого не может быть, так как ключ можно угадать.

Ежегодно появляются десятки «решений» задачи «P=?NP», в основном от непрофессионалов. Однако задача до сих пор не решена.

Попытка Деолаликара более серьезна, чем большинство других, но эксперты нашли ошибки в его доказательстве.

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

— Как за рубежом развита CS? Какие отличия от того, что есть в России?
— В США CS — это высокоразвитая отрасль с хорошей инфраструктурой и серьезным финансированием научных исследований и производства. Специалистов в этой области сегодня готовят ведущие университеты США, обучение в которых проходят американские и зарубежные студенты. Выпускники соответствующих факультетов получают широчайшие карьерные возможности как бизнесе, так в научной сфере.

Если говорить о России, то из-за недостаточного финансирования науки сегодня наблюдается очевидная нехватка учебных программ в области Computer Science в российских вузах.

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

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

— Вы сказали, что в России из-за недостаточного финансирования науки сегодня наблюдается очевидная нехватка учебных программ в области CS. Можно ли все-таки в России успешно заниматься CS? Если да, то где?
— Хотя в России CS не хватает критической массы, отдельные ученые и фирмы занимаются исследованиями и разработками на мировом уровне. Например, «Яндекс» — лидер на российском рынке поисковиков. Это огромное достижение. Технологии поиска постоянно совершенствуются, и поисковик «Яндекса» постоянно улучшается, чтобы оставаться конкурентоспособным.

Ответ «Яндекса» на недостаток учебных программ и нехватку квалифицированных специалистов — Школа анализа данных. Эта школа создана и спонсируется «Яндексом». Вечерние занятия посещают тщательно отобранные студенты, которые также имеют возможность стажироваться в компании. Школа дает диплом о дополнительном образовании, а также имеет совместные программы с МФТИ и ГУ ВШЭ. Она привлекает очень сильных студентов, многие из которых идут работать в «Яндекс» по окончании образования. Это очень успешный проект, приносящий пользу и «Яндексу», и системе российского образования в CS. Хочется верить, что другие крупные компьютерные компании переймут опыт и создадут похожие школы. Это принесет огромную пользу развитию высшего образования в CS.

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

— Как организован процесс в американской Силиконовой долине и чего можно ожидать от ее российского аналога в лице Сколково? Понятно, что этот вопрос требует отдельного разговора и анализа, но все-таки не могли бы вы рассказать об основных составляющих Силиконовой долины, которые должны быть в Сколково, чтобы это был достаточно качественный аналог?
— На эту тему есть анекдот, популярный в долине в 90-е годы.

(start-up, англ. запускать), стартап-компания — недавно созданная компания, (возможно, ещё не зарегистрированная официально, но всерьёз планирующая стать официальной), строящая свой бизнес на основе инновации, не вышедшая на рынок или едва начавшая на него выходить и обладающая ограниченным набором ресурсов. Зачастую стартап-компании называют «гаражными».

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

Само понятие «стартап» очень тесно связано с Силиконовой долиной, функционирование которой было связано именно со стартапом. В 1939 году небезызвестные Уильям Хьюллет и Дэвид Паккард, являвшиеся выпускниками Стэнфордского университета, основали первый в мире стартап, превратившийся впоследствии в такого финансового гиганта, коим сегодня является корпорация Hewlett-Packard.

«Как создать стартап в Cиликоновой долине?
1. Езжайте в Менло Парк (примечание: Menlo Park — город на севере Cиликоновой долины). Найдите дерево.
2. Хорошенько тряхните дерево. С него свалится венчурный капиталист.
3. Пока он не опомнился, произнесите заклинание: «Интернет! Электронная торговля! Ява!»
4. Капиталист даст вам пять миллионов долларов на стартап.
5. Через год-полтора продайте свой стартап, заплатите капиталисту его долю, свою положите в банк.
6. Езжайте в Менло Парк и залезайте на дерево».

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

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

Хороший специалист всегда может найти работу, поэтому для него не так рискованно бросить насиженное место и пойти работать в стартап.

Еще одно достоинство Силиконовой долины — это система высшего образования, в первую очередь университеты Беркли (Berkeley) и Стэнфорд (Stanford). Они обучают новых специалистов, повышают квалификацию старых. Профессора этих университетов тесно связаны с индустрией Силиконовой долины и помогают ей оставаться лидером в области компьютерных технологий.

На первом этапе Сколково должно преследовать две цели.

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

Вторая цель — развивать и укреплять образовательную инфраструктуру путем усиленного финансирования высшего образования в CS и поощрения индустриальных образовательных проектов. Последние могут быть совместными с университетами, как вышеупомянутая школа «Яндекса», так и отдельными, как летние школы Microsoft Research, включая школу MIDAS.

Подписывайтесь на «Газету.Ru» в Новостях, Дзен и Telegram.
Чтобы сообщить об ошибке, выделите текст и нажмите Ctrl+Enter

Знания, востребованные в науке и индустрии

Вечерние курсы в Санкт-Петербурге и в Новосибирске по четырём направлениям: Computer Science, Data Science, Robotics, Software Engineering. Дистанционное обучение и онлайн-курсы для жителей других городов. Школа по управлению продуктами.

В 2022 году Computer Science Center приостановил набор и обучение

О будущих запусках и проектах мы расскажем в наших социальных сетях. Абитуриентов приглашаем в филиалы Школы анализа данных в Петербурге и Новосибирске

Обучение в CS центре

Направления обучения

Студенты могут выпуститься из CS центра по одному из четырёх направлений: Data Science, Software Engineering, Robotics, Computer Science.

Большой выбор курсов

Для выпуска нужно сдать двенадцать курсов за два или три года. Несколько обязательных для выбранного направления и минимум пять на выбор из всех остальных.

Практика или научная работа

За время обучения студенты три семестра выполняют практику или научно-исследовательскую работу под руководством опытного наставника.

Очные курсы центра

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

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

Анализ изображений и видео

Анализ изображений и видео

Асимптотический анализ и теория вероятностей

Асимптотический анализ и теория вероятностей

Вычисления на видеокартах

Вычисления на видеокартах

Машинное обучение

Машинное обучение

Основы дискретной математики

Основы дискретной математики

Параллельное программирование

Параллельное программирование

Программирование на C++

Программирование на C++

Программирование на Java

Программирование на Java

Программирование на Kotlin

Программирование на Kotlin

Программирование на Python

Программирование на Python

Функциональное программирование

Функциональное программирование

Очное обучение в центре

Кураторы CS центра

Заботливые кураторы
Команда CS центра чутко следит за процессом обучения и всегда готова помочь каждому студенту.

Увлечённые преподаватели

Мы ценим наших преподавателей — заслуженных деятелей науки и успешных специалистов в области. Им действительно важно научить.

Студенческий праздник в CS центре

Студенческие мероприятия
В центре получают не только знания, но и знакомятся с людьми, близкими по духу и увлечениям.

Выпускной в CS центре

Ежегодный выпускной — праздник для студентов, преподавателей и организаторов. Подводим итоги года в неучебной обстановке.

Организаторы

Спонсоры

Сотрудничество

Онлайн-образование

Алгоритмы и эффективные вычисления

Алгоритмы и эффективные вычисления

Онлайн-программа

Математика для разработчика

Математика для разработчика

Онлайн-программа

Разработка на C++, Java и Haskell

Разработка на C++, Java и Haskell

Онлайн-программа

Ликбез по дискретной математике

Ликбез по дискретной математике

Онлайн-курс

Алгоритмы: теория и практика. Структуры данных

Алгоритмы: теория и практика. Структуры данных

Онлайн-курс

Функциональное программирование на языке Haskell (часть 2)

Функциональное программирование на языке Haskell (часть 2)

Онлайн-курс

Отзывы студентов

Юлия Филюшкина

Юлия Филюшкина

Выпуск 2020, Разработка ПО

CSC сделал из меня человека! 🙂

Алексей Мухин

Алексей Мухин

Выпуск 2019, Анализ данных

Спасибо Вам за все) Спасибо за то, что сделали большой шаг в сторону обучения современной математике и программированию, за часы, проведенные за LaTeX, Python, C++, алгоритмами и ML. Да, было трудно, но нужно справляться с жизненными трудностями. Спасибо Вам за новые знакомства, друзей, товарищей и преподавателей.

Ростислав Епифанов

Ростислав Епифанов

Выпуск 2021, Анализ данных

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

Александр Башкиров

Александр Башкиров

Выпуск 2021, Разработка ПО

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *