Курсовые - как это делается в Астраханском универе
От: LaptevVV Россия  
Дата: 09.07.14 12:19
Оценка: 164 (18) +3 :)))
Напишу-ка я про наши курсовые — чтобы народ понял, что мы "не лаптем щи хлебаем"...

Курсовые у нас по учебному плану выполняются со 2 семестра 1 курса и до самого конца, до бакалаврской выпускной работы.
Первая курсовая пишется на С++ в консольном варианте.
Примерные типовые темы следующие:

Учебно-демонстрационная программа модуля для работы с односвязными списками.
Учебно-демонстрационная программа модуля для работы с двусвязными списками.
Учебно-демонстрационная программа модуля для работы различными видами рекурсий.
Учебно-демонстрационная программа модуля для работы с очередью (массив).
Учебно-демонстрационная программа модуля для работы с очередью (список).
Учебно-демонстрационная программа модуля для работы со стеком.
Учебно-демонстрационная программа модуля для работы с деками
Учебно-демонстрационная программа модуля для работы с односвязными циклическими списками.
Учебно-демонстрационная программа модуля для работы с двусвязными циклическими списками.
Учебно-демонстрационная программа работы с комплексными числами.
Учебно-демонстрационная программа работы с рациональными числами.
Учебно-демонстрационная программа методов сортировок: метод бинарных вставок, шейкер-сортировка.
Учебно-демонстрационная программа методов сортировок: сортировка Шелла, быстрая сортировка.
Учебно-демонстрационная программа эффективных методов сортировок: пирамидальная сортировка.
Учебно-демонстрационная программа эффективных методов сортировок: подсчетом, поразрядная.
Учебно-демонстрационная программа методов сортировки слиянием: сортировка слиянием.
Учебно-демонстрационная программа эффективных методов сортировки: Tim Sort
Учебно-демонстрационная программа: решение системы линейных уравнений методом Гаусса
Учебно-демонстрационная программа: вычисление определителя разложением по строке (столбцу)
Учебно-демонстрационная программа: умножение матриц методом Штрассена и методом Винограда

Возможны индивидуальные темы — по соглашению с преподавателем.

Результатом работы над курсовой должно быть следующее:
1. Работающая программа
2. Пояснительная записка, оформленная в соответствии с гостами ЕСПД и гостом на научный отчет
3. Презентация, по которой осуществляется доклад на защите.

Сама защита происходит публично, с докладом по выполненной работе и показом (с помощью проектора) а) презентации, б) работающей программы.
В присутствии не менее 2 преподавателей и немеряно студентов. Каждый из которых может задать любой вопрос. Как по докладу, так и по программе.

В начале семестра студентам выдается график работ. Примерно такой:

1. Написание ТЗ+список литературы по теме — примерно 2 недели.
2. Обследование предметной области и написание технического проекта — примерно 4-6 недель
3. Разработка программы и написание рабочего проекта — примерно 6 недель
Включает:
— общие сведения
— инсталляция и выполнение программы
— описание программы (по подсистемам, модулям, функциям и т.п.)
— разработанные меню и интерфейсы (все скриншоты)
4. Тестирование и написание программы и методики испытаний — примерно 2 недели
5. Окончательное оформление пояснительной записки — примерно 2 недели

Теперь по существу разработки.
Учебно-демонстрационная программа с нашей точки зрения состоит из 3 подсистем:
— подсистема просмотра теоретического материала
— подсистема демонстрации по теме разработки
— подсистема проверки знаний по теме разработки — тестирование
Естественно, теоретический материал должен быть представлен во внешних файлах, так же, как и набор тестовых вопросов.
Наиболее творческая часть — демонстрация.
Например, в курсовой для работы со списками нужно демонстрировать работу всех операций:
— вставка в начало
— вставка в конец
— поиск элемента
— удаление спереди
— удаление сзади
— удаление заданного элемента.
Программа должна по шагам показывать присваивание указателей.

