Programlama dili eğitiminde bilişsel becerileri temel alan bir uygulama önerisi
An application proposal based on cognitive skills in programming language education
Yazar: HİLAL ÇAKIR
Danışman: PROF. DR. BEKİR TEVFİK AKGÜN
İstanbul Okan Üniversitesi / Lisansüstü Eğitim Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2023
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Bu yüksek lisans tez çalışması, lise öğrencilerinin programlama dili eğitimine geçmeden önce çeşitli bilişsel becerilerini ölçmeyi ve geliştirmeyi ve programlama kavramlarını ana dillerinde yapay kodlar ile görerek programlama terminolojisini önceden öğrenmelerini sağlamayı hedeflemektedir. Çalışmada ilk olarak, öğrencilerin çeşitli bilişsel becerilerinden olan yaratıcı problem çözme becerisi, sözel beceri, sayısal beceri, mantıksal akıl yürütme becerisi ve veri analizi becerisi ölçülmüş ve programlama dili eğitiminden önce bu becerileri geliştirmeye yönelik bir akıllı eğitim sistemi kullanılmıştır.
Çalışmaya özel bir lisenin 179 hazırlık öğrencisi gönüllü olarak katılmıştır. Çalışmanın ilk aşamasında, öğrenciler yüksek lisans tezi için yazılmış olan eğitim yazılım sistemi üzerinden genel becerilerini ölçebilecekleri ve geliştirebilecekleri testlere tabi tutulmuşlardır. Daha sonra programlama dili öncesinde programlama konuları ile ilgili konuları ana dillerinde yapay kodlar ile öğrenmişlerdir. Eğitim sürecinde, öğrencilerin öğrenme hızına göre ilerleyen ve zayıf alanlarını pekiştirmelerine olanak sağlayan bir yarı adaptif sistem kullanılmıştır. Ayrıca, eğitim sisteminde bulunan kural tabanlı analiz sistemiyle öğrencilere kişiselleştirilmiş geri bildirim sunulmuştur.
Çalışmanın ikinci aşamasında, öğrenciler geleneksel sınıf ortamında Python programlama dili ile programlama eğitimi almışlardır. Programlama eğitimini takiben öğrenciler programlama sınavına girmiştir. Çeşitli bilişsel becerilerin yanı sıra, öğrencilerin diğer derslerden aldıkları 1. dönem sonu notları, çeşitli kulüp aktiviteleri, daha önce IT projesi yapmış olma durumu gibi faktörler de araştırılmıştır. Çalışmanın son aşamasında, programlama başarısını en çok etkileyen faktörler belirlenmiş ve çeşitli makine öğrenmesi algoritmaları kullanılarak programlama başarı tahmin modeli geliştirilmiştir. Oluşturulan çeşitli programlama başarısı tahmin modellerinden en iyi sonuç vereni Rastgele Aşırı Örnekleme (ROS) metodu ile azınlık verilerinin sayısı arttırıldıktan sonra uygulanmış olan AdaBoost Sınıflandırıcı algoritmasıdır. Değerlendirme metriklerine göre algoritmanın doğruluğu 0.81, kesinliği 0.80, F1-ölçütü 0.86 ve duyarlılığı 0.82 olmuştur. 
Sonuç olarak, bu çalışma genç öğrencilerin programlama becerilerini geliştirmek için bilişsel becerilerin önemini vurgulamıştır. Ayrıca, eğitim süreçlerinin daha etkili bir şekilde tasarlanmasına katkı sağlamak amacıyla bilişsel becerilerin programlama başarısıyla ilişkisini incelemiştir. Bu çalışma ile, genç öğrencilerin programlama öğrenimindeki zorlukları anlamak ve programlama becerilerini geliştirmek için önemli bir adım olması hedeflenmektedir. Ayrıca, bilişsel becerilerin ve diğer araştırılan faktörlerin programlama başarısıyla olan ilişkisini inceleyerek eğitim süreçlerinin daha etkili bir şekilde tasarlanmasına katkı sağlayacaktır.

ANAHTAR KELİMELER: Bilgisayar Programlama Öğretimi, Yaratıcı Problem Çözme, Sözel Beceri, Sayısal Beceri, Mantıksal Akıl Yürütme Becerisi, Veri Analizi Becerisi, Bilişsel Beceriler, Programlama Başarısı Tahmini, Makine Öğrenmesi, AdaBoost Sınıflandırıcı, Ekstra Ağaç Sınıflandırıcı, Rastgele Orman Sınıflandırıcı, Örnekleme Yöntemleri, SMOTE, ROS, RUS.

Abstract:
This master's thesis aims to assess and enhance various cognitive skills of high school students before delving into programming language education. It also aims to familiarize them with programming concepts in their native languages using pseudocodes prior to the actual programming language instruction. In the study's initial phase, the students' cognitive skills, including creative problem-solving, verbal skills, numerical skills, logical reasoning, and data analysis skills, were measured. An intelligent educational system was employed to improve these skills before the programming language education.
A total of 179 preparatory students from a specialized high school voluntarily participated in the study. In the first stage, the students were subjected to tests on an educational software system developed for the master's thesis, which allowed them to assess and improve their general skills. Subsequently, they learned programming concepts in their native languages using pseudocodes. The training process employed a semi-adaptive system that allowed students to progress according to their learning pace and reinforced their weak areas. Additionally, the educational system incorporated a rule-based analysis system that provided personalized feedback to students.
In the study's second phase, the students received programming education with the Python programming language in a traditional classroom setting. Following the programming education, the students took a programming exam. Various factors were examined, including cognitive skills and other factors such as the students' end-of-semester grades in other subjects, participation in various club activities, and previous experience with IT projects. In the final stage of the study, the factors that most influenced programming success were determined, and a programming success prediction model was developed using various machine learning algorithms. The AdaBoost Classifier algorithm yielded the best results among the various programming success prediction models, after applying the Random Oversampling (ROS) method to increase the number of minority data. According to the evaluation metrics, the algorithm achieved an accuracy of 0.81, precision of 0.80, F1-score of 0.86, and recall of 0.82.
In conclusion, this study highlights the importance of cognitive skills in improving young students' programming abilities. It also examines the relationship between cognitive skills and programming success to contribute to the more effective design of educational processes. The aim of this study is to understand the challenges faced by young students in programming education and take a significant step towards improving their programming skills. Additionally, by examining the relationship between cognitive skills, other factors investigated, and programming success, this study will contribute to the more effective design of educational processes.

KEYWORDS: Computer Programming Education, Creative Problem-Solving Ability, Verbal Ability, Quantitative Ability, Logical Reasoning Ability, Data Analysis Ability, Cognitive Skills, Programming Success Prediction, Machine Learning, AdaBoost Classifier, Extra Trees Classifier, Random Forest Classifier, Sampling Methods, SMOTE, ROS, RUS.