vibe_coding_101-ivan_asatrian

0
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
CONTRIBUTING.md

Курс по Вайбкодингу: Анализ данных с Python

📚 Описание курса

Комплексный курс по практическому применению AI-кодинга (вайбкодинга) для анализа данных с использованием Python. Студенты будут:

  1. Практиковаться с LLM: использовать платформы для AI-кодинга
  2. Работать с Git: управлять версиями кода через GitVerse
  3. Анализировать данные: написать код для анализа 10 различных датасетов
  4. Документировать: создавать качественную документацию и комментарии
  5. Тестировать: писать unit тесты для валидации функциональности
  6. Автопроверку: отправлять решения на проверку через Gitverse CI/CD

🎯 Структура задания

10 вариантов анализа данных

Каждый студент получает один случайный вариант из 10 возможных:

#НазваниеДатасетОбъем кодаВыход
1IMDb Sentiment Analysis
imdb
50-100 строкJSON + CSV + PNG
2AG News Classification
ag_news
50-100 строкJSON + PNG
3Wikipedia Word Frequency
wikipedia
60-110 строкJSON + PNG
4MNIST Digit Analysis
ylecun/mnist
60-120 строкJSON + PNG
5SQuAD Q&A Dataset
rajpurkar/squad
50-100 строкJSON + PNG
6BoolQ Yes/No Questions
google/boolq
50-100 строкJSON + PNG
7Multi-NLI Entailment
nyu-mll/multi_nli
55-105 строкJSON + PNG
8Iris Classification
sklearn
50-100 строкJSON + PNG
9GLUE MRPC Similarity
nyu-mll/glue
50-100 строкJSON + PNG
10DBpedia Categories
dbpedia_14
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. Установка зависимостей

Файл

requirements.txt
:

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 автоматически:

  1. Setup - устанавливает зависимости
  2. Linting - проверяет PEP8 (flake8)
  3. Testing - запускает unit тесты (pytest)
  4. Grading - автопроверка (autograder.py)
  5. Reporting - комментарий в PR с результатами

📝 Типичные ошибки

❌ Неправильно

✅ Правильно


🎓 Учебные ресурсы

  1. PEP 8 Style Guide: https://pep8.org/
  2. Google Python Style Guide: https://google.github.io/styleguide/pyguide.html
  3. Hugging Face Datasets: https://huggingface.co/datasets
  4. Matplotlib документация: https://matplotlib.org/
  5. Pytest гайд: https://docs.pytest.org/

❓ FAQ

Q: Могу ли я использовать ChatGPT для написания кода? A: Да, это цель этого курса! Но вы должны понимать код и адаптировать его под вашу задачу.

Q: Должен ли я написать весь код с нуля? A: Нет. Используйте LLM, но убедитесь, что:

  • Код действительно решает задачу
  • У вас есть unit тесты
  • У вас есть документация

Q: Что если autograder выдает ошибку? A: Проверьте:

  1. Загружается ли датасет корректно
  2. Все ли выходные файлы создаются
  3. Все ли тесты проходят локально

Q: Можно ли использовать разные библиотеки? A: Нужно использовать стандартные: numpy, pandas, matplotlib. Другие требуют одобрения.


Удачи с заданием! 🚀