Kodlama Eğitimi

Programlama, gerçek dünyadaki yaşadığımız problemlere ilişkin çözümlerin bilişim teknolojileri cihazlarının anlayabileceği bir biçime dönüştürülmesidir. Program, verilmiş olan görevleri yerine getirmesi için tasarlanmış elektronik araçların, birbirleriyle uyumlu bir şekilde haberleşmesini sağlayarak, bir görevi yerine getirmesi için yazılmış komutlar topluluğudur.

Problem kelimesi Latince kökenli olup, Arapça’ da, “mesele” kavramına karşılık gelirken, Türkçe’ de problem kavramına karşılık olarak “sor” kökünden türetilen “sorun” kavramına karşılık gelmektedir. Türk Dil Kurumu, Türkçe sözlüğünde sorun “düşünülüp çözülmeye, konuşulup bir sonuca bağlanmaya değeri ya da gerekliliği olan durum” olarak açıklanmıştır (Yerli, 2009).

Problemin temel özellikleri; İnsanın hayatı boyunca her zaman karşılaştığı problemlerin temel özelliklerini şu şekilde sıralayabiliriz;

  • Bir birey için problem güçlük oluşturmaktadır
  • Problemi çözmeye bireyin ihtiyacı olması gerekir.
  • Birey daha önceden problemle hiç karşılaşmamış olmalıdır.
  • Problemi çözmeye ilişkin bireyin hazırlığının bulunmaması gerekir.

Hayatımızda birçok problemlerle karşı karşıya kalabiliriz. Bir problem çözümünde birden çok çözüm yolu olabilmektedir. Karşılaştığımız bir problemi çözmede yapmamız gereken ilk aşama olası yöntemlerden en uygun olan seçilerek adım adım çözüme ulaştıracak yolun hazırlanmasıdır. Bilgisayar bilimlerinde buna algoritma denilmektedir. Algoritma genel olarak tüm bilgisayar programlama dillerinde kullanılmaktadır. Algoritma kelimesinin başlangıcı ise Abu Jafar Mohammed ibn Musa al howarizmi’nin (Horazmi) kitabına dayanmaktadır. Algoritmanın özel (geometrik) şekillerle gösterilmesi ise “akış diyagramı” olarak tanımlanır.

Bir programlama dili, bilgisayar programlarının yürütmesi için yazılım programları, komut dosyaları veya diğer komutlar geliştirmek için kullanılan özel bir dil programıdır. Program kodları bir araya gelerek yazılımı oluştururlar. Günümüzde kullanılan çok fazla sayıda programlama dilleri bulunmaktadır. C#, Visual Basic, Java, Python, Small Basic, Logo, Scratch ve Kodu gibi birçok programlama dili seçeneği vardır.

Bilgisayar programlama dillerinde kullandığımız komutların programcılıktaki karşılığı koddur. Kodlama ile ilgili olarak iki şekilde ayırabiliriz. Bunlardan birincisi metin tabanlı kodlama diğeri ise blok tabanlı kodlamadır.

Tablo 4. Metin ve Blok tabanlı kodlama örneği

Metin tabanlı olan kodlama kelimeler ve komutlarla yapılmaktadır. Metin kodlamanın komutlarının birebir renklerle ve şekillerle üst üste konularak daha iyi anlaşılmasını sağlayan yöntem kod bloklarıdır. Kod blokları ilk defa programlamaya başlayacak olan kişilerin kullandığı komut ve kavramların çok kolay bir şekilde anlaşılmasını sağlayan kodlama yapısıdır.

2.1.Blok kodlama araçları:

Günümüzde dünya genelinde bilgisayar bilimini ve programlama dilini kolaylaştırmaya yönelik kodlama mantığını öğretmek için birçok blok kodlama araçları geliştirilmiştir. Bu blok kodlama araçların hemen hemen hepsi kod bloklarından oluşan farklı bir komut ifadesi kullanmıştır. Bu komutlar farklı şekillerde ve renklerde olan alt alta dizilerek bir programlamayı oluşturmaktadır. Eğitim öğretim sürecinde Blok kodlama araçlarının ve kavramlarının anlatılması için geliştirilmiş farklı platformlar da bulunmaktadır. Bunların en yaygın kullanılanlarını tanıyalım.

