1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sigcc-computer-science

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Open Source Society University

Путь к бесплатному самообразованию в области компьютерных наук!

Open Source Society University (OSSU)

Выравнивание по центру

Путь к свободному самообучению в области информатики!

Awesome Open Source Society University - Computer Science

Содержание

Резюме

Учебный план OSSU представляет собой полное образование в области компьютерных наук с использованием онлайн-материалов. Он предназначен не только для профессионального обучения или повышения квалификации. Это для тех, кто хочет получить надлежащее, всестороннее представление о концепциях, фундаментальных для всех вычислительных дисциплин, и для тех, у кого есть дисциплина, воля и (что наиболее важно!) хорошие привычки, чтобы получить это образование в основном самостоятельно, но при поддержке мирового сообщества единомышленников.

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

Курсы должны:

  • Быть открытыми для регистрации
  • Регулярно проводиться (в идеале в формате самостоятельного обучения, в противном случае — несколько раз в год)
  • Иметь высокое качество учебных материалов и педагогических принципов
  • Соответствовать стандартам учебной программы CS 2013: Руководящие принципы учебной программы для программ бакалавриата в области компьютерных наук

Когда ни один курс не соответствует вышеуказанным критериям, курсовая работа дополняется книгой. Когда есть курсы или книги, которые не вписываются в учебный план, но в остальном имеют высокое качество, они относятся к extras/courses или extras/readings.

Организация. Учебный план разработан следующим образом:

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

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

Стоимость. Все или почти все материалы курса доступны бесплатно. Однако некоторые курсы могут взимать плату за задания/тесты/проекты, которые будут оцениваться. Обратите внимание, что и Coursera, и edX предлагают финансовую помощь.

Решите, сколько или как мало тратить, исходя из своего времени и бюджета; просто помните, что вы не можете купить успех!

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

  • Мы рекомендуем пройти все курсы основного CS, пропуская курс только тогда, когда вы уверены, что уже изучили его. Материал ранее.

  • Для простоты мы рекомендуем проходить курсы (особенно Core CS) в порядке, начиная с верхнего, так как они уже были топологически отсортированы по своим предварительным требованиям.

  • Курсы Advanced CS являются факультативными. Выберите одну тему (например, продвинутое программирование), в которой вы хотите стать экспертом, и пройдите все курсы под этим заголовком. Вы также можете создать свою собственную тему, но мы рекомендуем получить одобрение сообщества по выбранной вами теме.

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

Как внести свой вклад

Получение помощи (подробности о нашем FAQ и чате)

Сообщество

  • У нас есть сервер Discord! Discord Это должно быть вашей первой остановкой для общения с другими студентами OSSU. Почему бы вам не представиться прямо сейчас? Присоединяйтесь к OSSU Discord.
  • Вы также можете взаимодействовать через проблемы GitHub. Если есть проблема с курсом или необходимо внести изменения в учебную программу, это место, где можно начать разговор. Подробнее читайте здесь.
  • Подпишитесь на нашу рассылку новостей.
  • Добавьте Open Source Society University в свой профиль Linkedin.
  • Примечание: существует не поддерживаемое и устаревшее приложение firebase, которое вы можете найти при поиске OSSU. Вы можете спокойно игнорировать его. Подробнее см. в FAQ.

Учебная программа

Версия учебной программы: 8.0.0 (см. CHANGELOG)


Предварительные требования

  • Core CS предполагает, что студент уже прошёл школьную математику, включая алгебру, геометрию и предварительное исчисление.
  • Advanced CS предполагает, что студент уже прошёл весь Core CS и теперь достаточно осведомлён, чтобы решить, какие факультативы выбрать.
  • Обратите внимание, что расширенные системы предполагают, что студент прошёл базовый курс физики (например, AP Physics в старшей школе).

Введение в CS

Знакомство с программированием

Если вы никогда не писали цикл for или не знаете, что такое строка в программировании, начните здесь. Этот курс является самостоятельным, позволяя вам регулировать количество часов, которые вы тратите в неделю, в соответствии со своими потребностями.

Темы: простые программы простые структуры данных

Курсы Длительность Усилия Предварительные требования Обсуждение
Python для всех 10 недель 10 часов/неделю нет чат Завершите курс, желая большего: компьютерные науки — это то, что вам нужно!

Темы:

  • вычисления;
  • императивное программирование;
  • базовые структуры данных и алгоритмы;
  • и многое другое.
Курсы Длительность Затраты времени Предпосылки Обсуждение
Введение в компьютерные науки и программирование с использованием Python (альтернативный источник) 9 недель 15 часов в неделю знания алгебры на уровне средней школы чат

Основные компьютерные науки

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

