Ortaokulda Programlama Öğretim Süreci - 2. Bölüm (6. Sınıflar)

Ortaokulda programlama öğretim sürecine ilişkin 5. sınıflarda izlediğim yönteme ilişkin yazıma şu linkten ulaşabilirsiniz: http://www.bilisimciruh.com/2017/07/ortaokulda-programlama-ogretim-sureci-1.html


Bu yazıda ise, 5. sınıfın sonunda başladığımız programlama öğretimine 6. sınıfta nasıl devam ettiğimi anlatacağım. Öncelikle 6. sınıfın başında programlama konuları ile devam etmiyorum. 5. sınıfta öğrencilerime öncelikle temel bilgisayar kullanımı üzerine bir öğretim gerçekleştirdiğimi bir önceki yazımda ifade etmiştim. 6. sınıfın başında ise bunu bir adım öteye taşımaya çalışıyoruz. Dosya ve klasör kavramları, dosya uzantıları, bilgi paylaşım araçları (vikipedi, sosyal medya, blog vb), iletişim araçları (e-posta, forum gibi), zararlı yazılımlar, faydalı programlar gibi konular işlemekteyiz. 6. sınıfın 1. döneminin son 1 ya da 1,5 ayı ise, 5. sınıfta yarım bıraktığımız programlama meselesine devam ediyoruz.

Bu doğrultuda öncelikle “Koşul” kavramı üzerinde duruyoruz. Bunun için code.org sitesinde yer alan Ders 2’deki Sahne 12:Koşullar etkinliğindeki videoyu izleyerek başlıyoruz. Bu video üzerinde “koşul” meselesinin aslında bir şeylere karar verme ile ilişkili olduğunu fark ediyoruz. Programın farklı durumlara göre çeşitli kararlar alıp bu kararları uygulaması olarak bu süreci ifade edebiliriz. Videonun ardından yine öğrencilere ilgi çekici ve merak uyandırıcı bir soru soruyorum, tıpkı 5. sınıflarda Programlama kavramına giriş yaparken yaptığım gibi (bu süreç code.org üzerindeki Sahne 12’nin ders planında geçiyor, ben oradan alıp kendime göre uyarladım). Soru şu: “Benden şu anda ne yapmamı istersiniz?” Makul ve mantıklı istekler olması doğrultusunda bir ön uyarının ardından öğrencilerden birkaç istek dinliyorum. İstekler genelde şu şekilde oluşuyor: “Bilgisayarda oyun oynayalım, dışarıya çıkıp top oynayalım, film izleyelim, şarkı söyleyin, dans edin vs” Ben genelde yapılması benim açımdan en basit olan “şarkı söyleme” isteğini kabul ediyorum. Fakat şunu söylüyorum: “Eğer şarkı söylememi istiyorsanız, karşılığında 30 saniye tamamen sessizliği sağlamanızı istiyorum.” Süreyi başlatıyorum, çok büyük ihtimalle istenileni yapıyorlar ve süre bitiyor.

Şunun altını çizmeye çalışıyorum: “Benden şarkı söylememi istediniz, EĞER bunu istiyorsanız, sessiz kalmanızı istedim. Sessizliği sağladınız, yani size sunduğum şartı sağladınız ve karşılığını alacaksınız. Bu şartı sağlamayabilirdiniz, o durumda da karşılığında elde etmeniz gereken şeyden de mahrum kalacaktınız. İşte bilgisayarlardaki programlarda ya da oyunlarda da durum böyle. Örneğin bir oyunda bir üst seviyeye geçmek istiyorsunuz ama programın size sunduğu bir şart var. Bir üst seviyeye geçmek için belirli bir puan toplamanız gerekiyor veya bir görevi tamamlamanız gerekiyor veya süreden dolmadan bir şeyler yapmanız gerekiyor. İşte biz yapılara “Koşul” diyoruz, bu yapıların anahtar kelimesi de “Eğer” kelimesidir.” Sonrasında bu koşul meselesini tam olarak öğretebilmek adına çeşitli oyunlar oynuyoruz. Bunun için https://www.random.org/playing-cards/ sitesinden rastgele iskambil kartı seçme özelliğini kullanıyoruz. Oyun için önceden şartlar belirliyoruz. Burada çok çeşitli oyunlar üretilebilir. Örneğin; sınıf 2, 3 ya da 4 gruba ayrılıp grup sayısına göre şart belirlenir. 2 grup ise, eğer rastgele çıkan iskambil kartı kırmızı renkli ise 1. grup el çırpacak, eğer siyah ise 2. grup el çırpacak. Grup sayısına göre şartlar artırılabilir. Çift sayı ise, tek sayı ise, 6’dan büyükse ya da küçükse gibi… Her seferinde bu şartların tahtaya yazılıp her çıkan kartta hangi şartı sağlıyor ve karşılığında ne olması gerekiyor sorgulamaları yapılırsa öğrenme daha kalıcı ve anlamlı olacaktır.

