Технологии программирования (факультатив)
Материал из Поле цифровой дидактики
Планируемые результаты обучения (Знать, Уметь, Владеть) | Целью освоения дисциплины является формирование у студентов понимания принципов разработки программного обеспечения. Результаты обучения: обучающийся понимает, как устроен процесс разработки программного обеспечения
|
---|---|
Содержание разделов курса |
|
Видео запись | |
Среды и средства, которые поддерживают учебный курс | UML, Mermaid, Graphviz |
Книги, на которых основывается учебный курс | Head First. Паттерны проектирования, Мифический человеко-месяц или как создаются программные системы, СИСТЕМНАЯ ИНЖЕНЕРИЯ — 2022, Разработка компьютерных учебников и обучающих систем |
Категория:ИНФ-191в - магистранты группы ИНФ-191в
Содержание разделов дисциплины:
Description | |
---|---|
Технология программирования | Технология программирования (programming technology) - это совокупность методов и средств, используемых в процессе разработки программных продуктов, представляет собой набор технологических инструкций, включающих в себя:
|
Тема 1. Классификация программных средств
- Классификация языков программирования
- https://www.acm.org/publications/computing-classification-system/1998/d.3.2
Тема 2. Требования к программному обеспечению
Полезное текстовое описание программы
- Назначение. Что является главной функцией программы и причиной её написания?
- Среда. На каких машинах, аппаратных конфигурациях и конфигурациях операционной системы будет она работать?
- Область определения и область значений. Каковы допустимые значения входных данных? Какие правильные значения выходных результатов можно ожидать?
- Реализованные функции и использованные алгоритмы. Что конкретно может делать программа?
- Форматы ввода (вывода), точные и полные.
- Инструкция по работе, в том числе описание вывода на консоль и устройство вывода при нормальном и аварийном завершении.
- Опции. Какой выбор предоставляется пользователю в отношении функций? Каким образом его нужно задавать?
- Время работы. Сколько времени занимает решение задачи заданного размера на заданной конфигурации?
- Точность и проверка. Какова ожидаемая точность результатов? Какие имеются средства проверки точности?
Требования к программе в форме UML
- Классификация требований (диаграмма) (graphviz)
- Диаграмма прецедентов (use cases)
- Диаграмма пути пользователя (User Journey)
- Диаграмма Ганта - представление процессов внутри разработки
и другие способы создания диаграмм с целью описания процессов управления:
{{#ask: [[Категория:Diagrams]] [[Field_of_knowledge::Управление]] [[Environment::Mermaid]] [[Description::+]] | ?Description }}
Тема 3. Жизненный цикл программы. Модели жизненного цикла
- Стандарты Категория:Standard + ГОСТ 19.701—90
Description | |
---|---|
ГОСТ 19.701—90 | СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ - Обозначения условные и правила выполнения - ГОСТ 19.701-90 (ИСО 5807-85). Настоящий стандарт разработан методом прямого применения международного стандарта ИСО 5807-85* "Обработка информации. Символы и условные обозначения блок-схем данных, программ и систем, схем программных сетей и системных ресурсов" |
Description | |
---|---|
ГОСТ Р ИСО/МЭК 12207-2010 | Системная и программная инженерия ПРОЦЕССЫ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ. Настоящий стандарт, используя устоявшуюся терминологию, устанавливает общую структуру процессов жизненного цикла программных средств, на которую можно ориентироваться в программной индустрии. Настоящий стандарт определяет процессы, виды деятельности и задачи, которые используются при приобретении программного продукта или услуги, а также при поставке, разработке, применении по назначению, сопровождении и прекращении применения программных продуктов. Понятие программного средства включает в себя встроенный фирменный программный компонент. |
Description | |
---|---|
Жизненный цикл программ | Жизненный цикл программного обеспечения период времени с момента принятия решения о необходимости создания программного продукта до вывода его из эксплуатации. Модель жизненного цикла программного обеспечения структура, определяющая последовательность выполнения и взаимосвязи процессов, действия и задач на протяжении ЖЦ |
Тема 4. Организация процесса разработки программного обеспечения
- Использовать различные подходы и и средства к организации процесса разработки программного обеспечения.
Description | Affordances | |
---|---|---|
Codeanywhere | Codeanywhere: кроссплатформенная облачная ИСР, позволяющая совместно разрабатывать программные проекты с помощью веб-браузера на любом устройстве | |
Figma | Figma - это мощный веб-инструмент для дизайна интерфейсов, позволяющий создавать, прототипировать и коллаборировать над дизайн-проектами в режиме реального времени. | 1. Создание и редактирование дизайнов интерфейсов с использованием широкого спектра инструментов и функциональности, включая растровую и векторную графику, текстовые стили, границы, фильтры и многое другое.
2. Создание интерактивных прототипов с помощью функционала привязки, переходов между экранами, анимации и микроинтеракций. 3. Коллаборация с командой над дизайн-проектами в режиме реального времени, возможность совместной работы, обмена комментариями и отслеживания изменений. 4. Управление компонентами и библиотеками элементов дизайна для повторного использования и поддержания стандартов внешнего вида. |
Gist | Gist предназначен для обмена кусочками кода (и не только кода). В основе Gist лежит система контроля версий git, что делает возможным коллективную работу над материалом, поддержку форков и версионности. |
|
Git | Cистема контроля версий, инструмент для управления историей исходного кода. | Контроль версий и отслеживание всех изменений |
Google Collab | Google Colaboratory — среда, чтобы писать код аналогично jupyter notebook. | создание исполняемых публикаций - объединение текста, кода, графики и данных |
Jupyter | Jupyter — интерактивный блокнот, ориентированным на работу со множеством сред выполнения Python, но и R, Julia, Scala и ряда других. |
|
Notepad++ | Это текстовый редактор, который предназначен для редактирования не только текста, но и программ на различных языках программирования
| Поддерживает несколько десятков языков программирования php, css, c++, html, javascript, java, xml, jsp, pascal, perl и др. Регулярные выражения, замены, метки, удаление отмеченных строк |
OpenAI Codex | OpenAI 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 диаграмм для описания и проектирования программного обеспечения.
- Использовать GenAI для генерации UML диаграмм
Диаграмма классов
Диаграмма Ганта
Тема 7. Среды коллективной разработки программного обеспечения
Использовать цифровые средства и среды коллективной разработки программного обеспечения.
Description | |
---|---|
CoMSES | CoMSES Net - Сеть для вычислительного моделирования в социальных и экологических науках. Это - открытое сообщество исследователей и преподавателей. Репозиторий - цифровое хранилище, поддерживающее исследования и передовые методы цитирования программного обеспечения, цифрового хранения, воспроизводимости и повторного использования моделей. |
GitHub | Социальная сеть программистов, с возможностью хранить репозиторий проекта и все его изменения. GitHub - контроль доступа, багтрекинг, управлением задачами и вики для каждого проекта. Используется прежде всего для поддержания версий кода |
Glitch | Сообщество для разработки веб-приложений |
Habr | Хабр русскоязычный веб-сайт в формате системы тематических коллективных блогов (именуемых хабами) с элементами новостного сайта, созданный для публикации новостей, аналитических статей, мыслей, связанных с информационными технологиями, бизнесом и интернетом. |
Modeling Commons | Сообщество, участники которого создают и обмениваются моделями NetLogo. |
Roblox | Roblox — игровая онлайн-платформа и система создания игр, позволяющая любому пользователю создавать свои собственные и играть в созданные другими игры. |
Stack OverFlow | Сеть создания контента в форме вопросов и ответов о программировании. |
Сообщество GeoGebra | Социальная сеть, участники которой обмениваются материалами, созданными при помощи программы GeoGebra |
Сообщество NetLogo | Сообщество пользователей, которые обмениваются моделями, написанными на языке NetLogo. |
Сообщество Scratch | Сетевое сообщество детей и взрослых, обменивающихся своими проектами, написанными на языке Scratch |
Сообщество Snap! | Сообщество исследователей, учителей и учащихся, использующих в своей деятельности язык Snap! Участники могут делиться своими проектами (Share, Publish). Создавать коллекции проектов, следить с действиями других участников (following) |
Сообщество StarLogo | Сообщества обмена моделями и объектами в среде StarLogo Nova. Участники могут использовать код проектов других участников. Создавать свои коллекции и приглашать других участников к работе над версиями своих проектов. |
Критерии оценки по дисциплине
Образовательный результат | Тема | Задание | Пример |
---|---|---|---|
Находить, описывать и классифицировать программные средства | Классификация программных средств | Принять участие в обсуждении классификации программных средств, привести собственные примеры программных средств см ACM_Digital_Library
|
Категория: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 | Диаграмма для статьи Эволюционная разработка, Гистограмма |
Использовать различные подходы к организации процесса разработки программного обеспечения. | Организация процесса разработки программного обеспечения | Описать процесс объединения нескольких средств в статье формата рецепты | Категория:DigitalTool + Категория:Scripting_Tutorials + Представить данные датасета в виде графа + Использовать данные МЭШ для моделирования поведения учителей |
Переносить принципы разработки программного обеспечения на разработку учебных материалов и организацию учебного процесса. | Общие принципы разработки программного обеспечения и разработки учебных материалов | Использовать навыки создания диаграмм при описании учебного процесса. Создать в вики план - диаграмму учебного занятия, использую формат IMS Global LD - акты, действия, акторы, средства деятельности | IMS Global LD, Learning Design, VUE |
Использовать различные виды UML диаграмм для описания и проектирования программного обеспечения | UML диаграммы в проектировании программного обеспечения | Создание и описание собственных UML диаграмм | Категория:Diagrams |
Использовать цифровые средства и среды коллективной разработки программного обеспечения. | Среды коллективной разработки программного обеспечения | Действия на сайтах коллективной разработки программного обеспечения. Комменты со ссылками на профайлы и собственные проекты | Stack OverFlow, GitHub, Scratch, Modeling Commons, Snap! |