Применение рекомендаций Computing Curricula: Software Engineering к российским образовательным стандартам
А.А. Терехов
К.ф.-м.н. Microsoft Россия
А. Н. Терехов
Проф., д.ф.-м.н.
С.-Петербургский государственный университет, ЛАНИТ-ТЕРКОМ
В 2004 году совместный комитет по образованию сообществ ACM и IEEE Computer Society выпустил очередной документ из серии "Computing Curricula", в котором были изложены рекомендации по преподаванию программной инженерии (software engineering) в высших учебных заведениях.
Интересной особенностью "Computing Curricula: Software Engineering" (далее – ССSE) является наличие рекомендаций по адаптации учебных программ к специфике различных стран. К сожалению, в CC:SE среди множества шаблонов составления учебных программ нет шаблона, учитывающего специфику российского образования.
Занимаясь переводом данного документа на русский язык, мы обратили свое внимание на этот факт и рискнули предложить свое видение этой проблемы. Разумеется, наше предложение ни в коей мере не является обязательным (собственно, как и все остальные шаблоны CC:SE). С другой стороны, нам хотелось проверить, возможно ли наложение требований CC:SE на российские образовательные стандарты, и если это возможно, то предложить вариант готового решения российским преподавателям.
В Санкт-Петербургском государственном университете информационные технологии традиционно преподаются на базе специальности 351500 "Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей". Мы участвовали в создании этой программы обучения, при СПбГУ работает УМО по 351500, которое лицензировало программы обучения более 30 университетов.
К сожалению, у этой программы обучения есть ряд "наследственных" недостатков, в частности, избыток математики на младших курсах. Особенно это сказывается на первых пяти семестрах, где на обучение основной специальности отводится всего 4-6 часов в неделю! По нашему мнению, 351500 плохо согласуется с CC:SE.
Кроме того, мы участвовали в экспертизе проекта стандарта ВШЭ по программной инженерии. Это вполне добротная программа обучения, составленная в соответствии с основными требованиями CC:SE. Однако, на наш взгляд, в проекте ВШЭ наблюдается прекос в другую сторону по сравнению с 351500 – слишком мало математики, зато очень много экономики, маркетинга, менеджмента. Скорее всего, программа ВШЭ будет хороша для экономических факультетов и вузов, а также для вузов, ориентирующихся на МВА с уклоном в информационные технологии. В CC:SE во многих местах подчеркивается важность математического образования, явным образом формулируется связь программной инженерии с различными разделами математики и информатики.
Мы считаем, что наилучшим кандидатом на роль базового стандарта образования в области информатики и программной инженерии является направление подготовки бакалавров и магистров 511900 "Информационные технологии" [Сухомлин]. Рассмотрим это направление подробнее.
Примерный учебный план подготовки бакалавров по направлению 511900 выглядит следующим образом (см. Таблицу 1 в Приложении).
Очевидно, что нагрузка 36 часов в неделю в 3 семестре и особенно 40 часов в неделю в 4 семестре слишком большая. В то же время предусмотрено по 4 часа в неделю физики. Физика – это очень хорошая наука, но весьма далекая от программирования, в 351500 мы много лет обходились без нее. В 3 семестре предусмотрено 4 часа в неделю на курс "Языки программирования". Мы считаем, что рассказывать студентам про конкретные языки в лекционном курсе не стоит, студенты вполне могут сами ознакомиться с любым языком программирования и закрепить эти знания на практикуме на ЭВМ, которому, к счастью, уделено достаточно часов. Наконец, вызвало недоумение включение в обязательную программу курса "Неклассические логики" (4 часа в неделю в 6 семестре). По нашему мнению, такой предмет может быть прочитан в каком-нибудь спецкурсе по выбору студента.
Следующим шагом стала попытка сопоставить предлагаемые в 511900 курсы с рекомендациями документа Computing Curricula: Computer Science (далее – CC:CS). Это оказалось легко сделать, так как авторы стандарта 511900 внимательно изучали СС2001.
Т.к. мы слегка расчистили первоначальную программу 511900, мы сочли возможным добавить наш традиционный и, к тому же, важный с точки зрения CC:SE курс CS103 – Алгоритмы и структуры данных (3 семестр, 2 часа в неделю), а также добавить в 6 семестр незаслуженно забытый курс CS240 – Трансляция языков программирования (см. Таблицу 2 в Приложении).
Существенно более трудной работой оказалось совмещение требований 511900 с CC:SE, что, собственно, и было нашей конечной целью.
CC:SE дает широкий набор вариантов выбора курсов и последовательности их изучения. Здесь мы представили (в основном, в качестве примера) наши предложения с некоторым обоснованием.
- В 6 главе CC:SE предлагается альтернатива – сначала информатика, затем программная инженерия или наоборот. Мы, конечно, выбрали первый вариант, все-таки программную инженерию должны осваивать люди, уже умеющие программировать. Таким образом, мы выбрали последовательность
CS101 -> CS102 -> CS103 и, параллельно с CS103, первый курс по программной инженерии SE201. В принципе, возможен и другой предложенный в CC:SE вариант, в котором тройка курсов CS101, CS102, CS103 сжимается в два курса CS111 и CS112, но на наш взгляд, такой подход вредит восприятию студентами этого базового материала.
- Можно сначала изучать императивное программирование, затем объектно-ориентированное, а можно наоборот. Мы склоняемся к первому варианту, как более традиционному, т.е. выбираем курсы CS101i и CS102i.
- В п. 6.3 CC:SE разработчикам учебной программы предлагается два пакета основных курсов по программной инженерии. Они не слишком различаются, но все-таки, мы выбрали первый пакет, так как, по нашему мнению, лучше иметь отдельный курс по требованиям к ПО, чем отдельный курс по формальным методам. На самом деле, основной материал и по требованиям, и по формальным методам содержится в обоих пакетах, дело только в расстановке акцентов и уровне подробности.
- В п. 6.5 CC:SE представлено множество шаблонов разбивки курсов по годам и семестрам. На наш взгляд, российским традициям лучше всего соответствует шаблон N2S-1 (учебный год в Северной Америке), причем его вариант N2S-1с для факультета информатики, а не N2S-1е для инженерных факультетов.
В результате получилось следующее предложение для российских университетов (см. Таблицу 3 в Приложении):
В точном соответствии с рекомендуемым шаблоном в 1 семестре добавился курс по групповой динамике. Умение работать в группе, знание основ психологии программирования необходимо студентам с самого начала обучения. Для курса NT291 по профессиональной деятельности в 511900 нашелся хороший аналог – курс по социальным и этическим вопросам (в 4 семестре).
В соответствии с выбранным шаблоном в 3 семестр добавляются курсы SE201 – начальный курс по программной инженерии и NT272 – по инженерной экономике. В 4 семестре добавляются SE211 – по проектированию нижнего уровня и SE212 – по человеко-машинному взаимодействию. Чтобы уменьшить нагрузку, в 4 семестре вполне можно пожертвовать факультативом (4 часа) или практикумом (4 часа). Мы предпочли аннулировать практикумы в 4-6 семестрах. К этому времени студенты уже должны уметь программировать – в российских реалиях большинство студентов к этому времени уже работают!
В 5 семестр вставили курс SE311 по проектированию распределенных систем, а в 6 семестр – еще 2 курса первого пакета:
- SE321 – QA и тестирование
- SE322 – Анализ требований
В 6 семестре для этих курсов удобно использовать единственный курс в 511900 по программной инженерии.
Последний курс первого пакета SE323 – Управление программными проектами, хотя его номер и начинается с 3 (это означает, что он должен читаться на 3 курсе), но у нас, как и в шаблоне N2S-1i, он поместился в 9 семестре.
Наконец, SE400 – дипломный проект завершает программу обучения, мы не стали указывать, сколько часов в неделю нужно ему отводить, подразумевая, что студент будет тратить на диплом все дни и ночи.
Приложение.
Примерный учебный план подготовки бакалавров по направлению 511900 "Информационные технологии" |
1 курс |
2 курс |
3 курс |
4 курс |
1 семестр |
2 семестр |
3 семестр |
4 семестр |
5 семестр |
6 семестр |
7 семестр |
8 семестр |
|
|
|
|
|
|
|
|
Цикл гуманитарных и социально-экономических дисциплин (1800 общ.ч / 770 ауд.ч) |
иностранный язык |
|
|
|
|
4 |
4 |
4 |
4 |
|
|
|
|
история |
|
философия |
|
курсы по выбору студента |
|
|
3 |
|
4 |
|
4 |
4 |
|
|
|
|
обязательные курсы по выбору |
Нац.региональные (вуз) курсы |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
|
|
|
|
|
|
|
|
Цикл математических и общих естественно-научных дисциплин (2532 общ.ч / 1676 ауд. ч) |
математический анализ |
дифф.уравнения |
теория графов |
модел. инф.процес. |
прикл.зад.теорвер. |
ДИПЛОМ |
6 |
6 |
6 |
4 |
4 |
2 |
4 |
|
|
|
|
|
|
|
|
|
алгебра и геометрия |
алгор.и анализ сл. |
матлогика и т. алгор |
т.авт. и фор.языки |
неклассичес. логики |
спец. курсы по выбору студента |
6 |
6 |
4 |
6 |
4 |
4 |
6 |
6 |
|
|
|
|
|
? |
|
|
дискретная математика |
языки программир. |
теорвер и матстат. |
нац-рег (вуз) с/к |
|
интеллект. системы |
|
4 |
4 |
4 |
4 |
6 |
|
4 |
|
|
|
? |
|
|
|
|
|
программирование |
физика |
базы данных |
прогр.инженирия |
нац-рег (вуз) с/к |
|
4 |
4 |
4 |
4 |
4 |
4 |
6 |
|
|
|
? |
? |
|
|
|
|
|
арх.выч.систем |
ОС |
компьютерные сети |
вычисл.математика |
оптимиз. и иссл. оп |
|
|
|
4 |
4 |
4 |
4 |
4 |
|
|
|
|
|
|
|
|
|
|
комп. графика |
специальные курсы |
|
|
|
2 |
4 |
4 |
4 |
4 |
|
|
|
|
|
|
|
|
|
|
|
социал.и этич вопр. |
факультативы |
|
|
|
2 |
4 |
4 |
2 |
2 |
практикум на ЭВМ |
|
|
4 |
4 |
4 |
4 |
2 |
2 |
|
|
|
|
|
факультатив |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
количество часов в неделю |
31 |
32 |
36 |
40 |
38 |
30 |
30 |
16 |
Таблица 1. Расчасовка программы 511900
Примерный учебный план подготовки бакалавров по направлению 511900 "Информационные технологии" |
1 курс |
2 курс |
3 курс |
4 курс |
1 семестр |
2 семестр |
3 семестр |
4 семестр |
5 семестр |
6 семестр |
7 семестр |
8 семестр |
|
|
|
|
|
|
|
|
Цикл гуманитарных и социально-экономических дисциплин (1800 общ.ч / 770 ауд.ч) |
иностранный язык |
|
|
|
|
4 |
4 |
4 |
4 |
|
|
|
|
история |
|
философия |
|
курсы по выбору студента |
|
|
3 |
|
4 |
|
4 |
4 |
|
|
|
|
обязательные курсы по выбору |
Нац.региональные (вуз) курсы |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
|
|
|
|
|
|
|
|
Цикл математических и общих естественно-научных дисциплин (2532 общ.ч / 1676 ауд. ч) |
математический анализ |
дифф.уравнения |
теория графов |
модел. инф.процес. |
прикл.зад.теорвер. |
ДИПЛОМ |
6 |
6 |
6 |
4 |
4 |
2 |
4 |
|
|
|
|
|
|
|
MA271 |
|
алгебра и геометрия |
алгор.и анализ сл. |
матлогика и т. алгор |
т.авт. и фор.языки |
трансл.языков прогр |
спец. курсы по выбору студента |
6 |
6 |
4 |
6 |
4 |
4 |
6 |
6 |
|
|
CS210 |
|
CS311 |
CS240 |
|
|
дискретная математика |
|
теорвер и матстат. |
нац-рег (вуз) с/к |
|
интеллект. системы |
|
4 |
4 |
|
4 |
6 |
|
4 |
|
CS105 |
CS106 |
|
|
|
|
CS260 |
|
программирование |
алгор.и стр.дан |
|
базы данных |
прогр.инженирия |
нац-рег (вуз) с/к |
|
4 |
4 |
2 |
|
4 |
4 |
6 |
|
CS101 |
CS102 |
CS103 |
|
CS270 |
|
|
|
|
арх.выч.систем |
ОС |
компьютерные сети |
вычисл.математика |
оптимиз. и иссл. оп |
|
|
|
4 |
4 |
4 |
4 |
4 |
|
|
|
CS220 |
CS225 |
CS230 |
|
|
|
|
комп. графика |
специальные курсы |
|
|
|
2 |
4 |
4 |
4 |
4 |
|
|
|
CS250 |
|
|
|
|
|
|
|
социал.и этич вопр. |
факультативы |
|
|
|
2 |
4 |
4 |
2 |
2 |
практикум на ЭВМ |
|
|
4 |
4 |
4 |
4 |
2 |
2 |
|
|
|
|
|
факультатив |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
количество часов в неделю |
31 |
32 |
30 |
36 |
38 |
30 |
30 |
16 |
Таблица 2. Привязка курсов 511900 к CC:CS
Примерный учебный план подготовки бакалавров по направлению 511900 "Информационные технологии" |
1 курс |
2 курс |
3 курс |
4 курс |
1 семестр |
2 семестр |
3 семестр |
4 семестр |
5 семестр |
6 семестр |
7 семестр |
8 семестр |
|
|
|
|
|
|
|
|
Цикл гуманитарных и социально-экономических дисциплин (1800 общ.ч / 770 ауд.ч) |
иностранный язык |
|
|
|
|
4 |
4 |
4 |
4 |
|
|
|
|
история |
|
философия |
|
курсы по выбору студента |
|
|
3 |
|
4 |
|
4 |
4 |
|
|
|
|
обязательные курсы по выбору |
Нац.региональные (вуз) курсы |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
|
|
|
|
|
|
|
|
Цикл математических и общих естественно-научных дисциплин (2532 общ.ч / 1676 ауд. ч) |
математический анализ |
дифф.уравнения |
теория графов |
модел. инф.процес. |
прикл.зад.теорвер. |
ДИПЛОМ |
6 |
6 |
6 |
4 |
4 |
2 |
4 |
|
|
|
|
|
|
|
MA271 |
SE400 |
алгебра и геометрия |
алгор.и анализ сл. |
матлогика и т. алгор |
т.авт. и фор.языки |
трансл.языков прогр |
|
|
6 |
6 |
4 |
6 |
4 |
4 |
|
|
|
|
CS210 |
|
CS311 |
CS240 |
|
|
дискретная математика |
|
теорвер и матстат. |
QA, тестирование |
проектирование ПО |
интеллект. системы |
|
4 |
4 |
|
4 |
2 |
4 |
4 |
|
CS105 |
CS106 |
|
|
SE321 |
SE311 |
CS260 |
|
программирование |
алгор.и стр.дан |
низкоур.проектир.ПО |
базы данных |
анализ требований |
управление проект. |
|
4 |
4 |
2 |
2 |
4 |
2 |
2 |
|
CS101 |
CS102 |
CS103 |
SE211 |
CS270 |
SE322 |
SE323 |
|
групповая динам. |
арх.выч.систем |
ОС |
чел-маш взаимод. |
вычисл.математика |
оптимиз. и иссл. оп |
|
|
2 |
4 |
4 |
2 |
4 |
4 |
|
|
NT181 |
CS220 |
CS225 |
SE212 |
|
|
|
|
|
|
введение в SE |
комп. графика |
специальные курсы |
|
|
4 |
2 |
4 |
4 |
4 |
4 |
|
|
SE201 |
CS250 |
|
|
инж.экономика |
социал.и этич вопр. |
факультативы |
|
|
2 |
2 |
4 |
4 |
2 |
2 |
|
|
NT272 |
NT291 |
|
|
|
|
практикум на ЭВМ |
компьютерные сети |
|
|
спец. курсы по выбору студента |
4 |
4 |
4 |
4 |
|
|
6 |
6 |
|
|
|
CS230 |
|
|
|
|
|
|
|
факультатив |
нац-рег (вуз) с/к |
|
нац-рег (вуз) с/к |
|
|
|
|
4 |
6 |
|
6 |
|
|
|
|
|
|
|
|
|
количество часов в неделю |
33 |
32 |
36 |
36 |
38 |
30 |
32 |
16 |
Таблица 3. Окончательная раскладка.
|