Şöyle bir oyun da oynanılabilir: Yine sınıf gruplara ayrılır ve şartlar belirlenir. Örneğin; kırmızı ve 5ten büyük sayı gelirse o takım çıkan kartın sayı değeri kadar puan kazanacak, kırmızı ve 5ten küçük ise rakip takım 2 puan kazanacak. Siyah ve çift sayı ise o takım çıkan kartın değerinin yarısı kadar puan kazanacak, siyah ve tek sayı ise rakip takım 1 puan kazanacak. 1. takımın 1. oyuncusu gelip bahsettiğim site üzerinden etkileşimli tahtada butona basar. Rastgele çıkan kart hangi şartı sağlıyorsa ve nasıl bir puanlama olması gerekiyorsa tahtada ilgili takım ya da takımlara puanları yazılır. 2. takımın 1. oyuncusu, 3. takımın 1. oyuncusu… 1. takımın 2. oyuncusu, 2. takımın 2. oyuncusu şeklinde yarışma devam eder. En son takımların puanları toplanır ve kazanan takım tebrik edilir. Bu şekilde öğrenciler hem çok eğlenecek, hem de koşul gibi son derece zor öğrenilen programlama kavramlarından birisini oldukça kalıcı bir şekilde öğrenmiş olacaktır. Bütün bu etkinliklerin ardından, code.org üzerinde Ders 2, Sahne 13’te Arı sahnesi üzerinden koşul etkinlikleri sınıfla birlikte yapılır. Programlama ile ilgili öğrenilecek kavramlardan birisi de “Değişken” kavramı olacak ama oraya geçmeden önce araya ilgi çekici ve farklı birkaç konu ekliyorum. Bunlardan ilki “Binary (İkili) Sayı Sistemi” konusu. code.org üzerinde Ders 2, Sahne 14: İkili Bileklikler etkinliği bununla alakalı. Öncelikle Sahne 14 üzerindeki videoyu izliyoruz. Matematikte çeşitli sayı sistemleri olduğundan bahsediyoruz. Burada bizim matematikte kullandığımız sayı sisteminin hangisi olduğunu sorgulayıp öğrencilerden 10’lu sayı sistemi cevabını almaya çalışıyoruz. Arzu ederseniz 16’lı sayı sistemi olduğundan ve 9’dan sonraki sayıların A-B-C-D-E-F ile ifade edildiğinden de bahsedebilirsiniz. “Matematikte kullandığımız 10’lu sayı sisteminde kaç rakam vardır?” sorusu sorulabilir. Muhtemelen 10 rakam olduğu cevabını verebilecektir öğrenciler. “Peki 10’lu sayı sisteminde 10 rakam var ise, ikili sayı sistemi dediğimiz Binary sayı sisteminde kaç rakam vardır?” sorusu ile bu sayı sisteminde sadece 2 rakam olduğu farkındalığı yaratılabilir. Bunların hangi rakamlar olduğu sorgulanabilir, muhtemelen 0 ve 1 cevabı da gelecektir. code.org’ta ilgili etkinlikteki ders planında her harfin Binary karşılığı verilmiştir. (https://code.org/curriculum/course2/14/Assessment14-BinaryBracelets.pdf) Burada alt bölümde bir gizli cümle de mevcuttur.

Öğrencilerle bunu bulmaya çalışabilirsiniz. Harflerin karşılığındaki boş kutucukların sıfır’ı, dolu kutucukların bir’i sembolize ettiğini de anlatabilirsiniz. Siz de kendi cümlelerinizi yaratıp, ilgi harflerin karşılığı olan Binary şekillerini tahtaya çizerek öğrencilerin bulmalarını sağlayabilirsiniz. Ben bir sınıfta gizli sözcükler olarak “Best Teacher and Class” oluşturmuştum. İlgili harflerin Binary karşılıklarını tahtaya çizip öğrencilerin bulmalarını istedim. Son olarak, https://code.org/curriculum/course2/14/Activity14-BinaryBracelets.pdf buradaki etkinlikte öğrencilerin isimlerinin baş harflerini listeden bulup aşağıdaki kutucuklara o harfin Binary karşılığı ile aynı olacak şekilde istedikleri renklerde boyalamalarını isteyebilirsiniz. Bu bölümü kesikli çizgilerin olduğu kısımlardan kesip bant yardımı ile bileklerine bağlayıp bileklik yapabilirler. Baş harflarinin Binary karşılığından oluşan bir bilekliğe sahip olmuş olurlar.

Değişken kavramına geçmeden önce yapacağımız bir diğer etkinlik ise, “Computational Thinking” adıyla son zamanlarda birçok araştırma ve makalede karşımıza çıkan, benim “Bilgisayarca Düşünme” olarak ifade ettiğim ve çok önem verdiğim bir kavram. Burada bilgisayarların bir problem durumu esnasında nasıl hareket ettiğini, neler yaptığını çözmeye ve kabaca bilgisayar gibi düşünmeyi öğrenmeye çalışıyoruz. Yine derse ilgi çekici ve merak uyandırıcı bir soru ile başlıyoruz: “1’den 200’e kadar olan sayıların toplamı kaçtır? Bu soruyu çözmek için 30 saniye süreniz var ve kalem-kağıt kullanmayacaksınız.” Öğrencilerin bunu yapmalarının imkansız olduğunun farkındayım, amaç da bu zaten. 30 saniye süre bittikten sonra, cevapları alıyorum, tabi hep kafadan atıyorlar, doğru sonuca ulaşan doğal olarak yok. “Peki bilgisayar böyle bir problem durumunda ne yapardı? İşte bilgisayarca düşünme dediğimiz sürecin adımları şu şekilde: 1- Decompose (Ayrıştırmak): Problemi küçük parçalara ayırmak. 2- Pattern Matching (Model Eşleme): Benzerlikleri tespit etme. 3- Abstraction (Soyutlama): Farklılıkları ortaya çıkararak başka problem durumlar için de kullanılabilecek bir çözüm oluşturmak. 4- Algorithm (Algoritma): Bir problemin çözümü yapılması gereken işlemlerin listesi. Peki sorduğumuz soruyu bu adımları kullanarak bilgisayar nasıl çözerdi? Tahtaya şunu yazıyorum: 1+2+3+……………………………….+198+199+200 (Problemi küçük parçalara ayırdık) 1 ile 200’ü toplarsak ne olur? 201. Peki 2 ile 199’u toplarsak? 201. Peki 3 ile 198’i toplarsak? 201. Sonuç hep 201 oluyor (Benzerlikleri tespit ettik). Peki kaç tane 201 var? Her iki sayı toplanıp bir tane 201 ettiğine göre, toplamda 200 tane sayı varsa, yarısı kadar yani 100 tane 201 olacak. O zaman problemin sonucu 100x201 oluyor. Artık farklı problemleri de bu yolla çözebiliriz. Örneğin; 1 ile 100 arasındaki sayıların toplamı: 50x101. (Abstraction) Son olarak da code.org üzerindeki ders planlarındaki etkinlikleri uyguluyoruz. Bu etkinlikler code.org’ta Ders 3, Sahne 1: Sayısal Düşünme üzerinde mevcut. Linkleri aşağıdadır: https://code.org/curriculum/course3/1/Activity1-ComputationalThinking.pdf https://code.org/curriculum/course3/1/Assessment1-CompThinking.pdf Değişken kavramına geçmeden önce yapacağımız son etkinlik ise “Tangram” etkinliği. Bu etkinlik “algoritma” kavramını pekiştirmek için kullanılabilir. Burada code.org üzerinde Ders 4, Sahne 1:Tangramlar etkinliğindeki videoyu izleyerek başlıyoruz. Sonrasında sistem üzerinde Tangram setlerinin ve kartlarının olduğu etkinlik sayfasındaki gerekli materyalleri çıkartıp çoğaltıyorum (https://code.org/curriculum/course4/1/Activity1-Algorithms.pdf) Kırtasiyelerden edineceğiniz ahşap tangram setlerini de kullanabilirsiniz. Amaç, eldeki geometrik şekillerle değişik görseller oluşturmak ve karşıdaki kişiye görseli göstermeden, onu yönlendirerek, (ortaya bir kare, sağına bir üçgen vs gibi,) aynı şekli ortaya çıkarmasını sağlamak. Kilit nokta; yönlendirme ne kadar doğru ve başarılı olursa, ortaya çıkan sonuç da istenilene o kadar yakın olacaktır. Verilen yönlendirmeler ise, bir nevi algoritmadır. Son etkinliğimiz ise, “Değişken” kavramı ile ilgili olacaktır. Birazdan anlatacağım yöntem tamamen kendi ürettiğim bir yöntemdir.

Değişken kavramını sözlü olarak anlatıyorum: “Program içinde sayısal bir değer, adı üzerinde değişken bir sayı, sabit değil, çeşitli şartlara göre artıp azalabiliyor ve en önemlisi de bu değer program tarafından sürekli hafızada tutuluyor.” Öğrencilerin oynadıkları oyunlardan bu tanıma uyan öğeleri söylemelerini bekliyorum; puan, can, seviye, süre vs gibi cevaplar gelecektir ve bunlar oyunlarda değişken yapısına en güzel örneklerdir. Sonrasında değişkenlerin program içinde kullanım sürecinden bahsediyorum: “Öncelikle değişken tanımlanır. Ardından bu değişkene isim verilir. Sonrasında değişkenin programın başlangıcındaki değeri belirlenir. Son olarak da bu değişkenin hangi durumlarda ne tür değişikliklere uğrayacağı belirlenir.” Sonrasında şöyle bir etkinlik yapıyoruz: 4 tane gönüllü öğrenci alıyorum ve onların değişken olduklarını söylüyorum. Değişkenleri tanımladık. Bu öğrencilere (değişkenlere) isim veriyoruz (Puan, Süre, Can, Ceviye gibi). Başlangıç değerlerini belirliyoruz (Puan:0, Süre:30, Can:3, Seviye:1 gibi). Sonrasında etkileşimli tahtadan bir oyun açıyorum. İki boyutlu basit flash oyunlar (bubble trouble, pacman vs).

Bu oyun oynanırken hangi durumlarda hangi değişkenin ne tür değişiklikler göstereceğini belirliyoruz. Öncelikle ben oynuyorum ve değişken olarak görevlendirilen öğrenciler tahtada kalem ile kendilerine ayrılan bölümlerde ilgili değişiklikleri oluşturmaya çalışıyorlar. Sonrasında oyunu oynamak için de öğrencilerden gönüllü seçiyorum. Bu gönüllü öğrencileri ara ara değiştiriyorum ve bu şekilde değişken kavramının nasıl bir yapıya sahip olduğunu, programda ne amaçlarla kullanıldığını ve ne şekilde hareket ettiğini, bir yandan eğlenerek, öğretmeyi amaçlıyorum. (Bu uygulama ile ilgili fotoğraf ve videolar instagram hesabımda mevcut: hasanrsy33). 2. dönem ise Scratch ile başlayıp, Scratch ile bitiriyoruz.

Hem 5. sınıfta hem 6. sınıfın 1. dönemin code.org destekli yürüttüğümüz; döngü, değişken, algoritma, koşul gibi birçok programlama kavramını öğrendiğimiz bu sürecin sonrasında öğrencilerin Scratch’i anlaması ve kullanabilmesi son derece kolay olmaktadır. Öncelikle programın arayüzünü temel hatlarıyla anlatıyorum. Çok basit etkinliklerle başlayarak, dönem sonunda puan, süre, seviye gibi değişkenleri, çeşitli sorgu ve döngüleri içeren basit bir oyun yapacak düzeye geliyorum. Basitten karmaşığa doğru sıralanmış Scratch örneklerimin bir kısmına aşağıdaki linkten ulaşabilirsiniz: https://drive.google.com/drive/folders/0B9wQVZI-qFP-X1pRNGI5QVFXdXM?usp=sharing 6. sınıflarda programlama meselesine dair yaptığımız etkinlikler bu şekilde. Bu öğretime uygun olarak hazırladığım sınav sorularını da hasanersoy33@gmail.com adresi üzerinden talep edebilirsiniz. Bir sonraki yazıda, Scratch etkinliklerimizin boyut değiştirerek 7. sınıfın 1. döneminde de nasıl devam ettiğini sizlerle paylaşacağım.

Hasan Ersoy - Bilişim Teknolojileri Öğretmeni

0 yorum:

Yorum Gönder