Гипотетический шестилетний учебный план специальности вида «Прикладная математика и информатика»

Jan 23, 2011 15:39

My suggestion is that the first degree qualifying to practice as a computers scientist should be master's-and a master's designed as a whole-not as a bachelor'r degree with an appended final year or two.
Bjarne Stroustrup «What should we teach new software developers? Why?»

Примерно вот так мог бы выглядить гипотетический учебный план « ( Read more... )

образование, вмк

Leave a comment

esyr January 23 2011, 13:32:53 UTC
Чотто жиденько. Многое упущено (что неудивительно, бо это практичесвки калька с имеющейся программы), как минимум, не увидел курсы вычислительной сложности, языков программирования. Ну и двухгодовой учебный план по функану в студию. Алсо, о чём должны быть курс "программирование вычислительных задач", "пакеты прикладных программ", "современные проблемы прикладной математики"? Тоже, программу было бы интересно увидеть. Кроме того, интересно, как можно параллельное программирование уместить в полугодовой курс.

Почему функцинальное программирование в 9 семестре, а не в 4-6, например? Почему, опять же, сети, базы данных, имеют такой маленький объём и идут так поздно? Без них, кстати, про современные вычсистемы и прочие суперкомпьютеры можно не рассказывать.

И да, в шестилетке 12 семестров, всё же, да.

Reply

cristobal_junta January 23 2011, 13:52:55 UTC
1. Да, я лопухнулся: два семестра куда-то пропали. Таким образом, на "шестилетку" курсов я набрать не могу ( ... )

Reply

cristobal_junta January 23 2011, 14:04:41 UTC
методы и технологии параллельного программирования:
- OpenMP, pthreads
- MPI-1,2,I/O
- Global Arrays
- UPC

Что еще?

Далее есть "Параллельные численные алгоритмы".

Reply

yurikl January 23 2011, 22:21:45 UTC
SHMEM, Charm++, ..., FPGA ;)

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

Reply

cristobal_junta January 24 2011, 23:06:38 UTC
Я предполагаю, что понять, "как работает программа С", можно будет после курсов по архитектуре ЭВМ.

mr_mumble, salnikov и Сергей Коробков мне сегодня тоже говорили, что курс по параллельным технологиям должен быть годовым.

Кроме того, обсуждалась и необходимость "семинаров по программированию", где нужно решать задачки по параллельному программированию не на компьютере, а на листе бумаги.

Reply

yurikl January 25 2011, 10:23:57 UTC
конкретные технологии (например, MPI) должны даваться скорее на семинаре/практикуме/работе в проекте, чем на лекциях. Сегодня MPI, завтра что-нибудь еще. а учить нужно фундаментальным вещам, скорее пониманию проблем и набросок возможных путей решения, чем конкретным путям решения (студент и сам в процессе работы над проектом найдет решение, зная о проблеме; да и решение конкретных проблем - это уже техническая специальность).

на счет бумаги - это может и неплохо, но есть проблема - как проверить, что программа работает? (или даже просто компилируется?) Или предлагается писать не программу, а алгоритм (в достаточно общем виде)? Но в любом случае нужно потом проверить решение на практике - а то может на листочке всё супер, а на компьютере - всё ползает.

Reply

yurikl January 23 2011, 22:21:58 UTC
А вот чего не хватает - это (всего два семестра) про архитектуру ЭВМ. Причем не столько про какую-то конкретно (они слишком часто меняются), сколько про разные, какие они бывают. Если научить десятке старых, то все новые уже будут легко изучаться самостоятельно.

Сейчас возможности аппаратуры гораздо шире, чем раньше. Если раньше только (грубо говоря) последовательный C, то сейчас параллельный, CUDA, FPGA, ...
Дальше будет только хуже. И нужно готовить людей, которые способны придумывать алгоритмы под аппаратуру (и наоборот!).

Reply

cristobal_junta January 24 2011, 23:12:10 UTC
Думаешь, один семестр про архитектуру современных ЭВМ - это мало?
Вл. В. Воеводин рассказывал про суперкомпьютеры за один семестр.
Причем он затрагивал и векторные машины, которые делал С. Крэй.
Если из того курса переместить MPI, OpenMP и Cilk в курс по параллельным технологиям, то в освободившиеся часы как раз и пойдут графические ускорители и FPGA.

С одной стороны, я не уверен, что нужно детально изучать то, о чем ты говоришь. (Ребята жалуются, что сейчас на "Сетях" они вынуждены учить древние протоколы.)
С другой стороны "Если научить десятке старых, то все новые уже будут легко изучаться самостоятельно." - это совершенно правильная фраза.
Наконец, если все-таки когда-нибудь будет непрерывная шестилетка, то в ней может найтись место для подобного курса. (Сейчас-то я два семестра проворонил.)

Reply

yurikl January 25 2011, 10:04:13 UTC
мне кажется мало. я не готов спланировать четкий курс... но, скаэем, про устройство памяти (статическая, динамическая, ...), кеша (L1, L2, эксклюзивный, инклюзивный, как это влияет на производительность операций), доступ в память (случайный, регулярный) - это уже, как мне кажется, не одна лекция. И это важно понимать, если хочется научить делать эффективные алгоритмы/программы.

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

Reply


Leave a comment

Up