vibe_coding_101-ivan_asatrian
Курс по Вайбкодингу: Анализ данных с Python
📚 Описание курса
Комплексный курс по практическому применению AI-кодинга (вайбкодинга) для анализа данных с использованием Python. Студенты будут:
- Практиковаться с LLM: использовать платформы для AI-кодинга
- Работать с Git: управлять версиями кода через GitVerse
- Анализировать данные: написать код для анализа 10 различных датасетов
- Документировать: создавать качественную документацию и комментарии
- Тестировать: писать unit тесты для валидации функциональности
- Автопроверку: отправлять решения на проверку через Gitverse CI/CD
🎯 Структура задания
10 вариантов анализа данных
Каждый студент получает один случайный вариант из 10 возможных:
| # | Название | Датасет | Объем кода | Выход |
|---|---|---|---|---|
| 1 | IMDb Sentiment Analysis | | 50-100 строк | JSON + CSV + PNG |
| 2 | AG News Classification | | 50-100 строк | JSON + PNG |
| 3 | Wikipedia Word Frequency | | 60-110 строк | JSON + PNG |
| 4 | MNIST Digit Analysis | | 60-120 строк | JSON + PNG |
| 5 | SQuAD Q&A Dataset | | 50-100 строк | JSON + PNG |
| 6 | BoolQ Yes/No Questions | | 50-100 строк | JSON + PNG |
| 7 | Multi-NLI Entailment | | 55-105 строк | JSON + PNG |
| 8 | Iris Classification | | 50-100 строк | JSON + PNG |
| 9 | GLUE MRPC Similarity | | 50-100 строк | JSON + PNG |
| 10 | DBpedia Categories | | 60-110 строк | JSON + PNG |
Распределение происходит случайным образом при создании новой ветки (в которой вы и работаете) После создания ветки надо подождать некоторое время, возможно обновить странницу (не забыв перейти в ветку) На всякий случай заходим в CI/CD и проверяем что проверка pick-assignment отработала
Структура решения
submission/
├── assignment.py # Основное решение (50-100 строк)
├── README.md # Документация
├── results.json # Результаты анализа
└── visualization.png # График/диаграмма
└── test.py # файл с проверками
✅ Требования и критерии оценки
1. Качество кода
Проверяется:
- ✅ PEP 8 соответствие (flake8 проверка)
- ✅ Type hints в функциях (
)def func(x: int) -> str: - ✅ Длина строк ≤ 100 символов
- ✅ Имена переменных логичные и читаемые
- ✅ Отсутствие дублирования кода (DRY принцип)
2. Документация
Требуется:
- ✅ Module docstring (описание модуля в начале файла)
- ✅ Function docstrings (для каждой функции)
- ✅ Inline комментарии для сложной логики
- ✅ README.md с инструкциями
Структура docstring:
3. Unit тесты
Требуется:
- ✅ Файл
существуетtest.py - ✅ Минимум 5+ функций протестировано
- ✅ Все тесты проходят успешно
- ✅ Покрытие кода > 50%
Пример:
4. Функциональность
Проверяется:
- ✅ Выходной формат правильный (JSON/CSV/PNG)
- ✅ Вычисления математически верны
- ✅ Нет placeholder решений ("hello world")
- ✅ Визуализация информативна
- ✅ Статистика логична
Пример неправильного решения:
Пример правильного решения:
🚀 Как начать
1. Установка зависимостей
Файл :
datasets>=2.10.0
numpy>=1.24.0
pandas>=2.0.0
matplotlib>=3.7.0
scikit-learn>=1.3.0
wordcloud>=1.9.0
flake8>=6.0.0
pytest>=7.0.0
2. Работа с вашим вариантом
3. Тестирование локально
4. Pull Request
Создайте Запрос на слияние в GirVerse. Автоматически запустятся GirVerse CI/CD для:
- Проверки PEP8
- Запуска unit тестов
- Запуска автопроверки
- Комментария с результатами
💡 Использование LLM для вайбкодинга
Пример диалога с ChatGPT:
User: Мне нужно написать функцию для анализа тональности отзывов IMDb.
Должны быть: распределение позитивных/негативных, статистика длины,
топ слова, визуализация.
ChatGPT: Вот функция analyze_sentiment_distribution...
User: Добавь type hints и docstring согласно Google style
ChatGPT:
def analyze_sentiment(dataset: List[Dict]) -> Dict[str, Any]:
"""
Анализирует тональность отзывов.
Args:
dataset: Список словарей с полями 'text' и 'label'.
Returns:
Dict с ключами: positive, negative, positive_percent, negative_percent.
"""
...
📊 Примеры выводов
JSON результаты (imdb_results.json)
CSV результаты (imdb_top_words.csv)
word,frequency
movie,245
film,189
great,156
good,143
bad,132
PNG визуализация
Примеры графиков:
- Гистограммы: распределение по категориям
- Box plots: статистика по признакам
- Scatter plots: корреляции между переменными
- Word clouds: облака слов
- Pie charts: круговые диаграммы
GitVerse CI/CD
После push-a в GitVerse автоматически:
- Setup - устанавливает зависимости
- Linting - проверяет PEP8 (flake8)
- Testing - запускает unit тесты (pytest)
- Grading - автопроверка (autograder.py)
- Reporting - комментарий в PR с результатами
📝 Типичные ошибки
❌ Неправильно
✅ Правильно
🎓 Учебные ресурсы
- PEP 8 Style Guide: https://pep8.org/
- Google Python Style Guide: https://google.github.io/styleguide/pyguide.html
- Hugging Face Datasets: https://huggingface.co/datasets
- Matplotlib документация: https://matplotlib.org/
- Pytest гайд: https://docs.pytest.org/
❓ FAQ
Q: Могу ли я использовать ChatGPT для написания кода? A: Да, это цель этого курса! Но вы должны понимать код и адаптировать его под вашу задачу.
Q: Должен ли я написать весь код с нуля? A: Нет. Используйте LLM, но убедитесь, что:
- Код действительно решает задачу
- У вас есть unit тесты
- У вас есть документация
Q: Что если autograder выдает ошибку? A: Проверьте:
- Загружается ли датасет корректно
- Все ли выходные файлы создаются
- Все ли тесты проходят локально
Q: Можно ли использовать разные библиотеки? A: Нужно использовать стандартные: numpy, pandas, matplotlib. Другие требуют одобрения.
Удачи с заданием! 🚀