OnurIlgaz / AlgoritmaAkademisi

Bu platformda, çocuklara sunulan problemler, codeforces.com sitesindeki problemlerin yazılım bilgisi gerektirmeyen basitleştirilmiş versiyonlarıdır. Uygulama, çocukların mantıksal düşünme, analitik yetenekler ve sistematik problem çözme becerilerini geliştirerek onları yazılım dünyasına hazırlayan kapsamlı bir eğitim sunar.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Özet

Bu uygulama, erken yaşta yazılıma ilgi duyan çocukları desteklemek amacıyla geliştirilmiştir. Hızla büyüyen teknoloji dünyasında yazılım becerileri büyük önem taşıyor ve bu uygulama, çocuklara problem çözme ve algoritmik düşünme yeteneklerini kazandırmayı hedefliyor. Dart programlama dili ve Flutter frameworkü kullanılarak geliştirilen uygulama, IOS, Android, Windows, MacOS ve Web platformlarında çalışabilmektedir. Algoritma Akademisi adı verilen bu platformda, çocuklara sunulan problemler, codeforces.com sitesindeki problemlerin yazılım bilgisi gerektirmeyen basitleştirilmiş versiyonlarıdır. Bu sayede çocuklar, gerçek dünya problemlerini çözmeyi öğrenirken eğlenceli ve etkileşimli bir deneyim yaşarlar. Uygulama, çocukların mantıksal düşünme, analitik yetenekler ve sistematik problem çözme becerilerini geliştirerek onları yazılım dünyasına hazırlayan kapsamlı bir eğitim sunar.

Amaç

Bu projenin temel amacı, çocukları erken yaşta yazılım dünyasına hazırlamak ve onların problem çözme yeteneklerini geliştirmektir. Teknoloji alanındaki hızlı ilerlemeler ve yazılım sektöründeki rekabetin artması, erken yaşta bu becerilerin kazandırılmasını zorunlu hale getirmiştir. Proje, çocukların analitik düşünme ve algoritmik problem çözme yeteneklerini geliştirmeyi hedeflemektedir. Önerilen proje, mevcut eğitim sistemlerinde eksikliği hissedilen algoritmik düşünme ve problem çözme becerilerine odaklanmaktadır. Çocuklara yönelik eğitici ve eğlenceli bir platform sunarak, yazılım bilgisi gerektirmeyen basitleştirilmiş problemlerle bu eksikliği gidermeyi amaçlamaktadır. Uygulamanın modüler yapısı, farklı zorluk seviyeleri sunarak çocukların kademeli olarak gelişim göstermelerine olanak tanır. Bu proje, Dart programlama dili ve Flutter frameworkü kullanılarak geliştirilmiştir ve bu sayede IOS, Android, Windows, MacOS ve Web platformlarında sorunsuz bir şekilde çalışabilmektedir. Projenin Ar-Ge içeriği, codeforces.com sitesindeki problemleri basitleştirerek çocukların anlayabileceği seviyeye indirilmesini ve bu problemlerin çözülmesi için etkileşimli ve eğitici bir ortam sağlanmasını kapsamaktadır. Sonuç olarak, bu uygulama, çocukların mantıksal düşünme, analitik yetenekler ve sistematik problem çözme becerilerini geliştirerek, onların gelecekteki yazılım kariyerlerine sağlam bir temel atmayı hedeflemektedir. Bu hedefe ulaşmak için geliştirilen eğitici içerik ve kullanıcı dostu arayüz, çocukların yazılım dünyasına ilgi duymalarını ve bu alanda yetkinlik kazanmalarını sağlayacaktır.

Giriş

Günümüzde teknolojinin hızlı ilerlemesi ve dijital dünyadaki değişimler, erken yaşta kodlama ve yazılım becerilerinin öğretilmesini önemli hale getirmiştir. Yazılım ve algoritmik düşünme becerileri, çocukların problem çözme yeteneklerini geliştirmede ve onları geleceğin teknolojik dünyasına hazırlamada kritik rol oynamaktadır. Bu kapsamda yapılan araştırmalar, çocuklara kodlama öğretmenin birçok faydası olduğunu göstermektedir. Öncelikle, kodlama eğitimi çocukların mantıksal düşünme ve problem çözme yeteneklerini geliştirmektedir. Kodlama yaparken çocuklar, büyük bir problemi daha küçük parçalara ayırmayı ve bu parçaları adım adım çözmeyi öğrenirler. Bu süreç, onların analitik düşünme becerilerini güçlendirir ve farklı bakış açıları geliştirmelerine yardımcı olur. Araştırmalar, bu tür becerilerin özellikle erken yaşlarda kazanılmasının, çocukların akademik ve sosyal başarılarını artırdığını göstermektedir (Lye & Koh, 2014). Ayrıca, kodlama eğitimi çocuklara sabırlı olmayı ve hatalardan öğrenmeyi öğretir. Programlama, sıklıkla deneme yanılma yöntemiyle ilerleyen bir süreçtir ve bu süreçte yapılan hatalar, öğrenme fırsatlarına dönüşür. Çocuklar, kodlama yaparken karşılaştıkları hataları çözmek için çözüm yolları ararken, eleştirel düşünme ve dayanıklılık becerilerini de geliştirirler (Grover & Pea, 2013). Kodlama eğitiminin bir diğer önemli faydası, çocukların yaratıcı düşünme ve üretkenlik becerilerini artırmasıdır. Kodlama sayesinde çocuklar, kendi oyunlarını, uygulamalarını veya web sitelerini tasarlayabilirler. Bu da onların özgüvenlerini artırır ve kendi projelerini başlatma konusunda teşvik eder. Yapılan araştırmalar, kodlama eğitiminin çocukların yaratıcı potansiyellerini açığa çıkardığını ve onların inovasyon yeteneklerini geliştirdiğini göstermektedir (Bers, 2010). Bununla birlikte, çocukların kodlama öğrenmesi, teknolojiye sadece tüketici olarak değil, üretici olarak da katılmalarını sağlar. Çocuklar, teknolojiye dair temel bilgileri öğrendiklerinde, bu teknolojileri daha etkin ve yaratıcı bir şekilde kullanabilir ve geliştirebilirler. Kodlama eğitimi, çocukların dijital okuryazarlık becerilerini artırarak onları geleceğin iş dünyasına hazırlamaktadır (Wing, 2006). Bu araştırmalar, çocuklara erken yaşta kodlama eğitimi verilmesinin, onların gelecekteki eğitim ve kariyer hayatlarında önemli avantajlar sağladığını ortaya koymaktadır. Bu nedenle, geliştirilen uygulama, çocukların yazılım ve algoritmik düşünme becerilerini eğlenceli ve etkili bir şekilde geliştirmeyi amaçlamaktadır.

