Building a Competitive Programming community in Palestine
Tags: education
Published: 2019-12-19 10:47:22

I strongly believe in the opportunities that Palestinian high school students can grasp by getting into the competitive programming field.

6 months after starting my Computer Information Systems Bachelor degree in 2017 I started teaching high school students competitive programming. That was 18 months ago and I still have 2 years left on my degree but I strongly believe in the opportunities that competitive programming affords students.

Competitive programming can raise education levels, increase thinking abilities as well as their coding capabilities. 

Competitive programming is also a path into university scholarships and those that succeed there can represent Palestine in international competitions.
I started learning computer science focusing on competitive programming materials in high school through solving lots of algorithms and data structure problems as well as math and I started to participate in competitions in Palestine and outside, most of the ones in Palestine were for university students and I was participating unofficially, recognizing the network I made and the opportunities I grasped made me realize how competitive programming can be a great way of teaching us not just about coding and creative thinking but also about work ethics and life! it was a lifestyle, not just a hobby.
I started teaching online using video calls and messaging starting from teaching the basics of C++ till advanced topics in computer science focusing on graph theory, data structures, number theory, it was a process of so many problems and fewer materials, focusing on practicality over theory was my main focus.
18 months later I've managed with the help of my students to grow the community of competitive programming for high school students all over Palestine with hundreds of interested students, passionate coders and thinkers, aspiring enhance it's quality more as well as making it bigger.

**What is competitive programming?**

Competitive programming is a **mind sport** that focuses on logical thinking and knowledge in diverse materials in computer science where you solve problems by thinking first and then coding your solution **second**.

You need to make sure to take care of time and memory because you may have the right solution but it might take more time than the judge allows. 

One of the examples I give often is: 
### *Think of a number between 1 and 100 and I have to guess that number what approach would you use?* ###

One of the obvious solutions is to go through every number and ask is it 1? is it 2? etc.. but what if you have to guess a number between 1 and a thousand? a million? even a billion? That approach would take too much time.

Let's go back to our example if you want to guess a number between 1 and 100 let's say the number on your mind is 63 you take the median between 1 and 100 which is 50 and you ask "is the number in your mind equal to 50"? If the answer is “no” then ask is it "greater or less than 50”? Since it's greater now you take the median between 51 and 100 or (51 + 100)/2 which is 75.5 so now we floor to 75 and we ask the same question.

Since it's less than 75 we do the same process (51 + 75) / 2 which is equal to 63 we ask the same question is it equal to 63? YES! 

This approach is a famous approach to an algorithm called binary search, and competitive programming can be extended on other harder problems that you face in competitions and even in job interviews.


I started learning computer science focusing on competitive programming materials in high school through solving lots of algorithms and data structure problems as well as math and I started to participate in competitions in Palestine and outside, most of the ones in Palestine were for university students and I was participating unofficially, recognizing the network I made and the opportunities I grasped made me realize how competitive programming can be a great way of teaching us not just about coding and creative thinking but also about work ethics and life! it was a lifestyle, not just a hobby.

I started teaching online using video calls and messaging starting from teaching the basics of C++ till advanced topics in computer science focusing on graph theory, data structures, number theory, it was a process of so many problems and fewer materials, focusing on practicality over theory was my main focus.

Following that experience, I worked with the [Palestinian Olympiad in Informatics - POI] (https://www.facebook.com/POI.Palestine) in organizing the qualification round for high school students to compete internationally at the [International Olympiad in Informatics](ioinformatics.org), 7 of the students who take the online training ranked top 7 at the qualification round.

18 months later I've managed with the help of my students to grow the community of competitive programming for high school students all over Palestine with hundreds of interested students, passionate coders and thinkers as well as volunteering at the Palestinian ministry of education in arranging competitions for there extracurricular programming classes meanwhile working with a local social organization in teaching competitive programming and problem solving, aspiring to enhance the quality and the capacity of the competitive programming community all over Palestine.