Alexander Kuklev (akuklev) wrote,
Alexander Kuklev
akuklev

Category:

Подумалось...

Под влиянием чтения исходников Xv7 сформулировался у меня такой вот учебный план для воспитания IT-генералистов:

Информатика, модуль Understanding Basics.

Блоккурс 1: Простые двоичные машины
    Материалы: радиоконструктор, состоящий из NAND-блоков, переключателей и лампочек.
    Ход курса: в маленьких группах студенты учатся собирать из NAND-блоков двоичные сумматоры, мультиплексоры, триггеры и проч. Итог курса: ALU с вводами и выводами, т.е. самодельный калькулятор, умеющих складывать, вычитать и умножать.
    Длительность: 1 неделя (при ежедневных занятиях)

Блоккурс 2: Программируемые двоичные машины
    Материалы: FPGA-кит с полным инструментарием для разработки и отладки.
    Ход курса: Первым делом простые двоичные машины из предыдущего курса имплементируются на FPGA (посредством языка VHDL). Затем собираются управляющие схемы: в начале конечный автомат для реализации операций деления и взятия квадратного корня итеративным методом. Затем программируемый калькулятор, который развивается до Forth-процессора MicroCore. Это учебный полнофункциональный процессор, с диалектом форта в качестве машинного языка; полное описание с комментариями и исходным кодом влезает в 70 страниц. По ходу развития калькулятора до процессора постепенно вводятся концепции языка Forth, показываются азы программирования.
    Длительность: 2 месяца (при ежедневных занятиях)

Блоккурс 3: Низкоуровневое программирование
    Материалы: Arduino-кит (в идеале, кит на базе разработанного ранее MicroCore).
    Ход курса: на Arduino последовательно реализуются индикаторы, бегущие строки, роботизированная манипуляторы/СУ станком, передвигающийся робот. По ходу реализации студенты изучают язык Си, преподаватель тщательно заостряет внимание на соответствие между кодом на Си (в идеале, C--), машинным кодом и тем, что происходит внутри процессора, прозрачность между всеми тремя уровнями должна сохраняться непрерывно. Студенты должны усвоить процедурный подход к программироанию: понятия подпрограмм и сопрограмм, осознавать размещение скомпилированного кода и данных в памяти, понимать концепцию и техники использования указателей.
    Длительность: 1 месяц (при ежедневных занятиях)

Блоккурс 4: Устройство операционной системы
    Материалы: Исходники и скомпилированная среда обучающей Unix-операционной системы Xv6 (исходники с комментариями и пояснениями занимают 80 страниц)
    Ход курса: Аспект за аспектом, подсистема за подсистемой изучаются все исходники Xv6, по ходу ученики пишут простые прикладные программы-примеры, работающие внутри системы: работа с файлами и потоками, памятью, простыми внешними устройствами, взаимодействие процессов. Обучение продолжается до полного понимания всех аспектов работы операционной системы. В заключительной части делается краткое обозрение компонентной структуры больших современных операционных систем на примере Linux. Интересующимся студентам предлагается собрать Gentoo Stage 1.
    Длительность: 2 месяца (при ежедневных занятиях)

* * *

Вот после такого можно продолжать уже в самые разные стороны:
Развитие темы:
– Современные архитектуры процессоров (x86, ARM, ...)
- Перспективные архитектуры процессоров (MMIX, ...)
- Современные ЯП (Java, .NET, ...)
- Перспективные ЯП (Clojure, Haskel, Scala, ...)
- Современные операционные системы (Linux, ...)
- Перспективные операционные системы (L4 microkernels)

Software engineering:
- Разработка и анализ алгоритмов
- Структуры данных и файловые системы
- Базы данных и работа с ними
- Построение пользовательского интерфейса (технический аспекты)
- Построение пользовательского интерфейса (дизайнерский аспекты)
- Разработка многокомпонентных взаимодействующих систем
- Моделирование workflows, формальные методы
- Модуляризация, стандартизация, реюзабельность, сопровождаемость
- Обеспечение качества и документирование
- Подходы к организации коммандного программирования

Computer science:
- Абстрактные машины и языки
- Лямбда-исчисление и теория типов
- Семантика программ, верификация и валидация
- Парсеры и компиляторы
- Machine learning
- Представление знаний, экспертые системы и AI
- Natural language processing
- Цифровая обработка сингналов и изображений
- Моделирование аналоговых процессов
Subscribe

  • Точные часы

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

  • Прогресс

    Десять дней назад, вторая ступень SpaceX'овского корабля Starship своим ходом слетала своим ходом на десять километров вверх, и усмепшно приземлилась…

  • О водосбережении

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

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 17 comments

  • Точные часы

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

  • Прогресс

    Десять дней назад, вторая ступень SpaceX'овского корабля Starship своим ходом слетала своим ходом на десять километров вверх, и усмепшно приземлилась…

  • О водосбережении

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