Как полностью самостоятельного изучения информатики?

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

Поиска различных ресурсов в интернете было легко, конечно, открытые курсы МИТ изделий, и есть курсы с Coursera, Стэнфорда и других университетов. Есть множество других открытых ресурсов, разбросанных по сети и несколько хороших книг, которые неоднократно рекомендовали.

Я многому научилась, но мои исследования сильно фрагментирован, что меня очень расстраивает. Я бы с удовольствием, если где-то, я могла найти путь я должен следовать, и стек я ограничусь, так что я могу быть уверен в том, что важно детали по информатике я учился, а потом системно подходить те, кого я не'т.

Проблема с Википедией это не'т скажу вам, что'ы важно, но настаивает на том, полный справочник.

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

Я бы хотел создать список, который я могу следовать, такой обманку

SUBJECTS                                                        DONE

Introduction to Computer Science                                  *
Introduction to Algorithms                                        *
Discrete Mathematics                   
Adv. Discrete Mathematics
Data structures                                                   *
Adv. Algorithms
...

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

Было бы чрезвычайно полезно, даже если кто-то указал необходимые курсы от MIT курс изделий ( + основных предметов нету в МТИ Оку) в рекомендуемом порядке для изучения.

Я'МР список постов я уже прошел (и я не'т получить то, что я искал там)

https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major - верхний ответ заявили, что она вовсе'т заслуживают изучения ЕГЭ

https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science - очки в МТИ Оку

https://softwareengineering.stackexchange.com/questions/49167/studying-computer-science-what-am-i-getting-myself-into

https://softwareengineering.stackexchange.com/questions/19912/overview-of-computer-science-programming

Комментарии к вопросу (10)
Решение

Я've видел некоторые учебные материалы из Массачусетского технологического института, и это было хочется. У них учебных материалов, которые необходимо VC5, много неявные глобальные переменные, передает цвета как "Голубой" и вместо 32бит формате ARGB, а уж 4х [0,1] плавает, и тому подобное. Я бы'т доверять учебной программы или код просто потому, что оно исходит от именитых университетов.

Моя степень в CS (из университета, который является топ-10 в Великобритании для CS) состоял из:

Первый год:

  1. ООП - супер основ
  2. Компьютерные системы - вещи, как двоичное целое число представлений.
  3. Основные теории реляционных баз данных
  4. Математика для CS - простой 2D и 3D геометрии.
  5. Немного HTML и JS - полный новичок'ы вещи
  6. Одинаково чуть-чуть на PHP.
  7. Немного функционального программирования

Второй год:

  1. Юридические вопросы в вычислительной технике - такие вещи, как законы, вращаясь вокруг защиту данных пользователей
  2. Языки программирования - иерархия Хомского и лексический был покрыт
  3. Операционных систем, сетей, и интернет - в основном вещи, как виртуальной памяти и подкачки, стека IP
  4. Компьютерная графика 2D - в основном только доказательства теорем, лежащих в основе математика
  5. АИ - основные характеристики нейронных сетей, систем байесовских, и т. д.
  6. Анализ требований - краткий обзор языка UML, функциональные/нефункциональные требования.
  7. Командный проект

Третий год:

  1. Алгоритм анализа - теории сложности, в основном
  2. Реализация языков программирования - ЛЛ/ЛР методов парсинга, CFGs, и такие вещи.
  3. Управление программными проектами - посмотреть на модели водопада/живчик
  4. Международный вычислительный - Unicode и другие локализации удовольствие
  5. Продвинутый AI - Дон'т знаю, если честно, и я'ве получил экзамен по ней скоро
  6. 3D компьютерной графики - в основном, опять же, только доказав теоремы для вращение матриц и такой
  7. Агентно-ориентированных систем - в основном асинхронные агенты общении, достижения групповых решений и т. д.
  8. Микропроцессор приложений - цифровая обработка сигналов
  9. Робототехнике - охватывает такие вещи, как компьютерное зрение и решение робота оформление на высоком уровне

Как вы'МР заметьте, практически все есть "Основы" из чего-то и почти ничего не транслируется на полезную глубину.

То, что было на самом деле стоит делать, важно:

  1. ООП - и потом еще немного, а затем еще немного
  2. Функциональное программирование - тоже немного. Постарайтесь подобрать такой язык, как C++ или C#, где вы Don'т придется заново изучать синтаксис и инструменты и т. д., чтобы покрыть оба стиля.
  3. ОС часть - виртуальная память-это хорошо, чтобы знать о том, как в режиме ядра против пользовательском режиме. Пропустить сегментация и IP-стека.
  4. Анализ требований - должен быть полезен для любого проекта
  5. Анализ алгоритма зная, что алгоритмическая сложность в том, как ее уменьшить, и какие сложности из распространенных операций является важным.
  6. Модели управления проектами программного обеспечения - многие магазины не поворотлив и многие старые до сих пор водопад-стиль модели.
  7. Международные расчеты - Unicode-это важно

Вещи, которые стоит делать, по желанию:

  1. Языки программирования - иерархия Хомского, инструменты лексический разбор и парсинг. Пропустить теорию за ЛЛ или Парсеры для LR - анализатора LR может принимать практически любые реалистичные однозначные cfg, а когда он может'т, парсер генератор's документация расскажем вам об этом.
  2. 3D-графика. Я не'т имею в виду "и доказать это матрица вращения формула" по-потери времени, я имею в виду фактическое "Это вершинный шейдер" и прочее, или привлекательнее. Что'с веселой, интересной, и по-другому.
  3. Некоторые ИИ-это весело - как потенциальных полей и поиска путей.

Вещи, которые'ы важно, но я не'т не покрывает все:

  1. Параллелизм - это нужно знать, хотя бы азы, для тех, кто в 2012 году.

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

Комментарии (26)

Курс Open изделий находится список курсов, которые они сделали доступными. Если вы хотите знать, что студент взял бы, заскочить МИТ'ы(не Оку) сайт и посмотреть на реальную программу. У них есть список того, что требуется и что считать характерно для настоящего. Вот их страница.

Комментарии (5)

Попробуйте 2001 информатика рекомендации учебной программы от ACM/IEEE и связаны здесь: http://www.acm.org/education/curricula-recommendations

вместе с 2008 обновления в CS.

Страница 17 из доклада 2001 года удобный график, который подчеркивает все в "основных" и знания и еще списки факультативов.

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

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

Комментарии (2)

Если позволите, я'd, как предложить присоединиться github.com как части процесс обучения.

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

И, конечно, вы'll получают знакомы с Git, что это просто все лучше.

Комментарии (2)