Рабочая программа по дисциплине «Технологии программирования» (наименование дисциплины)

Вид материалаРабочая программа

Содержание


34 (часов) Лабораторные занятия: 17
Пиявский С.А.
Цель и задачи изучения дисциплины
Итого за семестр
Итого на всю дисциплину
Самостоятельная работа студентов
Учебно-методические материалы по дисциплине
4.2. Дополнительная литература
Методические рекомендации преподавателю
Методические рекомендации студенту
Использование инновационных методов обучения
Подобный материал:
Министерство образования и науки РФ
Федеральное агентство по образованию РФ

Государственное образовательное учреждение
высшего профессионального образования
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО-СТРОИТЕЛЬНЫЙ
УНИВЕРСИТЕТ (СГАСУ) »
Факультет информационных систем и технологий

"УТВЕРЖДАЮ"
Декан факультета
__________________/Пиявский С.А./
«______» ______________ 2006 г.

РАБОЧАЯ ПРОГРАММА


по дисциплине «Технологии программирования»

(наименование дисциплины)

Индекс дисциплины по учебному плану «ОПД.Ф.12»

Направление 654700 – Информационные системы

(шифр и наименование направления)

Специальность 071900- Информационные системы и технологии

(шифр и наименование специальности)

Специализация – Интеллектуальные информационные системы

(наименование специализации)

Форма обучения - очная

Всего часов на дисциплину - 102

в том числе

Лекции 34 (часов)

Лабораторные занятия: 17 (часов)

Практические занятия: 17 (часов)

Курсовая работа: 17 (часов)

Самостоятельная работа: 34 (часов)

Форма итогового контроля - Экзамен

Курс обучения - 1

Семестр обучения - 2

Самара 2006 г.

Рабочая программа составлена на основании государственного образовательного
стандарта специальности по направлению 656400 «Информатика и вычислительная техника» и типовой рабочей программы

(наименование типовой программы с указанием индекса и даты утверждения, гос. образовательного

___________________________________________________________________________________________

стандарта специальности (направления), учебного плана с указанием года его утверждения)

Составитель: к. т. н., доцент каф. ПМ и ВТ Зеленко Л.С.

(Ф.И.О., ученое звание, степень, место работы, подпись)

Рабочая программа рассмотрена и одобрена на заседании кафедры прикладной математики и вычислительной техники

Протокол от « » 2006 г.

Зав. кафедрой ПМ и ВТ Пиявский С.А.

(Ф.И.О., подпись)

Рабочая программа рассмотрена и одобрена на заседании методической комиссии по специальности _______________________

Протокол от « » 2006 г.

Председатель методической комиссии / /

(подпись, Ф.И.О.)
  1. ЦЕЛЬ И ЗАДАЧИ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ

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

В результате изучения курса студенты должны знать:
  • стандартные и пользовательские типы данных и методы их обработки;
  • принципы структурного и модульного программирования;
  • принципы разработки сложных программных систем, в том числе правила разработки интерфейса;
  • принципы тестирования программных систем;
  • основные понятия объектно-ориентированного программирования.

Студенты должны уметь:
  • использовать методы абстрагирования и управления современных языков программирования для описания и решения конкретных прикладных задач;
  • строить формальную модель системы (подсистемы) по ее описанию в терминах предметной области;
  • разработать структуры информационных объектов, функционирующих в программной системе, и соответствующие им структуры данных (в том числе абстрактные);
  • разработать алгоритм и реализовать программу, выбрав наиболее подходящий метод и язык программирования;
  • разработать модульную структуру программной системы, обеспечивающие ее функциональную наполненность, и дружественный интерфейс пользователя;
  • выполнить тестирование и отладку программной системы с целью устранения синтаксических и семантических ошибок с целью повышения надежности программного обеспечения.
  1. СОДЕРЖАНИЕ ДИСЦИПЛины

Наименование дисциплин и разделов, используемых в данном разделе изучаемой дисциплины

Лекционные занятия

Лабораторные и практические
занятия

Дисциплины, использующие данный раздел

Семестр, наименование темы и раздела,
содержание раздела

Объем в час

Лабораторные занятия

Объем в час

Практические занятия

Объем в час

1

2

3

4



5



6




Семестр 2






















Лекция № 1. Введение. Основные понятия и определения курса. Основные этапы решения задач на ЭВМ. Постановка задачи – первый этап решения задачи.

2







Формализация задачи, разработка алгоритма функционирования программы