На в курсе у нас уже добавляются такие темы (2 штуки — по 1 в каждом семестре):
1. Учебно – демонстрационная программа для работы со слоеным списком.
2. Учебно – демонстрационная программа для работы с АВЛ – деревьями.
3. Учебно – демонстрационная программа для работы с красно-черными деревьями.
4. Учебно – демонстрационная программа для работы со скошенными деревьями.
5. Учебно – демонстрационная программа по алгоритмам поразрядного поиска
6. Учебно – демонстрационная программа для работы с В – деревьями.
7. Учебно – демонстрационная программа для работы с хеш-таблицами
8. Учебно – демонстрационная программа по алгоритмам обхода графа и поиска компонент связности
9. Учебно – демонстрационная программа по алгоритмам поиска кратчайшего пути на графе
10. Учебно – демонстрационная программа по алгоритмам поиска минимального остовного дерева
11. Учебно – демонстрационная программа по алгоритмам поиска подстрок
12. Учебно – демонстрационная программа по алгоритмам обхода графа и поиска компонент связности
13. Учебно – демонстрационная программа по жадным алгоритмам
14. Учебно – демонстрационная программа по динамическому программированию
15. Учебно – демонстрационная программа по переборным алгоритмам и методам сокращения перебора
16. Учебно – демонстрационная программа по алгоритмам кластеризации
17. Учебно – демонстрационная программа по алгоритмам минимизации конечного автомата
18. Учебно – демонстрационная программа по Марковским алгоритмам
19. Учебно – демонстрационная программа по муравьиному алгоритму поиска
20. Учебно– демонстрационная программа по алгоритму отжига
21. Учебно – демонстрационная программа по нечёткому выводу
22. Учебно – демонстрационная программа по алгоритму LL-разбора
23. Учебно – демонстрационная программа по алгоритму LR-разбора
24. Учебно – демонстрационная программа по алгоритмам сборки мусора
25. Учебно – демонстрационная программа по алгоритмам управления динамической памятью
26. Учебно – демонстрационная программа по алгоритмам сборки мусора
27. Учебно – демонстрационная программа по конечным автоматам
28. Учебно – демонстрационная программа вычисления интегралов методом Монте-Карло
29. Учебно – демонстрационная программа LUP-разложения матриц

Объявляем и индивидуальные темы — с расчетом на продолжение до выпускной бакалаврской работы:
1. Тренажер по UML с оценкой результатов работы (с генерацией кода)
2. Тренажер по Дракону с оценкой результатов работы (с генерацией кода)
3. Тренажёр по блок-схемам с оценкой результатов (с генерацией кода)
4. Тренажёр по конечным автоматам (с генерацией кода)
5. Тренажер по модульному тестированию (xUnit) с оценкой результатов работы (по языкам)
6. Тренажёр по программированию на ассемблере для виртуальной машины с оценкой результатов
7. Тренажер по программированию на ассемблере GAS с оценкой результатов
8. Тренажер по методу разработки сверху-вниз с пошаговым уточнением
9. Тренажер по выражениям с оценкой результатов тестирования (с генерацией выражений)
10. Тренажёры по синтаксическим конструкциям ЯП (по языкам, по темам, с генерацией заданий и оценкой)
11. Тренажёры по функциям (по языкам, с генерацией заданий и оценкой)
12. Тренажёры по классам (по языкам, с генерацией заданий и оценкой)
13. Инструментальная система подготовки модели предметной области с оценкой сложности
14. Инструментальная среда – генератор упражнений по UML
15. Инструментальная среда – генератор упражнений по Дракону
16. Инструментальная среда – генератор упражнений по языку программирования
17. Система автоматизации тестирования
В этих темах уже исследовательская работа по оцениванию деятельности студента начинается.

