Министерство образования и науки Российской Федерации

advertisement
Министерство образования и науки Российской Федерации
Владивостокский государственный университет экономики и сервиса
ПРОГРАММИРОВАНИЕ ДЛЯ ИНТЕРНЕТ
Рабочая программа учебной дисциплины
по специальности
230201.65 Информационные системы и технологии
Владивосток
Издательство ВГУЭС
2014
ББК **.**
Рабочая программа по дисциплине «Программирование для Интернет»
составлена в соответствии с требованиями ГОС ВПО. Предназначена для
студентов специальности 230201.65 Информационные системы и технологии,
Составитель: Трофимов М.А., ст. преподаватель, кафедра информационных
систем и прикладной информатики
Утверждена на заседании кафедры ИСПИ от 19.03.2014 г., протокол № 9
Утверждена на заседании Учёного совета института ИИБС от
29.04.2014г., протокол № 7
©
Издательство Владивостокского
государственного университета
экономики и сервиса, 2014
ВВЕДЕНИЕ
Дисциплина «Программирование для Интернет» относится к циклу
общепрофессиональных
дисциплин
специальности
230201.65
«Информационные системы и технологии» и введена в учебные планы в
соответствии с требованиями ГОС указанной специальности и направления.
При разработке программы дисциплины «Программирование для
Интернет» учитывалось современное состояние развития языков
программирования и разметки наполнения, соответствующих им
интегрированных сред разработчика (IDE) и технологий программирования.
Дисциплина «Программирование для Интернет» относится к
дисциплинам математического и общенаучного цикла. Данная дисциплина
базируется на компетенциях, полученных при изучении дисциплин
«Технологии Интернет», «Программирование на языке высокого уровня»,
«Проектирование информационных систем».
1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1.1
Цели освоения учебной дисциплины
Целью изучения дисциплины «Программирование для Интернет»
является теоретическая и практическая подготовка студентов в области
разработки веб-приложений с использованием современного языка
программирования PHP, СУБД MySQL, языка разметки HTML, каскадных
стилей CSS, а так же современной среды разработки NetBeans. Знания,
полученные в результате освоения дисциплины, помогут при
разработке/доработке систем (приложений), основанных на CMS и PHPфреймворках (Framework), которые используются в области повсеместно.
Основные задачи изучения дисциплины:
 архитектура Веб, стек серверных программ;
 программирование на языке PHP;
 создание приложений, основанных на базе данных (БД);
 современная модель веб-приложения;
 архитектура систем управления наполнением (CMS);
 программирование модулей, расширяющих функциональность
