You are on page 1of 6

Programlama Dilleri Öğretimine Bir Model Önerisi: Robot

Programlama
(Blind Copy)
Özet: Bilgisayar programlama, farklı becerilerin aynı anda kullanılmasını gerektiren bir
problem çözme ve üretim sürecidir. Bu becerileri kazandırmak için gerekli programlama
eğitimi ve öğretimi farklı kurum ve kademelerde kimi zaman zorunlu dersler olarak, kimi
zaman da isteğe bağlı kurslar şeklinde verilmektedir. Eğitimlerde başarıyı etkileyen olası
faktörler arasında öğrencilerin programlamaya karşı tutumu, bilgisayar (yada bilişim
teknolojileri) okuryazarlığı konusunda ön yeterlikleri ve seçilen dil ile amaçlanan
becerilerin uyumu sayılabilir. Bu faktörlerin biri ya da bir kaçı öğrencilerin programlama
konusundaki başarılarını etkilediği gibi, bu becerilerin farklı alanlarda kullanılmasını da
engellemektedir. Örneğin kullanılan dilden bağımsız olarak programlama becerisi,
mantıksal düşünme ve algoritma oluşturma gibi bir çok alanda problem çözmeye yönelik
becerileri ve hatta analitik düşünme becerisini de kazandırabilir.
Bu çalışmada, programlama becerisi kazandırmak, bir programlama dilinin öğrenimini
kolaylaştırmak, motivasyonu yükseltmek ve başarıyı arttırmak için öğretim sürecinde
robot programlama tekniklerini kullanan bir model önerilmektedir. Robot programlama
dünyada ve son yıllarda Türkiye’de de farklı amaçlarla yapılan etkinliklerdir. Robot
programlama etkinlikleri, programlama sürecini daha ilgi çekici hale getirmekte, yapılan
öğretim etkinliklerinin öğrenciler tarafından daha anlamlı algılanmasını sağlamakta,
rekabet ve takım çalışması gibi yeni öğrenme kuramlarına dayanan yöntemlerin
kullanılmasına olanak sağlamaktadır. Özellikle son yıllarda bir çok öğrenci için erişimi
kolaylaşan ve ucuzlayan robotların programlama alanında gerekli becerilerin
kazanılmasına önemli katkılar sağlayacağı düşünülmektedir.

Anahtar Kelimeler: Robot programlama, programlama becerisi, programlama dilleri


öğretimi

A Model Proposed for Teaching Programming Languages: Robotic Programming

Abstract: Computer programming is a problem solving and production process where


different skills are executed simultaneously. Gaining the skills necessary for computer
programming is possible in various schools and grades via either compulsory courses or
voluntarily courses. Among the possible factors affecting the success in those tranings,
students attitudes and perceptions toward the programming, adecuacy in computer (or
information technologies) literacy and consistency of the selected programming language
and goals of the training. One or more of these factors may both affect the success of
students in programming and impede the application of those skills in other field. For
example, independent from the programming language selected, programming can
provide problem solving skills like logical thinking and algoritm construction, and
analitic thinking abilities.

1
In this study, in order to provide programming skills, to make learning programming
language easy, to raise motivation and increase the success of students, a model using
robotic programming techniques is proposed. Robotic programming activities makes
process of programming interesting, render teaching activities more meaningful and
concerete for students, allow instructional methods based on new educational theories to
be applied like competition and team working. It is thought that, robots which have been
becoming cheaper and more accessible by the students in recent years will contribute to
gain the skills necessary for programming.

Keywords: Robotic Programming, programming skills, teaching programming languages

1. Programlama Dili Nedir? Günümüzde programlama dilini