Основные навыки программирования

Темы:

  • функциональное программирование;
  • дизайн для тестирования;
  • требования к программе;
  • общие шаблоны проектирования;
  • модульное тестирование;
  • объектно-ориентированный дизайн;
  • статическая типизация;
  • динамическая типизация;
  • языки семейства ML (через Standard ML);
  • языки семейства Lisp (через Racket);
  • Ruby;
  • и многое другое.

Курсы «Как программировать» основаны на учебнике «Как проектировать программы» (htdp.org). Первое издание доступно бесплатно онлайн и включает задачи и решения. Студентам рекомендуется выполнять эти задания.

Курсы Длительность Затраты времени Предпосылки Обсуждение
Как программировать — простые данные 7 недель 8–10 часов в неделю нет чат
Как программировать — сложные данные 6 недель 8–10 часов в неделю Как программировать: простые данные чат
Языки программирования, часть A 5 недель 4–8 часов в неделю Как программировать чат
Языки программирования, часть B 3 недели 4–8 часов в неделю Языки программирования, часть А чат
Языки программирования, часть C 3 недели 4–8 часов в неделю Языки программирования, часть В чат
Объектно-ориентированный дизайн 4 недели 4 часа в неделю Основы Java
Шаблоны проектирования 4 недели 4 часа в неделю Объектно-ориентированный дизайн
Архитектура программного обеспечения 4 недели 2–5 часов в неделю Шаблоны проектирования

Основные математические навыки

Дискретная математика (математика для компьютерных наук) является предпосылкой и тесно связана с изучением алгоритмов и структур данных. Исчисление готовит студентов к дискретной математике и помогает им развить математическую зрелость.

Темы:

  • дискретная математика;
  • математические доказательства;
  • базовая статистика;
  • O-нотация;
  • дискретная вероятность;
  • и многое другое.
Курсы Длительность Затраты времени Примечания Предпосылки Обсуждение
Исчисление 1А: дифференцирование (альтернатива) 13 недель 6–10 часов в неделю Альтернатива охватывает этот и следующие 2 курса знания математики на уровне средней школы чат
Исчисление 1B: интегрирование 13 недель 5–10 часов в неделю Исчисление 1A чат
Исчисление 1C: системы координат и бесконечные ряды 6 недель 5–10 часов в неделю Исчисление 1B чат Математика для компьютерных наук

Mathematics for Computer Science (alt) | 13 недель | 5 часов в неделю | Решения за 2015 и 2019 годы, решения за 2010 год, решения за 2005 год. | Математический анализ 1C | чат

Инструменты для работы с CS

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

Темы:

  • терминалы и скриптовый язык оболочки;
  • Vim;
  • командные среды;
  • контроль версий;
  • и многое другое.
Курсы Длительность Объём работы Предпосылки Обсуждение
The Missing Semester of Your CS Education 2 недели 12 часов в неделю чат

Основные системы

Темы:

  • процедурное программирование;
  • ручное управление памятью;
  • булева алгебра;
  • логические вентили;
  • память;
  • архитектура компьютера;
  • ассемблер;
  • машинный язык;
  • виртуальные машины;
  • высокоуровневые языки;
  • компиляторы;
  • операционные системы;
  • сетевые протоколы;
  • и многое другое.
Курсы Длительность Объём работы Дополнительные материалы / задания Предпосылки Обсуждение
Build a Modern Computer from First Principles: From Nand to Tetris (альтернативный курс) 6 недель 7–13 часов в неделю Язык программирования, похожий на C чат
Build a Modern Computer from First Principles: Nand to Tetris Part II 6 недель 12–18 часов в неделю Один из этих языков программирования, курс «Build a Modern Computer from First Principles: From Nand to Tetris» чат
Operating Systems: Three Easy Pieces 10–12 недель 6–10 часов в неделю Хорошее знание языка C чат
Computer Networking: a Top-Down Approach 8 недель 4–12 часов в неделю Wireshark Labs Алгебра, теория вероятности, основы CS чат

Основная теория

Темы:

  • метод «разделяй и властвуй»;
  • сортировка и поиск;
  • рандомизированные алгоритмы;
  • поиск по графу;
  • кратчайшие пути;
  • структуры данных;
  • жадные алгоритмы;
  • минимальные остовы;
  • динамическое программирование;
  • NP-полнота;
  • и многое другое.