Şema 11. Bazı blok kodlama platformları

Eğitim ve öğretim sürecinde, blok kodlama araçları için geliştirilmiş farklı platformlar bulunmaktadır. Bunların en yaygın kullanılanları verilmiştir.

Scratch: Öğretmen ve öğrencilerin çok basit blok kodlarla eğitsel oyun ve animasyonları geliştirmelerini sağlayan kolay bir araçtır. Ayrıca, Scratch öğrencilere bilgisayar programlamayı sevdirmek ve öğretmek için geliştirilmiş bir platformdur. Scratch, bir web tabanlı programlama dili olarak MIT tarafından geliştirilmişdir.  Scratch birçok farklı blok kodlama seçeneği ile dallanmış, doğrusal ve döngüsel algoritmalar kullanarak metinleri, grafikleri, çoklu ortamları canlandırabilir (animasyona dönüştürme) özgün program yazılmasına ve oyun tasarlanılmasına olanak verir.

Şema 12. Scratch platformu ana sayfası

CodeMonkey: öğrencilerin kodlamayı öğrendiği, eğlenceli ve bir programlama dili içerisinde eğitici bir oyun ortamıdır. Ayrıca, öğrencilerin nasıl kodlama yapması gerektiğini, mantık, eleştirel düşünme, yaratıcılık ve problem çözme gibi becerilerini geliştirmeye yardımcı olmaktadır. Öğretmenler, kodlama konusunda deneyimleri olmamasına rağmen Codemonkey derslerini öğretebilmektedirler.

Code.org: 2013 yılında Hadi ve Ali Partovi tarafından bilgisayar bilimini tanıtan bir video ile başlamıştır. Code.org birçok yaştaki kişilerin kullanabildiği, farklı seviyelerde kodlama öğretmeyi amaçlayan bir platformdur. Code.org kursları on milyonlarca öğrenci ve tüm dünyada bir milyon öğretmen tarafından kullanılmaktadır.

Şema 13. Code.org platformu ana sayfası

Allcancode:çocukların bilgisayar bilimi ve kodlamayı nasıl yapması gerektiğini heyecan verici etkinliklerle ve harika uygulamalarla öğretmek için kullanılan standart bir görsel platformdur. Şekilde gösterildiği gibi https://runmarco.allcancode.com/ sitesinden ulaşılabilmektedir.

Şema 14. Allcancode platformu ana sayfası

Lightbot: Kodlamaya dayalı bir bulmaca oyunudur ve oynarken mantık programlama öğretir. Ayrıca kodlamanın temeli sayılan; sıralama, prosedürler, karar kontrol ve döngüler gibi konuların öğrenilmesini sağlar. Her yaştan kullanıcının olduğu, 20 milyondan fazla öğrenci ve dünya çapında on binlerce öğretmen tarafından kullanılan eğlenceli görsel programlama dillerinden biridir.

CodeCombat:Temel programlama kavramlarını ve birçok programlama dillerini öğrenmek için eğitici bir video oyunudur. CodeCombat, öğretmenlerin ve öğrencilerin HTML ve CoffeeScript gibi kodlama dillerini yazmayı ve bilgisayar biliminin temellerini öğrenmelerini sağlayan çevrimiçi çok oyunculu bir uygulamadır. Tüm öğrenciler ve öğretmenler için ücretsizdir. Ayrıca, Ocak 2014’te CodeCombat yazılımlarını açık kaynak yaparak kullanıcıların kendi oyun içeriklerini oluşturabilmeleri için bir seviye editörü yayınlamıştır.

Small Basic: Temel kodlamayı öğrenmenin en kolay yollarından biridir. Öğrencilerin blok tabanlı kodlamadan metin tabanlı kodlamaya geçişine yardımcı olmak için özel olarak oluşturulan tek programlama dilidir. Small Basic.NET tabanlıdır ve öğrencilerin öğrendiklerini Visual Basic gibi diğer .NET programlama dillerine kolayca uygulanabilmektedir. Sözdizimi tabanlı dillerin temel öğelerini ulaşılabilir bir şekilde öğreten Small Basic, öğrencilere Java ve C# gibi daha karmaşık programlama dillerini ele alma becerilerini ve güvenini kazanmalarını sağlamaktadır. Small Basic ile Kinect, Lego Mindstorm, Raspberry Pi, Arduino, Oculus Rift ve daha fazlası için uygulamalar da oluşturabilmektedir.

