090301_s3.dv2_.2_java_programmirovanie

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Саратовский государственный университет имени Н.Г. Чернышевского
Факультет компьютерных наук и информационных технологий
УТВЕРЖДАЮ
___________________________
"__" __________________20__ г.
Рабочая программа дисциплины
Java - программирование
Специальность
090301 Компьютерная безопасность
Специализация
Математические методы защиты информации
Квалификация (степень) выпускника
Специалист
Форма обучения
очная
Саратов,
2012 год
1. Цели освоения дисциплины
Целями освоения дисциплины «Java-программирование» являются:
 Освоение и систематизация знаний, относящихся к программированию
на языке Java;
 Изучение технологии Java;
 Изучение
особенностей
объектно-ориентированного
программирования в Java;
 Развитие способностей применения полученных знаний и умений в
профессиональной деятельности;
 знание структуры и приемов работы с инструментальными средствами,
поддерживающими создание программного обеспечения на языке Java
(Eclipse/NetBeans/IntelliJIdea) для решения профессиональных задач.
2.Место дисциплины в структуре ООП специалитета
Дисциплина С3.ДВ2.2 Java-программирование входит в раздел
«Профессиональный цикл. Дисциплины по выбору» ФГОС-3.
Курс базируется на следующих дисциплинах математического и
естественнонаучного цикла: «Информатика»; на следующих дисциплинах
профессионального
цикла:
«Языки
программирования»,
«Методы
программирования», «Компьютерные сети». Для успешного освоения
данного курса обучающийся должен
знать:
 основные этапы компьютерного решения функциональных и
вычислительных задач;
 базовые структуры и алгоритмы компьютерной обработки данных;
 основные принципы объектно-ориентированного программирования.
уметь:
 разрабатывать алгоритмы решения практических задач;
 создавать эффективные и надежные компьютерные программы по
готовым алгоритмам;
 проверять и отлаживать код программ.
3 Компетенции обучающегося, формируемые в результате
освоения дисциплины «Java - программирование»
Выпускник должен обладать следующими общекультурными компетенциями
 способностью осуществлять свою деятельность в различных сферах
общественной жизни с учетом принятых в обществе моральнонравственных
и
правовых
норма,
соблюдать
принципы
профессиональной этики (ОК-2);
 способностью понимать социальную значимость своей будущей
профессии, цели и смысл государственной службы, обладать высокой
мотивацией к выполнению профессиональной деятельности в области
обеспечения информационной безопасности и защиты интересов
личности, общества и государства, готовностью и способностью к
активной состязательной деятельности в условиях информационного
противоборства (ОК-5);
 способностью к работе в коллективе, кооперации с коллегами,
способностью в качестве руководителя подразделения, лидера группы
сотрудников
форматировать
цели
команды,
принимать
организационно-управленческие решения в ситуациях риска и нести за
них ответственность, предупреждать и конструктивно разрешать
конфликтные ситуации в процессе профессиональной деятельности
(ОК-6);
 способностью логически верно, аргументировано и ясно строить
устную и письменную речь на русском языке, готовить и
редактировать тексты профессионального назначения, публично
представлять собственные и известные научные результаты, вести
дискуссии (ОК-7);
 способностью к письменной и устной деловой коммуникации, к
чтению и переводу текстов по профессиональной тематике на одном из
иностранных языков (ОК-8);
 способностью к логически-правильному мышлению, обобщению,
анализу, критическому осмыслению информации, систематизации,
прогнозированию, постановке исследовательских задач и выбору путей
их решения на основании принципов научного познания (ОК-9);
 способностью самостоятельно применять методы и средства познания,
обучения и самоконтроля для приобретения новых знаний и умений, в
том числе в новых областях, непосредственно не связанных со сферой
деятельности, развития социальных и профессиональных компетенций,
изменения вида своей профессиональной деятельности (ОК-10).
Выпускник
должен
обладать
следующими
профессиональными
компетенциями (ПК):
Общепрофессиональными:
 способностью выявлять естественнонаучную сущность проблем,
