Бакалавриат
2023/2024![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Элементы контроля](/f/src/global/i/edu/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Научно-исследовательский семинар "Практические методы повышения качества программного кода"
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1-3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Бугаенко Егор Георгиевич
Язык:
русский
Кредиты:
3
Контактные часы:
48
Программа дисциплины
Аннотация
Курс посвящен разбору реальных примеров программного кода на языках Java, Python, Ruby, JavaScript, Rust. В каждом примере субъективно оцениваются сильные и слабые стороны, с точки зрения качества программирования, правильности использования принципов объектно-ориентированного программирования, паттернов проектирования, и чистоты кода. Занятия проходят в формате "live coding", в котором студенты представляют свой код на обсуждение, а далее всей группой проводится анализ и выработка рекомендаций по улучшению. После посещения семинаров студенты станут лучше понимать практическую ценность объектно-ориентированного подхода.
Цель освоения дисциплины
- Практическая часть курса предполагает самостоятельную работу студентов над анализом крупных open source проектов с целью выявления закономерностей и проблем с качеством
Планируемые результаты обучения
- Студент должен понимать, из чего состоит оценка качества программных продуктов
- Студент должен уметь проводить научные исследования в сфере анализа репозиториев с программным кодом
- Студент должен уметь пользоваться инструментами анализа качества кода
Содержание учебной дисциплины
- Halstead Complexity
- McCabe’s Cyclomatic Complexity
- Perceived Complexity
- LCOMx
- PCC
- LCC
- MMAC and NHD
- Repository size
- Forks and pull requests
- Bugs
- GitHub stars
- Build time
- Algorithmic complexity Big-O
- Code duplication
- Lines of Code
- Hits of Code (Code Churn)
- Coupling
- Test Coverage
- DSQI
- Instruction path length
- Maintainability index
- Function Points
- Mutation Coverage
- Number of methods, classes, etc.
Элементы контроля
- Исследовательская статьяВ рамках курса студенты должны разделиться на группы по 1–3 человека. Каждая группа должна выбрать одну из исследовательских тем, предложенных на первой лекции. По выбранной теме необходимо провести исследование и оформить его результаты в научную статью на английском языке, объемом 7–12 страниц формата acmart/sigplan. Статья должна содержать обязательные разделы: Abstract, Introduction, Related Work, Method, Experimental Results, Discussion, Conclusion и References.
- Работа над исследовательской статьейВ рамках курса студенты должны разделиться на группы по 1–3 человека. Каждая группа должна выбрать одну из исследовательских тем, предложенных на первой лекции. По выбранной теме необходимо провести исследование и оформить его результаты в научную статью на английском языке, объемом 7–12 страниц формата acmart/sigplan. Статья должна содержать обязательные разделы: Abstract, Introduction, Related Work, Method, Experimental Results, Discussion, Conclusion и References.
Промежуточная аттестация
- 2023/2024 3rd moduleОценка за курс складывается из суммы баллов: Студент представил черновик статьи (4+ страниц) в конце первого модуля - 1 балл Студент представил черновик статьи (8+ страниц) в конце второго модуля - 2 балл Студент посетил 10 или более лекций - 1 Студент посетил 20 или более лекций - 2 балл Студент отправил статью на конференцию после разрешения преподавателя - 2 балл Статья принята на конференции CORE-B - 7 балл Статья принята на конференции CORE-A - 10 балл
Список литературы
Рекомендуемая основная литература
- Karl Wiegers. (2013). Creating a Software Engineering Culture. Addison-Wesley Professional.
Рекомендуемая дополнительная литература
- Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (2009). Design Patterns : Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599365