Текущий контроль осуществляется при проведении лабораторных работ, тестирования и выполнения контрольных работ.
Содержание курса определено требованиями Федерального государственного образовательного стандарта по направлению 230700 «Прикладная информатика»
3 Место учебной дисциплины в структуре ООП ВО
Данная дисциплина относится к вариативной части.
Приложения обычно показывают пользователю окна со стандартными элементами управления, изображениями и графиками; реагируют на события от мыши, клавиатуры и других источников; общаются с другими приложениями, запускают другие программы — подобные стандартные блоки отходят на второй план при использовании кроссплатформенных систем (фреймвоки) разработки, позволяя программисту сосредоточить свои усилия на функционале приложения.
Такие системы не ограничиваются только графическим интерфейсом пользователя — они реализует многие аспекты программирования. И это не является избыточностью, так как от фреймвока требуется, чтобы приложения целиком были переносимыми на разные платформы, а не только их графическая часть. Системы кроссплатформенной разработки предоставляют классы для файлов, потоков, многопоточности, конфигурирования приложений, межпроцессного взаимодействия, доступа к базам данных и многое другое.
Для изучения данной дисциплины необходимы «входные» знания по основам процедурного и объектно-ориентированного программирования, структуре и функциональных модулях операционных систем, архитектуре микропроцессорных систем.
Освоение данной дисциплины необходимо для успешного выполнения широкого спектра научных работ, связанных с разработкой кроссплатформенного программного обеспечения.
4 Объем дисциплины (в зачетных единицах с указанием количества академических, выделенных на контактную работу обучающихся с преподавателем (по видам учебных занятий) и на самостоятельную работу обучающихся)
Таблица 1. Выписка из учебного плана
Форма обучения | Семестр | Трудоемкость | Лекции, час | Практич., час | Лаб. раб., час | СРС, час | Форма аттестации | |
зач. ед. | час | |||||||
заочная | 7 | 3 | 108 | 4 | - | 4 | 96 | Зачет |
В т. ч. в интерактивной форме | 4 |
5 Содержание дисциплины (структурированное по темам (разделам) с указанием отведенного на них количества академических или астрономических часов и видов учебных занятий)
Таблица 2 Тематический план дисциплины
№ | Всего | В т. ч. аудиторных, час | Самост. | |||
Раздел, тема | часов | Всего | Из них | работа, | ||
Аудит. | Лекции | Лаб. | час | |||
1. | Базовые концепции кроссплатформенного программирования. | 20 | 1 | 1 | 19 | |
2. | Сравнение реализаций платформ Java и. Net | 20 | 1 | 1 | 19 | |
3. | Использование библио- тек Qt и wxWidgets для кроссплатформенной компиляции программ на языке С++ | 22 | 3 | 1 | 2 | 19 |
4. | Возможности кросс- платформенного интерпретатора языка python | 21 | 2 | 1 | 1 | 19 |
5. | Анализ производительности и профилирование кроссплатформенных приложений | 21 | 1 | 1 | 20 | |
ИТОГО: | 104+4 часа на зачёт | 8 | 4 | 4 | 96 |
Общая трудоемкость дисциплины составляет 2 зачетные единицы, 108 часа.
6. Виды занятий и их содержание:
6.1 Планы и содержание лекционных занятий
Раздел 1.
Предмет, цели и задачи курса. Основная терминология. Объектно-ориентированное программирование как доминирующая парадигма программирования. Проблема инициализации и освобождения памяти. Концепция «сборщика мусора». Пример работы сборщика мусора. Недостатки концепции.
Раздел 2.
Введение в язык Java. История. Основные свойства. Создание простой программы. Основы GUI. События в Java. Обзор библиотеки Swing. Апплет. Сервлет. Особенности
архитектуры. NET. Методы и средства разработки приложений с использованием Visual
. Сборки, потоки и домены приложений.
Раздел 3.
Установка Qt SDK. Модули библиотеки Qt. QtCore — классы ядра библиотеки, используемые другими модулями. QtGui — компоненты графического интерфейса. Технология widgets 3on canvas. Инструментальные средства wxWidgets. wxWidgets и родные графические элементы пользовательского интерфейса. Недостатки wxWidgets и Qt.
Раздел 4.
Портируемость Python. Ссылочные и атомарные объекты. Объектно-ориентированное и функциональное программирование в Python. Модули в языке Python. Модули, написанные на «чистом» Python, и модули расширения (extension modules), написанные на других языках программирования. Стандартная библиотека Python. Модули расширения и программные интерфейсы.
Раздел 5.
Поиск узких мест в приложениях. Правило «20-80». Сбор характеристик работы программы: время выполнения отдельных фрагментов, число верно предсказанных условных переходов, число кэш-промахов и т. п. Простейшее профилирование. Отдельные утилиты анализа и средства интегрированных сред разработки.
6.2 Планы и содержание лабораторных занятий
ЛАБОРАТОРНАЯ РАБОТА №1
"Процедурный и объектно-ориентированный подходы"
Цель работы. Освоить на примере разницу между объектно-ориентированным и процедурным подходами.
Краткие сведения и задание
Ниже приведена программа, которая реализует веб страницу в виде объекта. Задание: набрать, изучить, запустить, переписать программу с использованием процедурного подхода. Реализовать другую модель, с другими параметрами и считывание данных параметров из файла для вывода на экран. Добавить вычисление некоторых параметров на основе считанных.
from Database import Database
from time import *
class HTTPPage():
def __init__(self, filename = "index. html"):
self. filename = filename;
def buildTable(self, table, titles = ['Pressure', 'Temperature', 'Wind', 'Humidity'], reverse = True):
result = "<table border=1 cellpadding=10 cellspacing=0>"
result += "<tr><th>Time</th>"
for title in titles:
result += "<th>" + title + "</th>"
result += "</tr>"
for t, row in sorted(table. items(), key = lambda (t, row): t, reverse=reverse):
result += "<tr>"
result += "<td>" + strftime("%d %b %Y, %H:%M:%S", (gmtime(t))) + "</td>"
for cell in row. keys():
result += "<td>" + str(row[cell]) + "</td>"
result += "</tr>"
result += "</table>"
return result
def meanTemp(self):
db = Database()
mean = db. meanTemp()
db. close()
def data(self, startTime, finishTime, limit):
db = Database()
result = {}
data = db. getInterval(startTime, finishTime, limit)
db. close()
for row in data:
[dId, dTime, dType, dValue] = row[:4]
if dTime not in result:
result[dTime] = {}
result[dTime][dType] = str(dValue)[:5]
return self. buildTable(result)
def generateLastData(self, limit):
t = time()
return self. data(t - 120000, t, limit)
def show(self):
content = open(self. filename, 'r').read()
content = content. replace("%MEANTEMP%", str(self. meanTemp()))
content = content. replace("%LASTDATA%", self. generateLastData(limit = 20))
content = content. replace("%TIME%", strftime("%a, %d %b %Y %H:%M:%S", gmtime()))
return content. encode("ascii");
def render(self, resource):
return self. show();
ЛАБОРАТОРНАЯ РАБОТА №2
"Распараллеливание и многопоточность"
Цель работы. Научиться запускать процессы и потоки и обеспечивать их работу.
Краткие сведения и задание
Ниже приведены программы, которые отыскивают слово, указанное в командной строке, в файлах, с помощью нескольких потоков или процессов. Задание: набрать, изучить, запустить, добавить в предыдущую лабораторную (сокеты) возможность обрабатывать подключения нескольких клиентов сервером.
Родительский процесс:
import optparse
import os
import subprocess
import sys
def main():
child = os. path. join(os. path. dirname(__file__),
"grepword-p-child. py")
opts, word, args = parse_options()
filelist = get_files(args, opts. recurse)
files_per_process = len(filelist) // opts. count
start, end = 0, files_per_process + (len(filelist) % opts. count)
number = 1
pipes = []
while start < len(filelist):
command = [sys. executable, child]
if opts. debug:
command. append(str(number))
pipe = subprocess. Popen(command, stdin=subprocess. PIPE)
pipes. append(pipe)
pipe. stdin. write(word. encode("utf8") + b"\n")
for filename in filelist[start:end]:
pipe. stdin. write(filename. encode("utf8") + b"\n")
pipe. stdin. close()
number += 1
start, end = end, end + files_per_process
while pipes:
pipe = pipes. pop()
pipe. wait()
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