öğrenmek isteyen veya uzmanlık alanları
Elektronik cihazların farklı amaçlara gereği bilmek zorunda olan kişiler, farklı
hizmet edebilmek için programlanmaları kurum ve kademelerde bu eğitimi
gerekir. Programlama dili, bu amaç için almaktadırlar. Dünyada ve Türkiye’de
hazırlanmış özel kelime ve sembollerden eğitimin ilk kademesinden (ilköğretim)
oluşan komutlar bütünüdür. Yazılan son kademesine kadar farklı öğretim
komutlar sonucunda bilgisayarın belli bir programlarında programlama dili dersleri
iş yapmasını sağlayan programlar, yani verilmektedir. Öte taraftan özel kurslar ile
yazılımlar, ortaya çıkar. Farklı kişilere ihtiyaçları doğrultusunda
bilgisayarlar ve teknolojiler için programlama dersleri de verilmektedir.
oluşturulmuş neredeyse sayılamayacak Verilen eğitimlerin amaçları farklı
kadar çok programlama dili mevcuttur. olabilmektedir. Farklı düzeylerde
Her bir dilin kendine özgü deyim ve programlama ile oluşturulan üründen çok,
yazım kuralları ile amaca uygun komutlar problem çözme becerilerinin gelişmesi
oluşturulur ve çalıştırılır. Dile özgü için de dersler verilmektedir. Örneğin
komutların yazılması süreci de kodlama üniversitelerde ve meslek liselerinde
ya da programlama, ortaya çıkan son ürün programlamacı olmak için gerekli
ise program ya da uygulama olarak beceriler kazandırılmaktadır.
adlandırılır.
Bu derslerin büyük bir çoğunluğu
2. Programlama Dilleri Öğretimi bilgisayar laboratuvarlarında dersin
sorumlusu tarafından, önce düz anlatım
Programlama dilleri, bilgisayarın ilk ardından da uygulama etkinlikleri ile
ortaya çıkışından itibaren var olmuşlardır. verilmektedir. Kişilerin tek başlarına
Özellikle bilgisayarların kişisel olarak kendi olanakları ile programlama dili
satın alınabilir hale gelmesinden sonra öğrenme şansları da vardır, ancak genelde
(1980 ve sonrası) artan bireysel olarak donanım ve yazılım gereksinimi
program yazma isteğiyle birlikte, olmasından veya ön yeterlilik olan diğer
programlama dili eğitimi farklı eğitim bazı becerilere sahip olunmamasından
kurumlarında ve kademelerinde verilmeye dolayı programlama dilleri, sınıf ve
başlanmıştır. laboratuvarda verilen dersler ile daha
etkili bir şekilde öğrenilmektedir.

