# О 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 и теперь уверен в нем.

Я многое узнал о различных структурах данных и хорошо разобрался в деревьях и графиках.

Хотя мои программы или код могут быть невелики по размеру, но я надеюсь, что однажды они кому-то помогут :-)

И это влияние открытого исходного кода на вас

Я хотел бы поблагодарить Ришаба, наставника этого проекта, за помощь на протяжении всей программы.