# О KWOC
KWOC (Kharagpur Winter of Code) - это 5-недельная онлайн-программа, организуемая KOSS (Kharagpur Open Source Society) IIT-Kharagpur каждый год в декабре для студентов различных колледжей, которые плохо знакомы с разработкой программного обеспечения с открытым исходным кодом.
# Выбор проектов
Перед началом периода кодирования нам дали список проектов, в которые мы могли бы внести свой вклад, начиная от проектов веб-разработки и заканчивая проектами разработки приложений для Android и проектами Python.
Я знал C++ и недавно изучал структуры данных в рамках моей учебной программы в колледже. Я хотел узнать о них подробнее и укрепить свои концепции.
При поиске проектов я наткнулся на проект-
Структура данных и алгоритмы конкурентного программирования
который содержал различные алгоритмы и структуры данных, используемые в соревновательном программировании. Наставником этого проекта был Ришаб Гарг.
Когда меня учили в колледже, структуры данных пробудили во мне интерес, и мне нравилось заниматься конкурентным программированием онлайн, поэтому я решил, что буду работать над своими структурами данных и вносить свой вклад в этот проект.
Первый пулреквест
PR # 231
Тут же я решил продолжить работу с основ. Я снова узнал о стеках, очередях. Потом я узнал больше о деревьях. Я сделал свой первый выпуск. Это была реализация предварительного заказа, почтового заказа и обхода двоичного дерева по порядку.
Я написал код C++ для создания двоичного дерева, а затем выполнял на нем предварительный, обратный и неупорядоченный обход. Затем я сделал PR и отправил его на рассмотрение. Мой наставник вскоре просмотрел его, и он был объединен с исходным кодом.
Второй запрос на включение
PR #265
Затем я узнал об обходе порядка уровней в бинарном дереве и реализовал его. Я открыл вопрос об обходе порядка уровней в бинарных деревьях. Затем я написал код для создания двоичного дерева на C++, а затем выполнил обход по порядку уровней.
Я отправил свой PR, и через некоторое время он также был объединен
Третий запрос на включение
PR #270
К этому времени я уже был уверен в бинарных деревьях и начал работать над графами.
Хотя графы были немного сложнее, чем деревья, но, попрактиковавшись с графами в течение некоторого времени, я освоился.
Я изучил BFS, обход графов DFS и другие темы. После этого я создал задачу, которая заключалась в том, чтобы найти узлы, имеющие максимальную и минимальную степень во взвешенном неориентированном графе.
Я написал код для ввода всех вершин графа, а также всех ребер и весов этих ребер графа. Затем я сохранил их в виде матрицы смежности. А затем написал функцию для нахождения вершин максимальной и минимальной степени графа. А потом я сделал PR для этого и представил его.
Через некоторое время этот PR также был объединен с исходным кодом.
Я немного опоздал с отправкой этого PR, и он был рассмотрен после окончания периода кодирования, поэтому он не был засчитан в таблице лидеров, но все же был объединен, и я этому рад.
# Резюме моей работы
Таким образом, я помог создать программу, которая показывает предварительный, обратный и неупорядоченный обход двоичного дерева.
Также программа для отображения обхода порядка уровней в двоичном дереве.
Наконец, я сделал программу для получения максимальных и минимальных узлов степени в графе.
# Вывод
Я доволен тем, что достиг всех целей, которые ставил перед собой перед участием в KWOC.
Во-первых, я (наконец-то) научился правильно использовать git и теперь уверен в нем.
Я многое узнал о различных структурах данных и хорошо разобрался в деревьях и графиках.
Хотя мои программы или код могут быть невелики по размеру, но я надеюсь, что однажды они кому-то помогут :-)
И это влияние открытого исходного кода на вас
Я хотел бы поблагодарить Ришаба, наставника этого проекта, за помощь на протяжении всей программы.