2







Лекция № 2. Различные модели жизненного цикла программных систем (ЖЦ ПС): сходства и отличия. Основные технологии и методологии разработки ПС. Спецификация программы.

4










Проектирование ИС

Информатика

Лекция № 3. Структурный подход к проектированию ПС. Основные принципы проектирования. Модульное программирование как основной способ повышения надежности ПС. Основные характеристики программного модуля. Внутренняя организация модуля.

3

Разработка фрагмента ПС с использованием структурного подхода. Разработка модулей ПС.

6


1

Способы записи алгоритма

2







Лекция № 4. Методы конструирования ПС (нисходящий, восходящий). Основные достоинства и недостатки. Принципы разработки интерфейса пользователя.

3

Разработка меню, отображающего функциональность ПС

2













Лекция № 5. Тестирование программного обеспечения (ПО). Основные определения. План тестирования. Принципы и методы тестирования ПС. Автономная и комплексная отладка ПС.

3

Тестирование и комплексная отладка ПС

2







Курсовое и дипломное проектирование




Лекция № 6. Показатели качества ПС. Основные парадигмы программирования. Базовые методы программирования (продукционное, логическое, функциональное, объектно-ориентированное).

3













Курсовое и дипломное проектирование

1

2

3

4



5



6




Лекция № 7. Основные принципы, обеспечивающие качество программирования. Эволюция развития языков программирования. Развитие концепций структуризации в языках программирования.

2



















Лекция № 8. Методы представления знаний: стандартные типы данных; структуры данных, определяемые пользователем; динамические структуры данных. Абстрагирование типов, инкапсуляция как способ сокрытия данных в модуле.

2







Решение задач на применение структур данных

10

Информационные технологии




Лекция № 9. Объектно-ориентированное программирование. Спецификация классов на основе абстрагирования, иерархия классов. Механизм наследования (виды наследования).

2

Разработка фрагмента ПС с использованием объектно-ориентированного подхода

5







Информационные технологии




Лекция № 10. Основные понятия ООП на примере интегрированной среды Delphi. Иерархия классов в среде Delphi. Создание и уничтожение объектов. Инкапсуляция, свойства. Области видимости. Наследование. Разновидности методов: статические, динамические, виртуальные.

4




Разработка классов

3







Лекция № 11. Полиморфизм. Перекрытие и перегрузка методов. Внутренняя организация объекта. Таблицы динамических и виртуальных методов.

4
















Лекция № 12. Документирование ПС, основные разделы сопроводительных документов, основные стандарты и руководящие материалы по документированию и стандартизации ПС.

2

Разработка документации

1












Итого за семестр


34




17




17






Итого на всю дисциплину


17




34












  1. САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТОВ

N раздела

Наименование раздела
дисциплины

Вид аудиторных занятий,
их объем
(в часах);
наименование индивидуальных занятий

Самостоятельная работа
студентов

Форма
контроля

Вид работы

Объем в часах

1

2

3

4

5

6




Семестр 2

1

Структурный подход к разработке ПС

Лабораторная работа №1 –
4 ч.

Разработка фрагмента ПС с использованием структурного подхода.

6

Отчет по лабораторной работе

Лабораторная работа №2 –
1 ч.

Разработка модулей ПС.

1

Отчет по лабораторной работе

Лабораторная работа №3 –
2 ч.

Разработка меню, отображающего функциональность ПС

2

Отчет по лабораторной работе

Лабораторная работа №4 –
2 ч.

Тестирование и комплексная отладка ПС

2

Отчет по лабораторной работе

Лекции N1-3–ч.

Изучение литературы по разделу

3

Отчет по разделу

2

Объектно-ориентированный подход к проектированию ПС

Лабораторная работа №1 –
2ч.

Изучение среды визуального объектно-ориентированного программирования (Delphi).

2

Отчет по лабораторной работе

Лабораторная работа №2 –
3ч.

Разработка фрагмента ПС с использованием среды Delphi

8

Отчет по лабораторной работе

Лекции N4-5–ч.

Изучение литературы по разделу

3

Отчет по разделу

3

Принципы тестирования ПС

Лабораторная работа №1 –
2ч.

Тестирование и комплексная отладка фрагмента ПС

3

Отчет по лабораторной работе

Разработка документации - 1ч.

Оформление отчета

2

Отчет по лабораторному практикуму

Лекция №9 – 1ч.

Изучение литературы по разделу