2
derste edinilmesi zor olan bir çok beceriye
2.1. Farklı Öğretim Kademeleri ihtiyaç duymasıdır. Bir programcının iyi
bir program geliştirebilmesi için dilden
Okudukları programlar gereği bilişim bağımsız olarak çözüm için bir algoritma
alanında meslek sahibi olacak bilgisayar geliştirmesi, daha sonra o algoritmaya
mühendisleri, bilgisayar programcıları, yönelik kodları yazması, olası hataları
bilgisayar öğretmenleri ve diğer alan düzeltmesi ve en sonunda ürünü ortaya
öğrencileri üniversitelerin akademik çıkarması gerekmektedir. Kimi büyük
programları gereği programlama yazılım geliştirme projelerinde bu
derslerini almaktadırlar. Türkiye’de ilk ve adımların farklı takımlar tarafından
orta öğretimde verilen bilgisayar yürütüldüğünü düşünürsek, bu becerilerin
okuryazarlığı derslerinin bazı ne kadar önemli olduğu anlaşılabilir. Bu
aşamalarında da programlama yer nedenle, eğitim programları
almaktadır. Meslek ve teknik liselerde ise incelendiğinde programcılık becerilerinin
uzun yıllardır bilgisayar bölümlerinde birkaç derste kazandırıldığı
programcılık eğitimi verilmektedir. görülmektedir. Genellikle ilk derslerde
Dünyada ise ilköğretim eğitim programlama dilinin kendisinden çok
programında 10. ve 11. sınıflardaki algoritma geliştirmeye yönelik içerik
bilgisayar derslerinde programlama sunulmaktadır. Daha sonraki derslerde
öğrenimi yer almaktadır [1]. hedeflenen dil ile problem çözmeye
yoğunlaşılmaktadır.
2.2. Klasik Öğretim Teknikleri
2.3. Programlama Sürecinde Başarı
Çok farklı programlama dilleri olduğu Faktörleri
halde, bu dillerin eğitimi üniversitelerde
veya liselerde çok benzer öğretim Programlama dili derslerinde başarıyı
teknikleri ile verilmektedir. Bu teknik bir etkileyen bir çok faktör vardır. Bunlardan
uzman eşliğinde bilgisayar başında bire bazıları motivasyon , programlamaya
bir kod yazarak dili öğrenmeye karşı tutum, programlama dilinin
çalışmaktır. Bu “uygulama” ağırlıklı karmaşıklığı [2] ve öğretim yöntem ve
etkinliklere genellikle teorik bilginin düz tasarımı olarak sıralanabilir [3].
anlatım veya sunum yöntemi ile verildiği
ön derslerle başlanır. Her hafta önce Programlama eğitimi sırasında düşük olan
öğrenilecek konu ile ilgili sunum ya da motivasyon, öğrencinin zamanla dersten
anlatım yapılır, ardından program satır soğumasına ve çaba sarf etmemesine yol
satır yazılıp açıklanarak öğrencilere açabilir. Programlama sürecinin uzun
gösterim yapılır, daha sonra da saatler boyunca bilgisayar önünde
laboratuvarlarda öğrencilerin bireysel çalışmayı gerektiren bir iş olduğunu
olarak kod yazacağı etkinlikler uygulanır. düşünen bir çok öğrenci, bu süreçleri
Dersler 2 ya da 3 saat teorik dersten sonra sıkıcı bulabilir.
yine 2 ya da 3 saatlik uygulama saatleri
şeklinde 14 - 15 haftalık dönemlerde Programlamaya karşı olumsuz tutum ve
“gösterip-yaptırma” tekniği kullanılarak algılar, diğer derslerde de olabileceği gibi,
verilir. Derslerin değerlendirmeleri yazılı başarıyı engelleyen önemli bir faktördür.
sınavlar, uygulama sınavlar ve proje Programlama dili eğitiminin kendi
geliştirme süreçleri ile yapılmaktadır. kariyerleri için önem taşımadığını
düşünen bir çok öğrencide de yine
Programlama derslerinin hiç biri tek olumsuz tutumlar yer almaktadır. Örneğin
başına öğrencinin iyi bir programcı matematik öğretmeni olacak bir aday dört
olabilmesi amacını taşımamaktadır. yıllık üniversite eğitimi sırasında 3 adet
Bunun sebebi, programlamanın, tek bir programlama ders almaktadır. Bu dersleri
3
kendi alanlarıyla alakasız olarak gören bir Pek çok programlama dili ve
çok öğrenci programlama dili derslerine programlama mantığının öğretilmesindeki
karşı ilgisiz ve isteksiz olarak devam güçlükler göz önüne alınarak uygulanmış
ediyor olabilir. Bunlara ek olarak farklı yaklaşımlar vardır. Örneğin,
bilgisayar ve teknoloji kullanımına kullanılan dilin kendisinin “zor” olmasına
yönelik genel tutumlar da programlama karşı daha basit diller (mini language) [4]
dili derslerinde etkilidir. önerilmiştir. Bu tür diller yazılım
geliştirmekten çok programlama dili
Eğitim için seçilen programla dili eğitimi için geliştirilmiş, basit
başarıyı etkileyebilir [4]. Programlama komutlardan ve farklı etkileşim teknikleri
dilleri, çoğunlukla, “öğrenilmeleri kolay ile donatılmış dillerdir.
olsun” kaygısıyla geliştirilmemişlerdir
[2]. Bu nedenle özellikle ilk programlama Başka bir yaklaşım konunun farklı
dili derslerinde, seçilen dilin karmaşıklığı derslerde farklı dilleri ve öğretim
öğrenmeyi güçleştirebilir. İlk derslerde tekniklerini kullanarak öğretilmesi
asıl amaç dilden bağımsız olarak olabilir.
algoritma mantığının öğretilmesidir. Daha
sonra istenilen dile özgü deneyim Sonuçta, programlama dili öğretilirken
kazanılması beklenir. Ancak öğrenciler çoğu işlem ve kavram öğrenciler
geliştirdikleri algoritmaları denemek için açısından soyut kalmakta ve öğrenciler
de bir programlama dili kullanmalıdırlar. öğrendikleri bilgileri somutlaştırmakta
Diğer bir ifade ile, seçilen bir zorlanmaktadır-lar. Robot programlama
programlama dilinin yazım kurallarına bu sürecin somut-laştırılmasını
uygun komutlar yazılır ve çalıştırılır. Eğer sağlayacak bir yaklaşım olabilir.
dilin yazım kuralları çok katı ise, yazım
ortamı öğrenciye anlık destek vermiyorsa, Robot programlama konusunda farklı
ya da hata ayıklama araçları gelişmemiş boyutta robotlardan ve uyumlu dillerden
ise, öğrenci kodlama aşamasındaki bahsedilebilir. Bu çalışmada ülkemizde
zorluklardan dolayı algoritmaya temin edilmesi kolay bir platform olan
odaklanamayabilir. Analiz etmekten çok Arduino™ [5] robot ürünleri örnek olarak
ezberlemenin ve hatırlamaya çalışmanın kullanılmıştır.
arasında vaktini harcar, sonuç olarak
motivasyonu ve başarısı düşebilir. Arduino bir giriş/çıkış (input/output) kartı
ve Java tabanlı bir dilin yer aldığı
Klasik öğretim teknikleri de programlama geliştirme ortamından oluşan bir fiziksel
başarısını etkileyebilir [2]. Programlama programlama platformudur. Arduino tek
başından sonuna farklı bilgi ve becerilerin başına çalışan etkileşimli nesneler
kullanılması gereken bir süreçtir. geliştirmek için kullanılabileceği gibi
Öğrenciler daha önceden var olan bilgisayar üzerinde çalışan yazılımlara da
akademik alışkanlıklarından derste (ör: Adobe Flash) bağlanabilir. Arduino
yeterince yararlanamayabilir. Ezberi çok IDE kod editörü ve derleyici olarak görev
iyi olan bir öğrenci sadece komutları yapan, aynı zamanda derlenen programı
hatırlayarak problemi çözemez. Okuması karta yükleme işlemini de yapabilen, her
kuvvetli bir öğrenci de yeni bir problemde platformda çalışabilen Java programlama
algoritma geliştiremeyebilir. Kuramsal dilinde yazılmış bir uygulamadır.
bilginin uygulama ile “problem çözme” Geliştirme ortamı, sanatçıları
becerisi haline gelmesi bir çok öğrencide programlamayla tanıştırmak için
ulaşılmayan bir hedef olarak kalabilir. geliştirilmiş Processing™ [6]
yazılımından yola çıkılarak geliştirilmiştir
3. Öneri: Robot Programlama [8]. Açık donanım ve açık kaynak kodlu
bir mimariye sahip olan Arduino
4
kullanımı için hazır üretilmiş kartlar satın
alınabilir, ayrıca Arduino donanım
referans tasarımları Creative Commons
dağıtılmaktadır ve Arduino web
sitesinden indirilebilir. Aşağıda tasarım ve
uygulama aşamalarından kısaca
bahsedilmiş olan örnek uygulama fiziksel
platformların çalışma prensibini
özetlemektedir.