Курсы Длительность Объём работы Предпосылки Обсуждение
Divide and Conquer, Sorting and Searching, and Randomized Algorithms 4 недели 4-8 часов в неделю Любой язык программирования, курс «Математика для компьютерных наук» чат
Graph Search, Shortest Paths, and Data Structures 4 недели 4-8 часов в неделю Курс «Divide and Conquer, Sorting and Searching, and Randomized Algorithms» чат
Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming 4 недели 4-8 часов в неделю Курс «Graph Search, Shortest Paths, and Data Structures» чат
Shortest Paths Revisited, NP-Complete Problems and What To Do About Them 4 недели 4-8 часов в неделю Курс «Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming» чат

Основы безопасности

Темы:

  • конфиденциальность, целостность, доступность;
  • безопасный дизайн;
  • защитные меры. Программирование
  • Scala для параллельного программирования | 4 недели | 6-8 часов в неделю | Программирование на Scala

Компиляторы

  • Компиляторы | 9 недель | 6–8 часов в неделю | Нет

Введение в Haskell

  • Введение в Haskell | 14 недель | — | —

Изучаем Prolog сейчас!

  • Изучаем Prolog сейчас! | 12 недель | — | —

Отладка программного обеспечения

  • Отладка программного обеспечения | 8 недель | 6 часов в неделю | Python, объектно-ориентированное программирование

Тестирование программного обеспечения

  • Тестирование программного обеспечения | 4 недели | 6 часов в неделю | Опыт программирования на Python

Продвинутые системы

Темы:

  • цифровая передача сигналов;
  • комбинационная логика;
  • технологии CMOS;
  • последовательная логика;
  • конечные автоматы;
  • наборы команд процессора;
  • кэши;
  • конвейеризация;
  • виртуализация;
  • параллельная обработка;
  • виртуальная память;
  • примитивы синхронизации;
  • интерфейс системных вызовов и др.
Курсы Длительность Затраты времени Необходимые знания Примечания
Структуры вычислений 1: Цифровые схемы
  • Структуры вычислений 1: Цифровые схемы | 10 недель | 6 часов в неделю | Nand2Tetris II | Альтернативные ссылки содержат все три курса.

Структуры вычислений 2: Архитектура компьютера

  • Структуры вычислений 2: Архитектура компьютера | 10 недель | 6 часов в неделю | Структуры вычислений 1

Структуры вычислений 3: Организация компьютера

  • Структуры вычислений 3: Организация компьютера | 10 недель | 6 часов в неделю | Структуры вычислений 2

Продвинутое теоретическое обучение

Темы:

  • формальные языки;
  • машины Тьюринга;
  • вычислимость;
  • событийно-управляемая параллельность;
  • автоматы;
  • распределённая общая память;
  • алгоритмы консенсуса;
  • репликация конечного автомата;
  • теория вычислительной геометрии;
  • пропозициональная логика;
  • реляционная логика;
  • логика Гербранда;
  • деревья игр и др.
Курсы Длительность Затраты времени Необходимые знания
Теория вычислений
  • Теория вычислений | 8 недель | 10 часов в неделю | дискретная математика, логика, алгоритмы

Вычислительная геометрия

  • Вычислительная геометрия | 16 недель | 8 часов в неделю | Алгоритмы, C++

Теория игр

  • Теория игр | 8 недель | 3 часа в неделю | Математическое мышление, вероятность, исчисление

Информационная безопасность

Курсы Длительность Затраты времени Необходимые знания
Основы веб-безопасности
  • Основы веб-безопасности | 5 недель | 4–6 часов в неделю | Понимание основных веб-технологий

Управление безопасностью и соблюдение требований

  • Управление безопасностью и соблюдение требований | 3 недели | 3 часа в неделю | —

Концепции цифровой криминалистики

  • Концепции цифровой криминалистики | 3 недели | 2–3 часа в неделю | Core Security

Безопасное программирование: требования, дизайн и повторное использование

  • Безопасное программирование: требования, дизайн и повторное использование | 7 недель | 1–2 часа в неделю | Основные навыки программирования и Core Security

Безопасное программирование: реализация

  • Безопасное программирование: реализация | 7 недель | 1–2 часа в неделю | Безопасное программирование: требования, дизайн и повторное использование

Безопасное программирование: проверка и дополнительные специализированные темы

  • Безопасное программирование: проверка и дополнительные специализированные темы | 7 недель | 1–2 часа в неделю | Безопасное программное обеспечение прогресс, а также возможность демонстрировать свой прогресс через публичную страницу для друзей, семьи, работодателей и т. д.

Вы можете изменить статус своей доски на «публичный» или «частный».

Команда

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

Вы можете оставить комментарий после Вход в систему

Введение

Опенсорс юниверсити — самоучитель по информатике. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/sigcc-computer-science.git
git@api.gitlife.ru:oschina-mirror/sigcc-computer-science.git
oschina-mirror
sigcc-computer-science
sigcc-computer-science
master