2

Отчет по разделу

Итого

Семестр 7

17 – лекции /

17 – лаб. работ




34






  1. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ

4.1. Основная литература
  1. Зеленко Л.С., Михеева Т.И. Алгоритмические языки и программирование (1 часть). Курс лекций для студентов заочного отделения. Самара: СГАУ, 1999. – 70 с.
  2. Зеленко Л.С., Михеева Т.И. Алгоритмические языки и программирование (2 часть). Курс лекций для студентов заочного отделения. Самара: СГАУ, 2002. – 122 с.
  3. Л.С. Зеленко Теоретические основы лабораторного практикума. 1 часть/ Учебное пособие / Самарский гос. аэрокосмический ун-т. Самара, 2005. – 57 с.
  4. Зеленко Л.С., Михеева Т.И. Методические указания к лабораторному практикуму на ЭВМ: Самара, СГАУ, 1998. – 40 с.
  5. Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль. Версия 5.5. М.: Издательство МАИ, А/О «Розвузнаука», 1992. – 456 с.
  6. Липаев В.В. Документирование и управление конфигурацией программных средств. Методы и стандарты. М.: Синтег, 1988. - 212 с.
  7. Кораблин М.А. Программирование, ориентированное на объекты: Учебное пособие. - Самара: Издат-во СГАУ, 1994. - 94 с.
  8. Дантеманн Д., Мишел Дж., Тейлор Д. Программирование в среде DELPHI. Киев: "ДиаСофт Лтд.", 2001.- 608 с.
  9. Д. Райли. Абстракция и структуры данных. Вводный курс: Пер. с англ. -М.: Мир, 1993. -750с.
  10. ГОСТ 19.701-90 (ИСО 5807-85). ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. – М.: Изд-во стандартов, 1991. - 26 с

4.2. Дополнительная литература
  1. Вирт Н. Алгоритмы + структуры данных = программы / М.: Мир, 1985. – 189 с.
  2. Г. Буч. Объектно-ориентированное проектирование с примерами применения: Пер. с англ. -М.: Конкорд, 1992. -519 с.
  3. Фаронов В.В. Delphi 6. Учебный курс. –М. Нолидж, 2004. – 425 с.
  4. Дарахвелидзе П.Г., Марков Е.П. Delphi 4. Среда визуального программирования. СПб.: БХВ-Санкт-Петербург, 1999. – 816 с.
  5. Пол И. Объектно-ориентированное программирование с использованием С++. Киев: "ДиаСофт Лтд.", 1995.- 480 с.
  1. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПРЕПОДАВАТЕЛЮ

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

Поэтому при изучении курса «Технология программирования» необходимо помнить о том, что программирование – это новый тип интеллектуального сплава науки и искусства. Технология программирования позволяет овладеть всеми техническими операциями, необходимыми для создания программной системы, включая анализ требований и все стадии разработки и реализации, уточнить и упорядочить действия разработчиков, регламентировать и систематизировать их описание и т.д.

При изложении курса необходимо постоянно напоминать студентам о важности самого первого этапа проектирования любой системы, а именно: постановка задачи должна быть математически точной, построенной на глубоком анализе предметной области, в ней должны быть отражены все информационные потоки, определены наиболее важные объекты и функции. От того, насколько полно и точно специфицирована программная система, во многом зависит то, какой объем работ потом придется выполнить разработчику при логическом и физическом проектировании системы.

Кроме того, в спецификации программной системы должны быть четко сформулированы требования к используемым техническим (необходимое оборудование: тип персонального компьютера, его конфигурация, дополнительные аппаратные средства, если они необходимы для функционирования системы) и программным средствам (используемые языки программирования, СУБД, операционные системы). От этого будут зависеть будущие показатели качества ПС, а именно: надежность, функциональность, эффективность, мобильность, сопровождаемость и т.п.

В настоящее время используются различные модели жизненного цикла (ЖЦ) ПС, но наиболее оправданной и, следовательно, применяемой на практике, является спиральная модель ЖЦ, которая предполагает, что проектирование ПС состоит из нескольких фаз, которые повторяются на различных витках спирали, при этом каждый виток – это отдельная версия ПС или полностью разработанный ее фрагмент. Для разработки небольших проектов наиболее подходящей является технология RAD (Rapid Application Development) – быстрая разработка приложений - , которая основана на спиральной модели ЖЦ ПС и поддерживается методологией структурного анализа и проектирования ПС и включает в себя элементы объектно-ориентированного анализа предметной области.