CMS.
1.2
Компетенции обучающегося, формируемые в результате
освоения учебной дисциплины
Изучение дисциплины формирует следующие профессиональные
компетенции:
- знать базовые приёмы и методы осуществления программы измерений в
производственном процессе программирования;
- знать новейшие направления в области технологий программирования;
языки программирования и методы разработки алгоритмов
- уметь выбирать необходимые подходы для организации
программирования как производственного процесса разрабатывать
информационно-логическую, функциональную и объектно-ориентированную
модели информационной системы, модели данных информационных систем
- владеть навыками программирования в современных средах;
- знать принципы, базовые концепции технологий программирования,
основные этапы и принципы создания программного продукта, абстракция,
различие
между
спецификацией
и
реализацией,
рекурсия,
конфиденциальность информации, повторное использование, проблема
сложности, масштабирование, проектирование с учетом изменений,
классификация, типизация, соглашения, обработка исключений, ошибки и
отладка
1.4 Основные виды занятий и особенности их проведения
Объем и сроки изучения дисциплины:
Для студентов четвертого
курса специальности «Информационные
системы и технологии» курс читается в седьмом семестре в объеме 85
учебных часов. Из них аудиторных – 34 часа. На самостоятельное изучение
дисциплины студентам выделяется 51 часов. Итоговая аттестация по курсу
— зачет.
1.5 Виды контроля и отчетности по дисциплине
Контроль успеваемости студентов осуществляется в соответствии с
рейтинговой системой оценки знаний студентов.
Текущий контроль предполагает:
- проверку уровня самостоятельной подготовки студента при выполнении
индивидуального задания;
- опросы и дискуссии по основным моментам изучаемой темы.
Промежуточный контроль предусматривает:
- проведение контрольных работ по блокам изученного материала;
- тестирование остаточных знаний (предварительные аттестации).
Итоговый контроль знаний студентов осуществляется при проведении
экзамена в очной форме.
2. СТРУКТУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ
2.1 Темы лекций
Тема 1. Архитектура веб, стек серверных программ, основные
понятия
Организационная структура сети Интернет. OpenSource-стек серверных
программ (веб-серверы Apache и NGinx, СУБД MySQL, интепретатор PHP,
набор программ DENWER). Введение в язык PHP.
Тема 2. Программирование на языке PHP, среда NetBeans IDE
Процедурные возможности языка PHP. Обзор библиотеки функций.
Обзор подключаемых расширений языка. Объектно-ориентированные
возможности языка (в сравнительном анализе с языками Java и C++).
Тема 3. Разработка приложений, основынных на БД
Реляционная модель данных. Язык SQL для работы с БД. Расширение
PDO для интерпретатора PHP для работы с БД.
Тема 4. Современная модель веб-приложения
Подход разделения данных, логики и представления в веб-приложении
«Модель-Вид-Поведение» (MVC). Введение в язык Smarty.
Тема 5. Архитектура CMS
Возможности CMS. Применение CMS в различных областях
деятельности. Принципы, на основе которых разрабатываются CMS.
Тема 6. Программирование, расширяющих функциональность CMS,
модулей
Разработка модулей для CMS Prestashop и CMS LiveStreet. Описание
модели модуля, обсуждение реализации подхода MVC, используемого в
рассматриваемых CMS.
Тема 7. Системы контроля версий
Рассматриваются системы контроля версий Subversion и GIT. Случаи, в
которых есть необходимость использования систем контроля версий.
Применение Subversion и GIT в NetBeans IDE и консоли.
2.2 Перечень тем практических/лабораторных занятий
Тема 1. Изучение пакета программ DENWER
Установка DENWER. Обсуждение структуры каталогов DENWER,
набора серверных программ, типичных проблем установки пакета и запуска
серверных программ. Создание первой по традиции программы «Hello
World» на языке PHP и ее запуск через консоль. Применение разметки HTML
в созданной программе. Подробное изучение языка PHP: основы синтаксиса,
типы, переменные, константы, выражения, операторы, управляющие
конструкции, функции, классы и объекты, пространства имен, исключения.
Тема 2. Изучение среды NetBeas IDE, задачи на языке PHP
Установка NetBeans. Обзор возможностей среды. Алгоритмические
задачи (не использовать готовые библиотеки):
а) Создать функцию, возвращающую среднее арифметическое значение
массива чисел, переданного в параметре.
б) Создать функцию, возвращающую значение максимального
элемента массива чисел, который передается в параметре.
в) Создать функцию, меняющую местами значения двух передаваемых
ей по ссылке аргументов.
Задачи с использование объектно-ориентированного подхода:
а) Объединить созданные ранее функции в класс Math, сделав их, таким
образом, методами данного класса. Продемонстрировать работу класса.
б) Создайте класс с именем Time, содержащий три поля,
предназначенных для хранения часов, минут и секунд. Конструктор класса
должен инициализировать поля заданным набором значений или нулевыми
значениями, если набор не задан. Создайте метод класса, который будет
выводить значения полей на экран, в формате ЧЧ:ММ:СС (использовать 24-х
часовое обозначения времени) и метод, складывающий значения двух
объектов типа Time, передаваемых ему в качестве аргумента(ов).
Продемонстрировать работу класса.
в) Создайте класс с именем Fraction, содержащий два целочисленных
поля - числитель и знаменатель обыкновенной дроби. Конструктор класса
должен инициализировать их заданным набором значений. Создайте метод
класса, который будет выводить дробь на экран в формате x / y, метод,
складывающий две дроби, переданные ему в параметрах и статический
метод, умножающий две дроби, переданные ему в параметрах.
г) Определить класс Vector2D как вектор на плоскости с данными x и y.
Определить для него методы сложения, вычитания и скалярного
произведения, определить метод присваивания значения координатам
вектора и метод вывода значений. Определить класс Vector3D как вектор в
пространстве, породив его от класса Vector2D. Переопределить для него
методы. Продемонстрировать работу класса.
д) Определить класс Stack, который позволяет реализовать структуру
данных типа «стек» для хранения данных. Определить для класса методы pop
(положить в стек), push (достать из стека) и метод определения количества
элементов в стеке. Методы должны осуществлять проверку на выход за
пределы стека. Определить класс Fifo, реализующий структуру данных типа
«очередь» для хранения данных, породив его от класса Stack, добавив
нужные поля и переопределив методы. Продемонстрировать работу класса с
использованием данных с различной внутренней структурой (числовые и
строковые переменные, массивы).
е) Создать абстрактный класс Figure с абстрактными методами
вычисления площади и периметра. Создать производные классы: Rectangle
(прямоугольник), Circle (круг), Triangle (треугольник). Описать в
производных классах методы вычисления периметра и площади,
продемонстрировать работу класса.
ж) Создать абстрактный класс Figure с абстрактным методом draw(),
осуществляющим прорисовку объекта на HTML-странице, используя
графическую библиотеку. Создать производные классы: Rectangle
(прямоугольник), Circle (круг), Triangle (треугольник). Описать в
производных классах метод draw() для каждой из фигур, продемонстрировать
работу класса.
Тема 3. Разработка приложений, основанных на БД
Изучение PDO для работы с БД. Разработка веб-приложения «Чат».
Тема 4. Современная модель веб-приложения
Рефакторинг созданного ранее веб-приложения «Чат» (состоящего из
одного файла с исходным кодом) с целью применения подхода MVC.
Изучение языка Smarty. Задачи практического занятия по рефакторингу вебприложения:
а) вынести HTML-разметку в отдельный файл «view.tpl» и, используя
язык Smarty, создать шаблон окна чата;
б) вынести класс Model для работы с БД в отдельный файл
«model.php»;
в) создать класс Controller (файл «controller.php»), наследующий класс
Model и выполняющий необходимую обработку клиентских запросов;
г) создать файл «index.php», инициирующий запуск веб-приложения и
передающий поступающие клиентские запросы на обработку объекту класса
Controller.
Тема 5. Знакомство с CMS Prestashop
Обсуждение пользовательской (Front Office) и административной (Back
Office) частей системы. Разработка модуля к системе, который позволяет
добавлять контактную информацию о владельце сайта в верхнюю часть
страниц (Header of Pages), используя подход системы «хуков» (Hook System).
Тема 6. Знакомство с CMS LiveStreet
Обсуждение пользовательской (Front Office) и административной (Back
Office) частей системы. Разработка модуля к системе, который позволяет
выводить блок в правую часть страниц сайта с информацией о допустимой
возрастной группе сайта, используя подход системы «хуков».
3. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ
Программой дисциплины предусмотрено чтение лекций, проведение
практических занятий. В течение изучения дисциплины студенты изучают на
лекционных занятиях теоретический материал. На практических занятиях
под
руководством
преподавателя,
решают
типовые
задачи
программирования, обсуждают возникающие вопросы и проблемы,
разбирают и анализируют наиболее удачные практики программирования.
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ КУРСА
4.1
Перечень и тематика самостоятельных работ студентов по
дисциплине
1. Разработать модуль для CMS LiveStreet, который позволяет отображать
персональную информацию студента (ФИО, фото, группа, курс,
специальность,
хобби,
профессиональные
интересы,
список
показательных работ по программированию) и заменяющий
стандартный модуль CMS LiveStreet для отображения профиля
пользователя.
2. Разработать модуль для CMS Prestashop, позволяющий обмениваться
сообщениями (Private Messages) между администрацией сайта и
другими пользователями, которые оставляли комментарии на
страницах с информацией о товарах интернет-магазина.
4.2
Контрольные вопросы для самостоятельной оценки качества
освоения учебной дисциплины
Большинство вопросов приведено на английском языке. В скобках в конце
вопроса уточняется, к какой предметной области разработки, средству или
языку относится вопрос.
1. Which of the following statements is NOT true? (PHP)
a) Class constants are public
b) Class constants are being inherited
c) Class constants can omit initialization (default to NULL)
d) Class constants can be initialized by consts
2. Type hinting in PHP allows the identification of the following variable
types? (PHP)
a) String
b) Integer
c) Array
d) Any class or interface type
3. Identify the security vulnerability in the following example: (PHP)
echo "Welcome, {$_POST['name']}.";
a) SQL Injection
b) Cross-Site Scripting
c) Remote Code Injection
d) None of the above
4. How many times will the function counter() be executed in the following
code? (PHP)
function counter($start, &$stop)
{
if ($stop > $start)
{
return;
}
counter($start--, ++$stop);
}
$start = 5;
$stop = 2;
counter($start, $stop);
a)
b)
c)
d)
3
4
5
6
5. When a class is defined as final it: (PHP)
a) Can no longer be extended by other classes.
b) Means methods in the class are not over-loadable.
c) Cannot be defined as such, final is only applicable to object methods.
d) Is no longer iteratable.
6. What is the content of $c after the following code has executed? (PHP)
$a = 2;
$b = 3;
$c = ($a++ * ++$b);
a)
b)
c)
d)
0
5
8
4
7. The function call returns "0". What does that mean? (PHP)
strcasecmp('hello my dear!', 'Hello my DEAR!');
a)
b)
c)
d)
String 1 is less than string 2.
The strings are considered equal.
String 2 is less than string 1.
The strings have equal length.
8. What is the output of the following script? (PHP)
class a
{
public $val;
}
function renderVal (a $a)
{
if ($a) {
echo $a->val;
}
}
renderVal (null);
a)
b)
c)
d)
A syntax error in the function declaration line
An error, because null is not an instance of 'a'
Nothing, because a null value is being passed to renderVal()
NULL
9. What is the output of the following code? (PHP)
echo 0x33, ' monkeys sit on ', 011, ' trees.';
a)
b)
c)
d)
33 monkeys sit on 11 trees.
51 monkeys sit on 9 trees.
monkeys sit on trees.
0x33 monkeys sit on 011 trees.
10.When checking whether two English words are pronounced alike, which
function
should be used for the best possible result? (PHP)
a) levenshtein()
b) metaphone()
c) similar_text()
d) soundex()
11.Given the following code, what is correct? (PHP)
function f(stdClass &$x = NULL)
{
$x = 42;
}
$z = new stdClass;
f($z);
var_dump($z);
a)
b)
c)
d)
e)
Error: Typehints cannot be NULL
Error: Typehints cannot be references
Result is NULL
Result is object of type stdClass
Result is 42
12.What is the maximum size of the VARCHAR column type? (MySQL)
a) 255 Bytes
b) 255 Characters
c) 12 Bytes
d) 512 Characters
e) No Limit
13.Transactions can be used to: (Data Bases)
Recover from errors in case of a power outage or a failure in the SQL
connection
a) Ensure that the data is properly formatted
b) Ensure that either all statements are performed properly, or that none of
them are.
c) Recover from user errors
14.Which piece of code will return the ASCII value of a character? (MySQL)
a) (int)'t';
b) ord('t');
c) to_ascii('t');
d) chr('t');
15.An HTML form contains this form element: (PHP)
<input type="image" name="myImage" src="image.png" />
The user clicks on the image to submit the form. How can you now access
the relative coordinates of the mouse click?
a) $_IMAGE['myImage']['x'] and $_IMAGE['myImage']['y']
b) $_POST['myImage']['x'] and $_POST['myImage']['x']
c) $_POST['myImage.x'] and $_POST['myImage.y']
d) $_POST['myImage_x'] and $_POST['myImage_y']
16.You are creating an application that generates invoices in a variety of
formats, including PDF, ODS and HTML. Each of these formats is
represented as a PHP class in your application. While some of the operations
can be performed on all of the different formats (such as saving and
loading), other operations may be specific to one or two of the formats (such
as setting as read only). Which design pattern should you use for this
application? (System Design)
a) Adapter
b) Factory
c) MVC
d) Singleton
17.Как будет выглядеть код страницы после выполнения кода: (Smarty)
{assign var=”groupID” value=$currentUser->getUserGroup()}
{if($groupID) > 1}{assign var=”groupID” value=10}
{If $groupID = 1}
<div>You are an Admin</div>
{else}
<div>You are a Customer</div>
{/if}
{/if}
a) <div>You are an Admin</div> или <div>You are a Customer</div> в
зависимости от переменной groupID
b) Всегда <div>You are an Admin</div>
c) Всегда <div>You are a Customer</div>
18.На каком языке написан следующий код:
function clearForm(name) {
var f = document.forms[name];
for(var i = 0; i < f.elements.length; ++i) {
if(f.elements[i].checked)
f.elements[i].checked = false;
}
a) PHP
b) Java
c) JavaScript
19.Какой результат выполнения скрипта? (JavaScript):
<script type="text/javascript" src="myscript.js">
alert('I am pointless as I won\'t be executed');
</script>
a)
b)
c)
d)
I am pointless as I won't be executed
I am pointless as I won\'t be executed
Результат выполнения скрипта из файла myscript.js
Код содержит ошибки
4.3
Методические рекомендации по организации СРС
Для студентов в качестве самостоятельной работы предполагается
выполнение домашних заданий, групповая работа над
задачами по
программированию.
4.4
Рекомендации по работе с литературой
В процессе изучения дисциплины «Программирование для Интернет»,
для того чтобы представлять основные понятия и сущность веб-технологий
необходимо воспользоваться учебником К. Пейтон, А. Меллер «PHP &
MySQL. В примерах и на проектах».
Остальная рекомендуемая литература поможет студентам выполнять
задания самостоятельной работы и получить углубленные знания по
дисциплине.
5. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ
ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
5.1 Основная литература
1. PHP & MySQL. В примерах и на проектах / К. Пейтон, А. Меллер ; пер.
с нем. под ред. С. М. Молявко. - М. : Бином-Пресс, 2011. - 368 с. : ил.
2. Веб-мастеринг: HTML, CSS, JavaScript, PHP, CMS, графика, раскрутка /
П. А. Ташков. - СПб. : Питер, 2010. - 512 с. : ил. - (На 100 %).
5.2 Дополнительная литература
1. PHP. Объекты, шаблоны и методики программирования / М. Зандстра;
пер. с внгл. – M.: Вильямс, 2013. – 560 с.: ил.
Полнотекстовые базы данных – нет
Интернет-ресурсы:
1.
2.
3.
4.
Руководство по PHP. URL: http://www.php.net/manual/ru/
Smarty 3 Documentation. URL: http://www.smarty.net/documentation
Справочник по HTML/CSS. URL: http://htmlbook.ru/
MySQL Documentation. URL: http://dev.mysql.com/doc/refman/5.6/en/
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИНЫ
а) программное обеспечение: MS Word, NetBeans IDE, DENWER.
б) техническое и лабораторное обеспечение – компьютерный класс,
аудитория с презентационным оборудованием.
7. СЛОВАРЬ ОСНОВНЫХ ТЕРМИНОВ
OpenSource – открытое программное обеспечение.
PDO – PHP Data Objects, расширение для PHP, предоставляющее
разработчику простой и универсальный интерфейс для доступа к различным
базам данных.
MVC – Model-view-controller, схема использования нескольких
шаблонов проектирования, с помощью которых модель данных приложения,
пользовательский интерфейс и взаимодействие с пользователем разделены на
три отдельных компонента так, что модификация одного из компонентов
оказывает минимальное воздействие на остальные.
Smarty – компилирующий обработчик шаблонов для PHP, один из
инструментов, позволяющий отделить прикладную логику и данные от
представления в духе подхода MVC.
CMS – Content management system, информационная система,
используемая для обеспечения и организации совместного процесса
создания, редактирования и управления наполнением сайта.
GIT – распределённая (децентрализованная) система управления
(контроля) версиями.
Subversion – централизованная система управления (контроля)
версиями.
DENWER – набор дистрибутивов и программная оболочка,
предназначенные для создания и отладки веб-приложений на локальном
компьютере под управлением ОС Windows.
Рефакторинг – refactoring, реорганизация кода или процесс изменения
внутренней структуры программы, не затрагивающий её внешнего поведения
и имеющий цель облегчить понимание её работы.
Download