Технологии программирования (факультатив)

Материал из Поле цифровой дидактики



Планируемые результаты обучения (Знать, Уметь, Владеть) Целью освоения дисциплины является формирование у студентов понимания принципов разработки программного обеспечения. Результаты обучения: обучающийся понимает, как устроен процесс разработки программного обеспечения
Знать
  1. понятия технологии программирования
  2. показатели качества программных систем
  3. модели жизненного цикла программного обеспечения
  4. общие принципы и паттерны программирования
  5. стандарты разработки программного обеспечения (Гост, ISO 9001, TickIT)
Уметь
  1. Находить, описывать и классифицировать программные средства
  2. Использовать общепринятые и предлагать собственные основания для категоризации программных средств
  3. Сравнивать между собой программные средства, предназначенные для решения сходных задач.
  4. Формулировать требования к программному обеспечению.
  5. Объяснять и изображать при помощи диаграмм модели жизненного цикла программ.
  6. Использовать различные подходы к организации процесса разработки программного обеспечения.
  7. Переносить принципы разработки программного обеспечения на разработку учебных материалов и организацию учебного процесса.
  8. Использовать различные типы UML диаграмм для описания и проектирования программного обеспечения.
  9. Использовать цифровые средства и среды коллективной разработки программного обеспечения.
Владеть
  1. иерархией понятий технологии программирования
  2. классификацией языков программирования
Содержание разделов курса
  1. Классификация программных средств
  2. Определение требований к программе
  3. Жизненный цикл программы. Модели жизненного цикла
  4. Основные подходы к организации создания и использования программ. Структурное программирование. Экстремальное программирование.
  5. Модульное программирование
  6. Качество программ
  7. Стандарты ПО
  8. Проектирование ПО при помощи UML
Видео запись
Среды и средства, которые поддерживают учебный курс UML, Mermaid, Graphviz
Книги, на которых основывается учебный курс Head First. Паттерны проектирования, Мифический человеко-месяц или как создаются программные системы, СИСТЕМНАЯ ИНЖЕНЕРИЯ — 2022, Разработка компьютерных учебников и обучающих систем

Категория:ИНФ-191в - магистранты группы ИНФ-191в

Содержание разделов дисциплины:

 Description
Технология программированияТехнология программирования (programming technology) - это совокупность методов и средств, используемых в процессе разработки программных продуктов, представляет собой набор технологических инструкций, включающих в себя:
  1. указание последовательности технологических операций;
  2. перечисление условий, при которых выполняется та или иная операция;
  3. описание операций, где для каждой операции выделены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т.п.

Тема 1. Классификация программных средств

Классификация языков программирования
https://www.acm.org/publications/computing-classification-system/1998/d.3.2

Тема 2. Требования к программному обеспечению