3.1. Örnek Bir Uygulama

Arduino robot programlama paket ile


oluşturulabilecek uygulamalardan bir
tanesi, üzerine basılınca bunu algılayıp
alarm veren küçük bir robot ve
programlaması. Resim 1’de görüldüğü
üzere basit bağlantılar ile “basınç
algılayıcısı” hazır hale geliyor.

Resim 2: Arduino Kod Editörü

Yazılan kodlar Java. Daha sonra tek bir


düğme ile robota yükleniyor. Yükleme
tamamlanınca robot çalışmaya başlıyor.
Eğer basınç algılayıcısının üzerine bir
cisim ile dokunulursa (Resim 3’de
parmak basılıyor), robotun üzerindeki bir
devreye akım verip (örnekte sarı led
yanıyor) olası başka işlemi yapılabiliyor.

Resim 1: Hazır Robot

Bilgisayara bağlı ucu ile Resim 2’deki


program yazılıp robota yükleniyor.

Resim 3: Robot Basıncı Algılar Halde

Aynı zamanda, bilgisayar ekranında


basınç algılayıcısının algıladığı basınçta
rakamsal olarak sürekli izlenebiliyor
(Resim 4).

5
Erişim Tarihi 29 Aralık 2010.
http://www.csta.
acm.org/Curriculum/sub/CurrFiles/K-
12ModelCurr2ndEd.pdf, (2003)

