Коллеги, вот еще один анонс спецкурса, который осенью 2006 года будет читать сотрудник ИЯИ
Федор Васильевич Ткачев. Формально этот спецкурс не "наш", а кафедры теорфизики, но отчитываться им тоже можно, а по замыслу он предназначен для всех трех теоркафедр (да и математикам, имхо, было бы полезно).
Скажу больше, Ф.В. на нашу (вашу) группу здорово надеется. Считайте это еще одним курсом из "цикла по сложным системам" (название рабочее). Теоретики, конечно, тоже приглашаются, особенно те, кто читает этот форум
Полностью цитирую анонс из эл. письма Ткачева (и добавляю кое-что от себя под цитатой):
Цитата
Ф.В.Ткачев "Введение в современное программирование"Курс читается с 2001 г., но в этот раз будет годовым, что позволит разумнее распределить материал, особенно более сложные разделы, которые будут вынесены в весенный семестр. Первоначальная цель курса сохраняется:
- В метафизическом плане -- это, грубо говоря, посильная борьба с современным мракобесием (а вы думали, люди со Средневековья в чем-то существенно изменились?) в такой критически важной, но неустоявшейся области, как сфера ИТ. В том числе ликвидация пустоты, оставшейся в студенческих головах из-за бездарных вводных курсов.
- В конкретном плане -- студенты элитной теоретической кафедры должны понимать, что такое хорошо и что такое плохо в ИТ: компьютинг есть продолжение математики другими средствами, и четкое понимание основ ИТ, как показывает опыт, -- такой козырь с точки зрения международной конкурентоспособности, без которого наша хваленая математическая образованность заметно теряет в силе.
Курс выстрадан в четвертьвековом опыте разработки пионерских выч. методов, алгоритмов и программ для сложных научных приложений (как теоретические расчеты, так и обработка экспериментальных данных). Автор (являющийся выпускником кафедры 1979 г.) представляет Россию в программном комитете (т.е. рецензирует заявленные доклады) ведущей международной конференции по языкам программирования (
JMLC 2003, 2006) и сотрудничает с одной из ведущих мировых школ computer science (
N. Wirth & J.Gutknecht, ETH, Zuerich).
В курсе выделено ядро знаний по программированию, являющееся необходимым минимумом для того, чтобы уверенно ориентироваться в безумном современном мире ИТ и при необходимости перейти к работе на современных языках программирования.
Речь идет не только о программировании "в малом" (корректное построение циклов, приемы работы с динамическими структурами данных, рекурсия, основные конкретные алгоритмы), но и об основах программирования "в большом", т.е. проектирования: интерфейсы, модуляризация, инкапсуляция, объекты, важнейшие
паттерны (carrier/rider; factory; faсade; observer; MVC ...), компоненты.
Особый упор делается на методах эффективной работы с задачами синтетического характера (с высокими требованиями на вычислительную эффективность при высокой же динамике структур данных). Такие задачи очень плохо решаются в рамках традиционных парадигм. Специальное внимание уделено и проектированию интерактивной графики -- ключевому элементу эффективных программных систем.
Курс был и остается ядром образовательного проекта
Информатика-21, пропагандирующего единую платформу для современной системы вводных курсов программирования в среднем и высшем образовании. В число консультантов проекта входят специалисты стратегических отраслей РФ, и проект вызывает растущий интерес в российском образовательном сообществе.
Кстати, вот свежий отзыв слушателя первого издания курса, выпускника кафедры математики, ныне сотрудника легендарного
Института прикладной математики им. Келдыша:
http://www.inr.ac.ru/~info21/otzyv2006.htmю
Я тоже слушал первое издание этого курса (меня туда привел тогдашний студент нашей кафедры Дима Проскуренко, с которым мы переводили с английского
одну книжку по численным методам). До того я кусками, из чисто математического интереса, читал "
Искусство программирования" Кнута, "
Построение и анализ вычислительных алгоритмов" Ахо-Хопкрофта-Ульмана и выучил методологию "
предусловие-постусловие-инвариант цикла" по русскому переводу прекрасной книжки Гриса "
Наука программирования". Поэтому в этом курсе было немало уже известного, но в ретроспективе я вижу, что многим в своей программистской (и общенаучной) культуре обязан этому курсу.
Дело в том, что теория алгоритмов и архитектура языков программирования, на которых основан курс, по существу являются такими же абстрактно-естественными науками, как теорфизика или математика. Они описывают определенный кусок объективной действительности, в котором есть свои "законы природы", что особенно видно, например, в теории вычислительной сложности. Сходство усиливается тем, что, например,
классы вычислительной сложности определяются по их асимптотическому поведению при бесконечном возрастании числа "частиц" (объема входных данных) -- (почти) так же, как асимптотическое поведение систем многих частиц описывается понятиями фаз и фазовых переходов в статфизике. Не случайно, что в последние несколько лет статфизики (прежде всего
Джорджио Паризи и его окружение) стали писать работы о чисто алгоритмических задачах, не говоря уже о
потоке литературы по квантовым вычислениям.
Так что кроме очевидной пользы от повышения программистской квалификации (которую вы сразу почувствуете, когда захотите посчитать или смоделировать что-нибудь нетривиальное в своей научной работе), этот курс, имхо, интересен студентам теоретикам и по причинам "высшего порядка". Хотя прежде всего курс ориентирован на то, чтобы помочь людям практически.
Вся теория будет осенью, а весенний семестр будет посвящен разбору нескольких конкретных задач с решением, список которых жестко еще не определен, так что интересы активных слушателей можно будет учесть. Кроме того, это распределение материала удобно с точки зрения выполнения весной курсовых работ.