Полезное текстовое описание программы

  1. Назначение. Что является главной функцией программы и причиной её написания?
  2. Среда. На каких машинах, аппаратных конфигурациях и конфигурациях операционной системы будет она работать?
  3. Область определения и область значений. Каковы допустимые значения входных данных? Какие правильные значения выходных результатов можно ожидать?
  4. Реализованные функции и использованные алгоритмы. Что конкретно может делать программа?
  5. Форматы ввода (вывода, точные и полные.
  6. Инструкция по работе, в том числе описание вывода на консоль и устройство вывода при нормальном и аварийном завершении.
  7. Опции. Какой выбор предоставляется пользователю в отношении функций? Каким образом его нужно задавать?
  8. Время работы. Сколько времени занимает решение задачи заданного размера на заданной конфигурации?
  9. Точность и проверка. Какова ожидаемая точность результатов? Какие имеются средства проверки точности?

Категория:DigitalTool

Требования к программе в форме UML

и другие способы создания диаграмм с целью описания процессов управления:

{{#ask: [[Категория:Diagrams]] [[Field_of_knowledge::Управление]] [[Environment::Mermaid]] [[Description::+]] | ?Description }}

Тема 3. Жизненный цикл программы. Модели жизненного цикла

Тема 4. Организация процесса разработки программного обеспечения

  • Использовать различные подходы и и средства к организации процесса разработки программного обеспечения.

 DescriptionAffordances
CodeanywhereCodeanywhere: кроссплатформенная облачная ИСР, позволяющая совместно разрабатывать программные проекты с помощью веб-браузера на любом устройстве
FigmaFigma - это мощный веб-инструмент для дизайна интерфейсов, позволяющий создавать, прототипировать и коллаборировать над дизайн-проектами в режиме реального времени.1. Создание и редактирование дизайнов интерфейсов с использованием широкого спектра инструментов и функциональности, включая растровую и векторную графику, текстовые стили, границы, фильтры и многое другое.

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

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

4. Управление компонентами и библиотеками элементов дизайна для повторного использования и поддержания стандартов внешнего вида.
FlutterПопулярный фреймворк для создания мобильных приложений. Flutter — комплект средств разработки и фреймворк с открытым исходным кодом для создания мобильных приложений под Android и iOS, веб-приложений, а также настольных приложений под Windows, macOS и Linux с использованием языка программирования Dart, разработанный и развиваемый корпорацией Google.
  • Основная идея — это возможность декларативно описывать интерфейс пользователя, при этом не используя никакой DSL. т. е. только чистый Dart код и подход, в котором все есть виджет.
GistGist предназначен для обмена кусочками кода (и не только кода). В основе Gist лежит система контроля версий git, что делает возможным коллективную работу над материалом, поддержку форков и версионности.
  • поделиться каким-либо фрагментом кода
  • хранить и изменять какие-либо фрагменты кода (при этом каждому изменению будет присваиваться своя версия)
  • вставлять специальный HTML-код на страницы блога, чтобы сделать подсветку синтаксиса.
GitGit.png Cистема контроля версий, инструмент для управления историей исходного кода.Контроль версий и отслеживание всех изменений
Google CollabGoogle Colaboratory — среда, чтобы писать код аналогично jupyter notebook.создание исполняемых публикаций - объединение текста, кода, графики и данных
JupyterJupyter — интерактивный блокнот, ориентированным на работу со множеством сред выполнения Python, но и R, Julia, Scala и ряда других.
  • Писать код в специальной среде с подсветкой синтаксиса, исправлением ошибок и другими возможностями IDE.
  • Запускать разные участки кода в произвольной последовательности или написанную программу целиком.
  • Загружать данные, обрабатывать и преобразовывать их
  • Вставлять и выводить результаты, включая визуализацию, прямо посреди кода.
  • Делиться кодом с другими разработчиками и давать им общий доступ к проекту.
Notepad++Это текстовый редактор, который предназначен для редактирования не только текста, но и программ на различных языках программирования
  • 192px-Notepad%2B%2B_Logo.svg.png
Поддерживает несколько десятков языков программирования php, css, c++, html, javascript, java, xml, jsp, pascal, perl и др. Регулярные выражения, замены, метки, удаление отмеченных строк
OpenAI CodexOpenAI Codex — это модель искусственного интеллекта, разработанная OpenAI. Он анализирует естественный язык и генерирует код в ответ. Codex разработан на основе GPT-3, известной модели естественного языка от OpenAI. Инструмент обучен на миллиардах строк кода, а также письменного текста — именно это позволяет ему переводить человеческий язык в компьютерный.Codex лучше всего справляется с Python, но также владеет более чем десятью другими языками, такими как JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript и Shell. Codex способна по текстовому описанию сгенерировать простой сайт или игру. Например, пользователь может словами написать что-то вроде «создай веб-страницу с меню слева и заголовком сверху», а Codex выдаст соответствующий код
Python IDLEСреда разработки на языке Python, поставляемая вместе с дистрибутивом - базовый, упрощенный режим программирования на Python. Тем не менее, IDLE хороший редактор для начала программирования и понимания основ языка. В нем есть оболочка Python — интерактивный интерпретатор.Автозавершение кода, подсветка синтаксиса, подбор отступа и базовый встроенный отладчик.
RStudioсвободная среда разработки программного обеспечения с открытым исходным кодом для языка программирования R, который предназначен для статистической обработки данных и работы с графикой.Может использоваться для сохранения версий проектов на языках R, Python, C++
SAP Build AppsСреда no-code для разработки мобильных приложенийСоздание мобильных приложений профессионального уровня

Тема 5. Общие принципы разработки программного обеспечения и разработки учебных материалов


Тема 6. UML

  • Использовать различные виды UML диаграмм для описания и проектирования программного обеспечения.

Диаграмма классов

Диаграмма Ганта

Тема 7. Среды коллективной разработки программного обеспечения

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

  1. Stack OverFlow
  2. GitHub
  3. Glitch
  4. Modeling Commons (NetLogo)
  5. CoMSES
  6. Snap!
  7. Roblox
  8. Habr

Критерии оценки по дисциплине

Образовательный результат Тема Задание Пример
Находить, описывать и классифицировать программные средства Классификация программных средств Принять участие в обсуждении классификации программных средств, привести собственные примеры программных средств см ACM_Digital_Library
Классификация программного обеспечения
https://www.acm.org/publications/computing-classification-system/1998
Категория:DigitalTool + Категория:Book + Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
Использовать общепринятые и предлагать собственные основания для категоризации программных средств Классификация программных средств Используя WebGrid соберите поле своих собственных представлений о программных средствах
Сравнивать между собой программные средства, предназначенные для решения сходных задач. Классификация программных средств На примере сравнения средств обучения программированию Категория:DigitalTool , обучающих играх Категория:DEG , средствах создания диаграмм Категория:Diagrams , средствах анализа библиометрических данных, средах анализа данных Категория:Dataset, средах выращивания данных. TheBrain, ShinyItemAnalysis, VUE, VOSviewer + ChatbotACM (dataset), NetLogo + StarLogo Nova
Формулировать требования к программному обеспечению. Учитывать требования Гост и СанПИН Требования к программному обеспечению Познакомиться с требованиями и понятиями внутри статей ГОСТ Р 59895-2021, ГОСТ 19.106-78, Классификация требований (диаграмма). Добавить релевантные учебному курсу стандарты и диаграммы. Диаграмма курса «Технологии программирования»
Объяснять и изображать при помощи диаграмм модели жизненного цикла программ. Жизненный цикл программ Материалы статей - Стандарты Категория:Standard + ГОСТ 19.701—90 ГОСТ Р ИСО/МЭК 12207-2010, Жизненный цикл программ, Использование статьи Гистограмма для сравнения материалов по компетенциям и стандартам Категория:Standard Диаграмма для статьи Эволюционная разработка, Гистограмма
Использовать различные подходы к организации процесса разработки программного обеспечения. Организация процесса разработки программного обеспечения Описать процесс объединения нескольких средств в статье формата рецепты Категория:Scripting_Tutorials Категория:DigitalTool + Категория:Scripting_Tutorials + Представить данные датасета в виде графа + Использовать данные МЭШ для моделирования поведения учителей
Переносить принципы разработки программного обеспечения на разработку учебных материалов и организацию учебного процесса. Общие принципы разработки программного обеспечения и разработки учебных материалов Использовать навыки создания диаграмм при описании учебного процесса. Создать в вики план - диаграмму учебного занятия, использую формат IMS Global LD - акты, действия, акторы, средства деятельности IMS Global LD, Learning Design, VUE
Использовать различные виды UML диаграмм для описания и проектирования программного обеспечения UML диаграммы в проектировании программного обеспечения Создание и описание собственных UML диаграмм Категория:Diagrams
Использовать цифровые средства и среды коллективной разработки программного обеспечения. Среды коллективной разработки программного обеспечения. Действия на сайтах коллективной разработки программного обеспечения. Комменты со ссылками на профайлы и собственные проекты Stack OverFlow, GitHub, Scratch, Modeling Commons, Snap!