[2] Jenkins, T. “On the difficulty of


learning to program”. In 3rd annual
Conference of LTSN-ICS,
Loughbrorough University,
Leicestershire, UK (2002)

[3] Mayer, R. E. “Some conditions of


meaningful learning for computer
programming: Advance organizers and
Resim 4: Anlık Basınç Değerleri subject control of frame order”. Journal
of Educational Psychology, 68 (2), pp.
Bu değerler, kod editöründe değişkenler 143-150. (1976)
olarak edinilebilir. Bu sayede programın
akışına göre farklı çıktılar ekde edilebilir. [4] Brusilovsky, P., Calabrese, E.,
Örneğin bir “if” karar yapısı ile, robotun Hvorecky, J., Kouchnirenko, A., &
basıncın 100’ün üzerinde olduğunda tepki Miller, P. “Mini-languages: A Way to
vermesi sağlanabilir. Yine faklı değerler Learn Programming Principles”.
için farklı ledler yakılabilir. Education and Information
Technologies, 2 (1), pp. 65-83. (1997)
4. Sonuç
Sonuç olarak, programlamayı öğrenmek [5] Ardiuno™, Açık kaynak kodlu
farklı bir düşünce yapısı geliştirmeyi robotik programlama platformu.
gerektirir ve bu sürecin kolaylaştırılması http://www. arduino.cc/ (Son Erişim
ancak öğretilen kavram ve süreçlerin tarihi:17 Ocak 2011)
somutlaştırılması ile olanaklıdır.
Programlama dilleri öğretiminde sürekli [6] Processing™, Açık kaynak kodlu
olarak soyut kavramlar ile çalışılmasının programlama dili ve platformu. http://
neden olduğu olumsuzlukların processing.org/ (Son erişim tarihi 17 Ocak
girderilmesinde Arduino ve benzeri 2011)
platformlar önemli bir çözüm
sunmaktadır. Önerilen yaklaşımın, [7] Wikipedia, “Ardiuno”, http://tr.wiki
öğrencilerin yazdıkları kodun çalışır pedia.org/wiki/Arduino (Son erişim tarihi
halini fiziksel olarak gözlemleyebilmeleri 17 Ocak 2011)
programlama ile ilgili kavramların
somutlaşmasına yardımcı olacağı
düşünülmektedir.

5. Kaynaklar

[1] Tucker, A., Deek, F., Jones, J.,


McCowan. D., Stephenson, C., & Verno,
A. ACM K–12 Task Force. A Model
Curriculum for K-12 Computer
Science. Final Report of the ACM K-12
Task Force Curriculum Committee.

You might also like