При разработке простых программ лучше использовать структурный подход к проектированию и реализации, который базируется на таких принципах, как: «разделяй и властвуй», абстрагирования, непротиворечивости, формализации и структурирования данных. Один из способов реализации данного подхода является принцип модульного программирования. Построение системы в виде набора взаимосвязанных модулей позволяет легко адаптировать систему к требованиям заказчика, позволяет повысить ее надежность, снизить трудозатраты при кодировании и отладке и тестировании. Необходимо обратить внимание студентов на основные характеристики качества программного модуля, которые позволят им правильно определить их структуру, а именно: модуль должен быть небольшим по размеру, информационно прочным, независимым, эффективным, не зависеть от предыстории своего функционирования. Информационная прочность модуля зависит от применяемых структур данных и алгоритмов их обработки, основное внимание студентов необходимо обратить на то, что все эти характеристики напрямую зависят от степени параметризации подпрограмм, в нем описанных.

Изучение теоретических основ должно подкрепляться выполнением практических заданий - разработкой реальных программных систем и решением задач. Решение задач позволит студентам освоить основы алгоритмизации и структуризации данных, а также применить на практике принципы процедурного и модульного программирования. На практических занятиях особое внимание необходимо уделять параметризации подпрограмм, основной принцип процедурного программирования – «отдельный алгоритм – отдельная подпрограмма».

В рамках лабораторного практикума студенты должны выполнить самостоятельные задания – разработать алгоритмы по обработке структур данных в соответствии с выданным заданием. Основное требование к лабораторной работе - хорошо проработанный интерфейсом, это позволит студентам закрепить знания, полученные в теории по принципам разработки интерфейса. Таким образом, во время выполнения лабораторных работ студент должен освоить технологические аспекты разработки программ: последовательность разработки модулей, провести автономное и комплексное тестирование программ. Необходимо, чтобы разрабатываемая программа была самодокументированной, т.е. в ней должно быть достаточное количество комментариев, которые дадут представление как о назначении самой программы (модуля), так и подпрограмм и данных, ими обрабатываемых.

После изучения структурных принципов разработки ПС и принципов процедурного программирования можно перейти к изложению более современных технологий программирования и методологий, их поддерживающих: к объектно-ориентированному программированию, основам объектного похода при проектировании систем, к событийному принципу управления. Здесь необходимо особое внимание уделить методологиям, основанным на моделировании данных, т.к. информационная часть системы является ее ядром. Языки программирования в процессе их эволюции приобрели новые черты, необходимо акцентировать внимание студентов на такие их свойства, как инкапсуляция, полиморфизм, наследование. Разработка классов и определение их связей – основа основ объектно-ориентированного программирования. Поэтому вторая часть лабораторного практикума должна быть посвящена разработке систем на базе объектного подхода. При этом должна быть соблюдена преемственность в разработке ПС, но только на более высоком уровне. Индивидуальные задания должны быть подобраны таким образом, чтобы студент смог легко перейти от отдельного описания структур данных и методов их обработки (подпрограмм) к объектам и классам, ориентированным на совместную их обработку.

Для повышения качества знаний можно проводить периодическое тестирование по окончании изучения разделов. Тестирование может проводиться студентами как самостоятельно, так и централизованно как форма промежуточного контроля знаний. В качестве одной из форм самостоятельной подготовки студентов к занятиям может быть предложена разработка «своих» тестов по изученным разделам, это позволит студентам продемонстрировать их способность по-другому изложить материал и выявит их творческий потенциал.

При изложении теоретического материала желательно пользоваться иллюстративными пособиями в виде слайдов или презентаций, чтобы повысить наглядность подачи материала и степень его запоминания.

Самостоятельная работа студента – часть его подготовки к промежуточной и итоговой аттестации, поэтому при подготовке к практическим занятиям необходимо задавать студентам задачи на дом. Большая часть технологических заданий при выполнении лабораторного практикума должна выполнять студентом самостоятельно в аудитории или дома, прием лабораторной работы проводится преподавателем в соответствии с планом-графиком приема. Готовой считается ПС, прошедшая отладку и тестирование, удовлетворяющая всем требованиям заказчика и функционирующая в соответствии с заданием.
  1. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ СТУДЕНТУ

