Ресурсы о различных областях информатики - PullRequest
4 голосов
/ 27 июля 2010

Я собираюсь начать свой последний год в университете в сентябре этого года, поэтому мне нужно сделать проект для моей диссертации. Я взглянул на список проектов, предложенных университетом в прошлом году, и я не нашел ни одного из них, ЧТО интересного. Это, в сочетании с моей «любовью» к «теоретической» компьютерной науке в целом, заставило меня задуматься о том, что было бы неплохо провести последний месяц моих летних каникул, исследуя некоторые из областей CS более углубленно. До сих пор в университете, касаясь более «теоретической» стороны информатики, мы в основном рассматривали алгоритмы поиска и сортировки, сопоставление строк, теорию игр, шаблоны проектирования для разработки программного обеспечения и алгоритмы решения лабиринтов. В следующем году программа включает в себя биоинформатику, компиляторы и машинное обучение. У меня есть представление обо всех этих вещах, но ничего невероятно подробного (т. Е. Мы вообще не занимались разработкой алгоритмов). Итак, я подумала, вместо того, чтобы выбрать проект из списка или выбрать проект, который мог бы сделать и любитель, почему бы не изучить несколько областей информатики и мозгового штурма в процессе?

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

Обратите внимание, что я только хочу понять, о чем они, но пока не связываться с техническими проблемами.

Поля:

  • Веб-семантика

  • Алгоритмы (анализ, проектирование и т. Д.)

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

  • Эволюционные вычисления

  • Теория игр

  • Другое (???)

Ответы [ 4 ]

1 голос
/ 27 июля 2010

Это не совсем отвечает на ваш вопрос, но вот мои два цента:

Идеальная тема была бы у вас:

  • Интерес к.
  • Мнение о.
  • Уже немного знаю о, но не было времени, чтобы изучить более подробно.

Например, предположим, что вы считаете, что:

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

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

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

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

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

1 голос
/ 27 июля 2010

http://ocw.mit.edu - невероятно хороший ресурс для всего, что связано с наукой, особенно в области компьютерных наук. У них есть куча интересных лекционных заметок, ссылок на чтения, предложений книг, видео и наборов задач по большинству компьютерных и научных тем. Это в основном учебные планы и курсовые работы Массачусетского технологического института, все они размещены на общедоступном веб-сайте. Кроме того, фокус MIT в его классах CS довольно теоретический, так что это плюс.

В качестве дополнительного бонуса «открытая курсовая работа» происходит из философии открытого исходного кода.

Я также хотел бы добавить предложение к существующему списку тем: криптография.

0 голосов
/ 02 июня 2017

Ключевым навыком в области компьютерных наук является написание кода. Но чтобы стать хорошим программистом, нужно сначала научиться читать код. (Хемингуэй сначала научился читать, прежде чем освоил его написание). Быстрое понимание кода является одним из важнейших навыков в CS. Я написал небольшую веб-страницу, посвященную пониманию кода путем решения головоломок на уровне сложности пользователя: Finxter . В качестве побочного эффекта вы узнаете о наиболее важных алгоритмах и алгоритмических методах: QuickSort, MergeSort, Scheduling, вычислительной сложности и т. Д.

0 голосов
/ 27 июля 2010

Для машинного обучения: Эндрю Нг (Stanford Prof.) имеет свой курс машинного обучения онлайн.

Вы можете найти его в iTunes U и YouTube .

...