Şema 15. Small Basic platformu ana sayfası

Kodu: Çocukların basit bir görsel programlama dili ile PC ve Xbox’ta oyun oluşturmasına izin vermektedir. Kodu programlama, yaratıcılık, problem çözme ve hikâye anlatımı öğretmek için kullanılabilir. Çocukların, kodu programlama diliyle oyunlar geliştirebildikleri ve yaptıkları oyunları arkadaşlarıyla paylaşabildikleri bir programdır.

Kodable: Öğretmen ve öğrencilere yönelik bir servistir. Öğrenciler önce temel programlama kavramlarını öğrenirler. Öğrenciler, gerçek JavaScript kullanarak kendi işlevsel Kodable seslerini oluştururlar. Tamamlandıklarında sınıf arkadaşlarıyla paylaşma ve aile üyelerine gönderme seçeneğine sahiplerdir. Ayrıca öğretmenler öğrencilerini sistemde tanımlayarak, onların gelişimini takip edebilmektedir.

Boxisland: Kodlamanın temellerini öğretirken, kız ve erkekleri heyecan verici bir maceraya götüren büyüleyici mobil kodlama oyunudur. Çocuklar, süper eğlenceli ve zorlu oyun boyunca ilerlemek için algoritmaların temelini, örüntü tanıma, dizilimler, döngüler ve şartlandırmaları uygular.

Blockly-games: görsel blok programlama dilleri ve editörleri oluşturmak için istemci tarafında bir JavaScript kütüphanesidir. Bu bir Google projesidir ve Apache 2.0 Lisansı altında açık kaynak kodludur. Genellikle bir web tarayıcısında çalışan bloklarla kodlama yapılmasını sağlayan bir platformdur.

Şema 16. Blockly-games platformu ana sayfası

CodinGame: Kodlama geliştirmek isteyenler için çevrimiçi bir platform düzenleme imkanı veren, yirmi beş programlama dilini destekleyen, çok oyunculu programlamadır.

Kodris: Hem metin tabanlı hem de blok tabanlı kodlamayı destekleyebilen, öğrencilerin öğrenme düzeyini akıllı kontrol sistemiyle takip ederek değerlendirip puanlayan, öğrencilerin problemleri çok hızlı ve kısa sürede çözme yeteneklerini geliştiren, eğlenceli ve oyun tabanlı bir öğrenme ortamıdır. Ayrıca her seviyeyi ve öğrenme biçimlerini dikkate alan, öğrencilerin öğrendikleri bilgilerle platformdan bağımsız şekilde Phyton programlama dilinde yazılım geliştirebilmelerini sağlayan bir platformdur.

Şema 17. Kodris platformu ana sayfası

Mblock: Scratch tabanlı, MIT tarafından tasarlanan ve çocuklara yönelik programlama dillerinden biridir. Birkaç kod satırı sayesinde çocuklar, Scratch sprite’larını ve robotlarını etkileyici görevler gerçekleştirmek için kolayca kontrol edebilir. Makeblock robotlarının yanı sıra, mBlock 5, Arduino ve micro’dur. Bit gibi diğer açık kaynaklı donanımlarla da uyumludur. Bulut hizmeti, nesnelerin interneti (Internet of Things-IoT) öğretimi için özel olarak tasarlanmıştır ve çoklu nesnelerin interneti (Internet of Things-IoT) uygulamalarını desteklemektedir. 

Şema 18. Mblock platformu ana sayfası

Kaynaklar

Yerli, S. (2009). İlk ve orta öğretim okullarındaki yöneticilerin duygusal zeka ve problem çözme becerileri arasındaki ilişki, İstanbul Anadolu yakası örneği. Yayımlanmamış yüksek lisans tezi. Maltepe Üniversitesi, Sosyal Bilimler Enstitüsü, İstanbul.