Для повышения уровня знаний и качества подготовки студентам рекомендуется:
  1. при подготовке к практическим занятиям тщательно прорабатывать теоретический материал заданного раздела лекций, обращая особое внимание на терминологию, которая используется в дисциплине. Кроме курса лекций необходимо пользоваться литературой (список основной и дополнительной литературы приведен в 5 разделе). Следует обратить внимание, что многие определения взяты из государственного стандарта ГОСТ 34.003-90 "Автоматизированные системы. Термины и определения" и руководящих материалов РД 50-680-88 "Автоматизированные системы. Основные положения";
  2. при выполнении лабораторных работ учитывать, что основной объем выполняется самостоятельно на базе тех знаний, которые были получены на занятиях в компьютерном классе, поэтому желательно иметь домашний компьютер с установленным программным обеспечением;
  3. все лабораторные должны быть самодокументированы (в тексте должно быть достаточно комментариев для понимания как кода программы, так и алгоритмов и структур данных, ими обрабатываемых). Следует четко следовать правилам именования идентификаторов и структурировать текст при его наборе (четко соблюдать правило записи программы в виде «лесенки»);
  4. особое внимание уделить постановке задачи и разработке спецификаций ПС, т.к. от их точности напрямую зависит объем выполняемой работы (чем точнее постановка, тоем меньше объем исправлений). При формулировании постановки задачи постоянно консультироваться с преподавателем, утвердить у него окончательный вариант спецификаций;
  5. перед написанием кода четко проработать интерфейс программы, проработать все диалоги с пользователем (на уровне экранных форм), четко определить структуру меню и его иерархию, согласовать результаты работы с преподавателем. При разработке интерфейса особое внимание уделить расположению функциональных кнопок (назначению функциональных клавиш) и цветовой гамме;
  6. от правильности выбора структур данных и алгоритмов напрямую зависит эффективность программы, до кодирования программы необходимо разработать схемы алгоритмов и протестировать их работу на различных вариантах данных (тестах);
  7. при формировании модулей помнить, что они должны быть построены в соответствии с принципами, изложенными в лекциях, а именно: не быть громоздкими, должны быть либо функционально прочными, либо информационно прочными. Все подпрограммы модуля должны быть универсальными, т.е. все подпрограммы, ориентированные на решение конкретной задачи, должны быть описаны в основной программе. В модуль необходимо переносить тексты только отлаженных и протестированных подпрограмм;
  8. при выполнении тестирования и отладки пользоваться средствами отладки оболочек, в том числе отладочными печатями, встроенными отладчиками, в режиме расстановки точек прерывания, в том числе при тестировании моделей. Для тестирования своих программ привлекать студентов своей или других групп, помня о том, что разработчик не должен тестировать свою программу. Тестовых заданий должно быть не менее трех, они должны охватывать все «пути прохождения» программы;
  9. при решении задач широко используются встроенные средства языка и библиотечные модули, а также базовые алгоритмы, которые разбираются на лекциях. Они являются теми «кирпичиками», из которых строятся другие задачи. Поэтому необходимо четко знать основные операторы языка PASCAL, перечень подпрограмм модулей CRT, DOS и т.д., и применять метод прототипирования при решении домашних задач;
  10. самостоятельно (на основе решенных в аудитории задач) выполнять решение дополнительных задач, заданных преподавателем по изучаемому разделу;
  11. проводить самостоятельное тестирование по изученным разделам, готовить свои тестовые варианты контрольных вопросов и варианты ответов на них.
  1. ИСПОЛЬЗОВАНИЕ ИННОВАЦИОННЫХ МЕТОДОВ ОБУЧЕНИЯ

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

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

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

Составной частью образовательных технологий дистанционного обучения является индивидуальное тестирование по заданным дисциплинам учебного плана, которое позволяет выявить пробелы в знаниях и обратить внимание обучаемого на наиболее сложные разделы или темы. На кафедре прикладной математики и вычислительной техники разработана автоматизированная система тестирования знаний студентов, которая построена по модульному принципу и позволяет преподавателю легко проводить наполнение базы вопросов без знания специфических языков программирования. В ее состав введен модуль с тестовыми вопросами по дисциплине «Технология программирования». С помощью данной системы можно проводить независимое тестирование студентов как непосредственно на занятиях (используя локальную сеть с выходом на FTP-сервер СГАСУ), так и через Internet. Каждый студент, имея уникальный идентификатор, может сформировать «свой» список тестовых вопросов по выбранным разделам и после их решения отправить протокол прохождения теста для учета статистики.