возникающих в ходе профессиональной деятельности, и применять
соответствующий
физико-математический
аппарат
для
их
формализации, анализа и выработки решения (ПК-1);
 способностью применять математический аппарат, в том числе с
использованием
вычислительной
техники,
для
решения
профессиональных задач (ПК-2);
 способностью
учитывать
современные
тенденции
развития
информатики и вычислительной техники, компьютерных технологий в
своей профессиональной деятельности (ПК-7);
 способностью работать с программными средствами прикладного,
системного и специального назначения (ПК-8);
 способностью использовать языки и системы программирования,
инструментальные
средства
для
решения
различных
профессиональных, исследовательских и прикладных задач (ПК-9);
 способностью к самостоятельному построению алгоритма, проведению
его анализа и реализации в современных программных комплексах
(ПК-12);
в научно-исследовательской деятельности:
 способностью применять современные методы и средства
исследований для обеспечения информационной безопасности
компьютерных систем (ПК-15);
 способностью готовить научно-технические отчеты, обзоры,
публикации по результатам выполненных работ (ПК -17);
в проектной деятельности:
 способностью участвовать в разработке проектной документации (ПК22);
в контрольно-аналитической деятельности:
 способностью обосновывать правильность выбранной модели решения
профессиональной задачи, сопоставлять экспериментальные данные и
теоретические решения (ПК-28);
в организационно-управленческой деятельности:
 способностью
организовывать
работу
малых
коллективов
исполнителей, находить и принимать управленческие решения в сфере
профессиональной деятельности (ПК-30);
в эксплуатационной деятельности:
 способностью принимать участие в эксплуатации программного
обеспечения и программно-аппаратных средств обеспечения
информационной безопасности компьютерных систем (ПК - 35);
В результате освоения дисциплины обучающийся должен:
Знать:
 основные принципы технологии Java;
 назначение JVM(виртуальной машины Java);
 этапы компиляции и режим запуска программы на языке Java;
 основные понятия объектно-ориентированного программирования
(класс, объект, инкапсуляция, полиморфизм, наследование) и
механизмы их реализации на языке Java;
 основные компоненты стандартных пакетов Java;
 различные паттерны проектирования программного обеспечения,
реализованные в стандартных библиотеках Java;
 приемы контроля входных данных приложения.
Уметь:
 реализовывать базовые алгоритмы на языке Java;
 использовать
интегрированную
среду
разработки
NetBeans/Eclipse/IntelliJIdea для решения профессиональных задач;
 решать типовые задачи на языке Java;
 находить семантические ошибки алгоритма;
 находить и исправлять синтаксические ошибки кода;
 обрабатывать ошибки времени выполнения программы;
 использовать компоненты стандартных библиотек Java для решения
профессиональных задач;
 создавать иерархию классов приложения;
 создавать диаграммы UML;
 документировать Java-программу;
 использовать различные паттерны проектирования программного
обеспечения;
 извлекать полезную научно-техническую информацию из электронных
библиотек, реферативных журналов, сети Интернет.
Владеть:
 навыками программирования на языке Java для решения
профессиональных задач;
 навыками работы в интегрированных средах разработки программного