Требования к реализации усложняются.
Необходимо реализовать уже оконную программу.
Не индивидуальные темы должны быть реализованы на С++ с использованием какой-нибудь оконной библиотеки.
На выбор предлагается QtSDK, vxWidget, MFC/ATL/WTL, FLTK (описана в книге Страуструпа для студентов)
Соответственно и среды — на выбор.
Большинство предпочитают QtSDK — дофига литературы.

Принцип тот же: должно быть реализовано 3 подсистемы, только теперь уже в оконном виде.
Таким образом за 2 курс в течение года большинство народа вполен себе осваивает начальный уровень Qt, от которого можно отталкиваться дальше в профессиональном программировании.

Индивидуальные темы мы последнее время даем на C# в технологиях либо WPF, либо ASP.NET — зависит от задач...
Как правило, последнее время это задачи, которые необходимо состыковать с нашей обучающей системой Semantic IDE.

Хотя для отдельных студентов позволительно писать на любом языке, например, на Питоне.

На 3 курсе у нас ранее было две курсовые по базам данных, причем вторая — по MS SQL Server. Она и сейчас такая же.
А вот первая изменилась, и мне придется еще составить перечень тем.
Поскольку я веду в первом семестре 3 курса Системное ПО, то это будут темы либо по компиляторам, либо по операционным системам.

Но по Системному ПО у меня лабы — серьезные.
Первая лаба — написать интерпретатор виртуальной машины в объектно-ориентированном стиле.
Пример виртуальной машины:

Двухадресная, с Регистрами Общего Назначения, один операнд в регистре
PSW = IP + Flags, 16+16 = 32 бит.
Память – байтовая, объединяются в 2 и 4 байта. Размер адреса – 16 бит.
Данные:
Целые знаковые, беззнаковые – 2 байта
Дробные – 4 байта

РОН – 8 штук, 16 бит; содержимое – целое со знаком, целое без знака (адрес)
Они же – 4 регистра с плавающей точкой по 32 бита, номера – четные.

Структура команд: 2 байта, 4 байта; результат по первому
16 бит: КОП – 7 бит, s – 1 бит, r1 – 4 бита, r2 – 4 бита
32 бита: КОП – 7 бит, s – 1 бит, r1 – 4 бита, r2 – 4 бита, оff – 16 бит
s – размер операнда
s = 0 – 2 байта
s = 1 – 4 байта
Адрес = регистр + смещение (если регистр используется)
Адрес = смещение (если регистр не используется)
Смещение = адрес = константа
Особые случаи: s=1, номер регистра – нечетный
Это формат пересылок, арифметики целой, арифметики дробной;
Пересылка:
Регистр-регистр, Регистр-память, Память-регистр
арифметика дробная, арифметика целая – то же самое
Переходы:
Безусловный (использование битов s), r1 – не используется
– s = 0: прямой, IP = адрес
– s = 1: относительный, IP = IP + адрес
Условный — то же самое, только проверяются флаги
Вызов подпрограммы: адрес возврата запоминается в регистре – первый операнд
Воврат – безусловный прямой переход
Если регистр в команде не используется, то на месте номера регистра стоит 1xxx;
Можно использовать для дополнительных кодов операций!

Требования к реализации:
1. Объектно-ориентированный подход.
2. Модульный подход.
2.1. Процессор – отдельный класс, разделение на интерфейс и реализацию;
2.2. Выполнение команд – вызов функтора (не использовать оператор-переключатель!)
2.3. Память – динамический массив – поле-указатель в классе
2.4. Команды – иерархия классов-функторов;
2.5. Базовый класс – абстрактный класс Command с перегруженной операцией operator()

Далее варианты меняются.
1. народ тестирует не свой вариант, отлавливает ошибки и исправляет их.
2. народ пишет простейший транслятор с ассемблера.
Далее варианты меняются.
1. народ тестирует не свой вариант, отлавливает ошибки и исправляет их.
2. народ пишет консольный отладчик.

Далее там у меня написание профайлера.
И собираюсь дать доработку. Например, доработать консольный отладчик до оконного.

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

Если есть вопросы — задавайте.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.