Yöntem

Uygulamayı yazarken ve şu anda uygulamada bulunan 3 problemi kurarken birden çok kriteri dikkate alınmıştır. Bu kriterler:

  1. Bu problemi tamamen rastgele bir şekilde ve herhangi bir mantık muhakeme kullanmadan çözmek mümkün olmamalı.
  2. Problemlerin cevapları belirli ve mümkünse zaman karmaşıklığı olarak lineere yakın bir algoritma ile çözülebilmeli.
  3. Problemler görsel olarak sadece yazılardan oluşmamalı ve çocuğa eğlenceli bir ara yüz sunmalı.
  4. Problem tekrar başlatıldığında rastgele üretilmiş kuralları aynı olan yeni bir problem ortaya çıkmalı ve bu sayede oyun birden çok kez tekrar oynanılabilmeli. Bu kriterler ışığında bir problem bulmanın zorluğundan ötürü şu anlık sadece üç tane oyun yazılabilmiştir. Ancak ileride bu sayı kodun içinde bulunan Game class sayesinde modüler olarak genişletilebilir. Yeni bir bölüm yazan kişinin sadece Game class inheritleyerek bir oyun yazması ve bunun ardından Main class içindeki oyunlar listesine bu class’ı eklemesi yeterlidir. İlk ve üçüncü soru yazılırken codeforces.com sitesindeki sorulardan doğrudan esinlenilmiştir. Bu sayede bilgisayar olimpiyatına yönelimi arttırmak hedeflenmiştir. İkinci soru ise bilgisayar bilimlerinde aşırı popüler olan bir dinamik programlama sorusu olan knapsack probleminin elle çözülebilmesi amacıyla çanta kapasitesinin düşürülmüş hali sorulmuştur.

Kullanıcı Ara Yüzü (UI)

Arayüz aslında Game class tarafından inheritlenmiş bir ana sayfa ile başlar (Görsel 1). Main class oyunları işlemekle mesajları kullanıcıya göndermekle ve yukarı bardaki butonları kullanılabilir kılmaya yarayan fonksiyonları içerir. Yukarı bardaki butonlar sırasıyla oyunu yeniden başlatır, kullanıcıya oyunun nasıl oynandığını açıklar ve sonraki oyuna atlanmasını sağlar.

Bulgular

Algoritma Akademisi yirmi farklı liseli öğrenciye problemler sunulmuştur ve soruların metinlerinin ağır geldiğine karar verilmiştir. Bu sebepten ötürü yazılar düzenlenmiş ve üçüncü sorunun açıklamasına görsel eklenmiştir. Ayrıca alınan dönütler sonucunda oyunun interaktif ve mobilde oynatılabilir olmasının çocukta oynama hevesini arttırdığı gözlenmiştir. Aynı zamanda uygulamadaki bulmaca sayısının az olması daha fazla kişide test edebilmemize olanak sağlamasına rağmen can sıkıcı olmuştur.

Öneriler

Algoritma Akademisi uygulama mağazalarında yayımlanarak daha geniş bir kitleye sunulabilir ve daha fazla araştırma konularına tabi tutulabilir. Algoritma Akademisi yüzde yüz açık kaynak bir uygulamadır. Bu sebepten ötürü farklı yazılımcılardan ve bilgisayar olimpiyatçılarından da destek alınarak yeni problemler yazılabilir ve bu sayede oyun çok daha makul bir düzeyde uzatılabilir.

Kaynaklar

  • Bers, M. U. (2010). The TangibleK Robotics Program: Applied Computational Thinking for Young Children. Early Childhood Research & Practice, 12(2).
  • Grover, S., & Pea, R. (2013). Computational Thinking in K–12: A Review of the State of the Field. Educational Researcher, 42(1), 38-43.
  • Lye, S. Y., & Koh, J. H. L. (2014). Review on Teaching and Learning of Computational Thinking Through Programming: What is Next for K-12? Computers in Human Behavior, 41, 51-61.
  • Wing, J. M. (2006). Computational Thinking. Communications of the ACM, 49(3), 33- 35.

About

Bu platformda, çocuklara sunulan problemler, codeforces.com sitesindeki problemlerin yazılım bilgisi gerektirmeyen basitleştirilmiş versiyonlarıdır. Uygulama, çocukların mantıksal düşünme, analitik yetenekler ve sistematik problem çözme becerilerini geliştirerek onları yazılım dünyasına hazırlayan kapsamlı bir eğitim sunar.


Languages

Language:C++ 33.3%Language:Dart 31.1%Language:CMake 28.1%Language:HTML 2.7%Language:Swift 2.5%Language:C 2.1%Language:Kotlin 0.2%Language:Objective-C 0.1%