vak: (Default)
[personal profile] vak
Увидел тут на днях расписание занятий четвёртого курса Физтеха - кто-то в фейсбуке вывесил.  И стало мне грустно-печально.  Вспомнилась старая шутка про военную академию, где генералов учат мастерски побеждать в давно прошедшей войне.  Здесь же преподают вещи, которые имели огромную ценность во времена Королёва и Курчатова.  То есть пятьдесят лет назад.  Не то, чтобы оно бесполезно, нет, но мир заметно изменился с тех пор.  Не могу судить про теорфизиков, но уж на программистском факультете совсем другие приоритеты требуются.

К примеру.  Мой друг Юрий Панчул [livejournal.com profile] panchul разработал концепцию лабораторного курса для программистских специальностей. Краткий конспект:
  1. Сборка простых электронных схем на основе микросхем малой степени интеграции
    • Знакомство с концепциями логического элемента (gate), D-триггера (D-flip-flop) и синхросигнала
    • Макетная плата (breadboard), батарейка, лампочки (LED), проводочки, микросхема генерации синхросигнала (555 Timer), CMOS микросхемы серии 4000, 7-сегментный дисплейчик
    • Лаба - сборка на макетной плате всяких счетчиков и бегающих огоньков

  2. Дизайн цифровой логики на языке SystemVerilog с реализацией на платах ПЛИС (FPGA) от Xilinx или Altera
    • Знакомство с языком SystemVerilog и его конструкциями - модуль, порты, сигналы, always-blocks, continuous assignments, blocking и non-blocking assignments
    • Знакомство с концепциями моделирования (HDL simulation), логического синтеза, place-and-route, static timing analysis
    • Знакомство с бесплатным/дешевым софтвером Xilinx ISE WebPACK, Altera Quartus II, Aldec HDL, ModelSim-Altera Starter Edition
    • Знакомство с FPGA платами - Xilinx Basys 2, Xilinx Nexys 2, Altera DE0, Altera DE1
    • Лаба - переписать на верилог, засинтезировать и загрузить на плату дизайнов счетчиков и бегающих огоньков из первой лабы

  3. Конечные автоматы и дизайн с адресуемой памятью
    • Знакомство с концепцией конечного автомата (state machine)
    • Знакомство с устройствами ввода на плате - клавишами и кнопками, и как их debounce
    • Знакомство с концепцией адресуемой памяти и интерфейса шины
    • Лаба - конечный автомат, принимающий от переключателей команды чтения и записи в память всяких последовательностей

  4. Что такое процессор?
    • Знакомство с концепциями комбинационной и секвенциальная логики (combinational and sequential logic)
    • Лаба - простейший процессор, выполняющий команды в один длинный цикл. Дискуссия о максимальной тактовой частоте.
    • Концепция конвейера
    • Лаба - конвейерный процессор с 3-5 стадий и без interlocks - hazards компенсируются nop-ами
    • Концепция stalls и forwarding
    • Лаба - конвейерный процессор с stalls и forwarding

  5. Программирование на голом железе и зачатие операционной системы
    • Лаба - знакомство с платой chipKit32 / PIC32 / MIPS и программирование её на С с помощью Arduino-подобного GUI. Кнопочки, лампочки, дисплейчик, IO Shield.
    • Введение в ассемблер на примере MIPS
    • Лаба - загрузка в память программок на ассемблере
    • Концепция простейшей многозадачной операционной системы
    • Лаба - своя игрушечная многозадачная ОС, которая бутится, ставит обработку прерывания по таймеру, в котором переключает задачи по схеме round-robin.

Конструктивная критика приветствуется.

Date: 2011-10-02 15:07 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
Поставить мышление нужно, но зачем ставить мышление скажем писателя компиляторов теорфизикой и при этом не преподавать алгоритмы, используемые в компиляторах?

а что, именно теорфизикой в действительности мучают?
не, для LR(1) грамматики теорфизика наверное и правда излишня, то вот если дальше начать буриться, в современные, то там как бы не произошла смычка через какую-нибудь теоркат.

И, если вы правы, почему например врачей все-таки учат биохимии, анатомии и как резать на лабах, а не теорфизике? Почему от врачей не требуют самообразования для реальной работы?

ну здрасте, а ординатура?

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

ну расскажите, какое такое специализированное железо доступно и оспользуется какой-либо субд, сайтом на java/php/ror? ms office? 1c бухгалтерией? SAP/R3?