обеспечения NetBeans/Eclipse/IntelliJIdea.
4. Структура и содержание дисциплины «Java-программирование»
Общая трудоемкость дисциплины составляет 3 зачетные единицы 108 часов.
№
п/п
Раздел дисциплины
Се Нед Виды учебной
ме еля работы, включая
ст семе самостоятельную
р стра работу студентов
и трудоемкость (в
часах)
Лек лаб Сам
Формы текущего
контроля
успеваемости (по
неделям семестра)
Формы
промежуточной
аттестации (по
семестрам)
Тест по материалам
лекции.
Опрос.
1.
Введение в платформу
Java
10
1
2
2
2
2.
Утилиты командной
строки для работы с
Java. Структура
программы на Java.
Основы синтаксиса
Java.
10
2
2
2
2
Выполнение
лабораторной работы
3.
Простейшие типы
данных и основные
управляющие
конструкции языка.
10
3
2
2
2
Решение
задач
на
http://acm.sgu.ru/lang/ind
ex.php
4.
Строки, массивы и
библиотека
стандартных
коллекций в Java.
10
4
2
2
4
Решение
задач
на
http://acm.sgu.ru/lang/ind
ex.php
5.
Объектноориентированное
программирование в
Java
10
5
2
2
6
Решение задач.
Опрос.
6.
Методы класса Object.
Принципы
переопределения
equals(), hashCode(),
clone(), toString() и
finalize(). Интерфейс
Comparable.
10
6
2
2
2
Решение задач. Опрос.
7.
Пакет java.io. Ввод и
вывод в Java.
Взаимодействие с
файловой системой.
Сериализация.
10
7
2
2
4
Решение
задач
на
http://acm.sgu.ru/lang/ind
ex.php
8.
Многопоточность в
Java
10
8-9
4
4
6
Тест по материалам
лекции
Решение задач.
Опрос.
9.
Обработка
исключений
10
10
2
0
2
Тест по
лекции.
Опрос.
материалам
10.
Интроспекция
10
11
2
2
2
Тест по
лекции.
Опрос.
материалам
11.
XML в Java
10
12
2
4
4
Решение задач.
Опрос.
12.
Сетевое
программирование в
Java
Итого
10
1316
6
6
12
Решение задач.
Опрос
30
30
48
13.
Введение в платформу Java
История создания Java. Выполнение программ на Java. Отличие
платформы Java от традиционных компилируемых языков
программирования. Понятие виртуальной Java машины. Назначение JRE,
JDK.
Утилиты командной строки для работы с Java. Структура
программы на Java. Основы синтаксиса Java.
Утилита javac и ее основные опции. Понимание CLASSPATH. Утилита
java и ее основные опции. Пакеты как способ решения проблемы naming
collision. Синтаксис простейших классов. Точка запуска: public static void
main. Декомпиляция Java. Утилита jad.
Простейшие типы данных и основные управляющие конструкции
языка.
Понимание примитивных типов и объектов. Принципы именования
классов, методов и переменных. Восемь примитивных типов. Приведение
типов. Преобразование типов в выражениях. Арифметические и
целочисленные битовые операции. Вещественные типы данных. Ключевое
слово strictfp. Scanner - класс для чтения данных. Задачи на ветвления и
циклы.
Строки, массивы и библиотека стандартных коллекций в Java.
Строки в Java. Понимание неизменямости строки. Основные методы
строк. Понятие и описание массива. Многомерные массивы. Методы
массивов, класс Arrays. Списки в Java: List, ArrayList, LinkedList. Понимание
итераторов. Интерфейсы Iterator и Iterable. Структуры данных множество и
словарь (карта). Интерфейсы и классы Set, OrderedSet, TreeSet, HashSet.
Интерфейсы и классы Map, TreeMap, HashMap. Оператор foreach.
ООП в Java
Парадигмы программирования. Принципы объектно-ориентированного
программирования. Достоинства и недостатки ООП. Синтаксис описания
класса и подкласса. Объявление объекта. Операция new. Синтаксис описания
метода. Передача параметров, перегрузка и переопределение методов.
Конструкторы класса. Параметризованные конструкторы. Перегрузка
конструкторов. Конструктор по умолчанию. Вложенные и внутренние
классы. Абстрактные методы и классы. Класс Object. Динамическая
диспетчеризация методов. Использование ключевого слова super.
Статические методы. Метод main. Интерфейсы как способ отказа от
множественного наследования.
Методы класса Object.
Методы, общие для всех объектов. Общие соглашения для equals().
Рецепты для hashCode(). Клонирование объектов, глубокое копирование.
Почему следует остерегаться метода finalize(). Реализация интерфейса
Comparable.
Пакет java.io. Ввод и вывод в Java. Взаимодействие с файловой
системой. Сериализация.
Байты и символы в Java. Понимание различий InputStream и Reader.
Понимание различий OutputStream и Writer. Обзор различных реализаций
этих интерфейсов. Буфферизация ввода-вывода. Необходимость закрытия
объектов ввода-вывода. Класс java.io.File, примеры использования.
Реккурсивный обход директорий. Сериализация в Java. Маркерный
интерфейс java.io.Serializable. Поле serialVersionUID. Защита в методе
readObject.
Многопоточность в Java
Потоки, понимание потоков. Главный поток. Многопоточные
приложения. Примеры. Проблема синхронизации. Класс Thread и его
использование. Интерфейс Runnable. Синхронизация в Java. Ключевое слово
synchronized. Методы класса Object wait(), notify(), notifyAll(). Concurrency
Utilities. Примитивы синхронизации. Ключевое слово volatile. Compare-andswap, lock-free структуры данных.
Обработка исключений
Общее понятие исключительной ситуации. Основные принципы
обработки исключений. Проверяемые и непроверяемые исключения: разница
и принципы применения. Встроенные исключения Java. Иерархия
исключений. Создание собственных подклассов исключений. Использование
исключений. Stacktrace исключения. Блоки с гарантированным завершением.
Интроспекция
Класс Class. Загрузка классов. Загрузчики классов. Основные классы,
отражающие языковые элементы: Class, Field, Method, Type. Методы для
получения экземпляров этих классов. Различие между методами
getDeclaredXXX() и getXXX(). Динамические прокси. Примеры
использования. Интерфейс InvocationHandler. Разработка собственных
динамический прокси. Объявление аннотаций. Аннотируемые элементы.
Класс Annotation. Специальные аннотации: Target, Retention. Получение
информации об аннотациях через механизм отражений.
XML в Java
История создания XML. Обзор XML-парсеров. Отличительные черты
SAX и DOM-парсеров. JAXP. Использование реализаций SAX и DOMпарсеров в Java. Язык DTD. XML Schemа. Язык XPath.
Сетевое программирование в Java
Основные принципы работы сети. Протоколы TCP и UDP: общие
свойства и различия. Классы InetAddress, URL. Сокеты. Классы сокетов в
Java. Примеры использования TCP-сокетов. Дейтаграммы. Примеры отсылки
и приема дейтаграмм в Java. Широковещательная и групповая рассылка.
5. Образовательные технологии
В рамках лекционных занятий предполагается разбор различных задач
и ситуаций, обсуждение в малых группах, обсуждение с привлечением всей
аудитории. Предполагается участие в видеоконференциях, проводимых
фирмами-разработчиками программного обеспечения и экспертами в области
программирования.
Для поддержки обучения студентов по данному курсу используется
технология смешанного обучения.
Самостоятельная работа студентов организована с использованием
системы управления обучением LMS Moodle, которая установлена на сервере
http://course.sgu.ru/.
Система
LMS
Moodle
является
свободно
распространяемым программным обеспечением с открытым исходным
кодом. Техническая поддержка системы в Саратовском государственном
университете имени Н.Г. Чернышевского осуществляется подразделением
университета Поволжским региональным центром новых информационных
технологий. Курс доступен для студентов специальности 090301
«Компьютерная
безопасность»
по
адресу
http://course.sgu.ru/course/view.php?id=417 .
LMS Moodle позволяет организовывать общение студентов и
преподавателя через форумы, чаты и обмен короткими сообщениями.
Результаты работы студентов могут присылаться в виде файлов любого
формата: исходный код приложений, библиотеки, снимки экрана компьютера
и так далее. Дополнительный материал для самостоятельного изучения
доступен студентам в виде аннотированного списка интернет-источников.
В рамках курса предусмотрены встречи с представителями компаний,
специализирующихся на разработке программного обеспечения (в рамках
договора сотрудничества с факультетом КНиИТ).
Самостоятельная работа студентов организована с использованием
системы автоматической проверки программ (Контестер), доступ к которой
осуществляется по адресу http://acm.sgu.ru/lang/index.php.
6. Учебно-методическое обеспечение самостоятельной работы
студентов. Оценочные средства для текущего контроля успеваемости,
промежуточной аттестации по итогам освоения дисциплины.
7. Учебно-методическое и информационное обеспечение дисциплины
«Java-программирование»
а) основная литература:
1. Шилдт, Герберт. Полный справочник по Java. Java SE 6 Edition. – М. ;
СПб. ; Киев : Изд. дом "Вильямс", 2007
б) дополнительная литература:
1. И. Грэхем. Объектно-ориентированные методы: Принципы и практика.
- М. ; СПб. ; Киев : Изд. дом "Вильямс", 2004
2. Леоненков А.В. Объектно-ориентированный анализ и проектирование
с использованием UML и IBM Rational Rose - М. : Интернет-Ун-т
Информ. Технологий : БИНОМ. Лаб. знаний, 2006
3. Леоненков А.В. Самоучитель UML - СПб. : БХВ-Петербург, 2004.
__________________________________________________________________
в) программное обеспечение и Интернет-ресурсы
1. Операционная система Windows/Linux;
2. Пакет Microsoft Office: Word, Power Point или пакет Open Office: Writer,
Empress;
3. Браузеры Microsoft Internet Explorer/Mozilla Firefox;
4. Adobe Reader для просмотра электронных документов в формате .PDF;
5. Проигрыватель мультимедийного содержимого Flash Player;
6. Среда исполнения Java Runtime Envitonment http://java.com/ru/ ;
7. Примеры использования технологии Java http://java.com/en/java_in_action/
8. Бесплатная интегрированная среда разработки с открытым исходным
кодом NetBeans http://netbeans.org/downloads/index.html
9. Среда разработки Intelij Idea http://www.jetbrains.com/idea/
10.Алгоритмы и фундаментальное программирование в СГУ. Система
автоматической проверки задач http://acm.sgu.ru/lang/
11.Открытые тесты по Java http://www.quizful.net/category/java
12.Вязовик Н.А. Программирование на Java - INTUIT.ru:ИнтернетУниверситет
Информационных
Технологий,
2003-2010
http://www.intuit.ru/department/pl/javapl/
13.Монахов В.В. Язык программирования Java и среда NetBeansINTUIT.ru::Интернет-Университет Информационных Технологий, 20032010 http://www.intuit.ru/department/pl/javanetbeans/
14.Роганов
Е.А.
Основы
информатики
и
программирования
INTUIT.ru::Интернет-Университет Информационных Технологий, 20032010 http://www.intuit.ru/department/se/oip/
15.Кулямин В.В. Компонентный подход в программировании
INTUIT.ru:Интернет-Университет Информационных Технологий 20032010 http://www.intuit.ru/department/se/compprog/
16.Центр
разработки
Java
http://www.oracle.com/technology/global/ru/tech/java/index.html
17.Экстремальное
программирование
http://xp.1024.info/XPRules/UnitTests.html
18.Создание апплетов - визуализаторов работы алгоритмов криптографии,
дискретной математики, обработки абстрактных структур данных
http://rain.ifmo.ru/cat/view.php
8. Материально-техническое обеспечение дисциплины
«Java-программирование»
Аудитория с компьютером, имеющим
университетскую сеть и интернет, и проектором.
доступ
в
локальную
Программа составлена в соответствии с требованиями ФГОС ВПО с
учетом рекомендаций и Примерной ООП ВПО по специальности 090301
«Компьютерная безопасность» и специализации «Математические методы
защиты информации»
.
Автор
Старший преподаватель кафедры
информатики и программирования
___________ М. С. Портенко
Программа одобрена на заседании кафедры информатики и
программирования от « »
2012 года, протокол №
.
Заведующий кафедрой
информатики и программирования,
доцент
___________ А. Г. Федорова
Декан факультета КНиИТ,
доцент
___________ А. Г. Федорова
Related documents
Download