Programlama öğrenme: çalıştırmadan önce tahmin et

Kısa cevap

Programlama öğrenme sürecinde bir kod parçasının ne yapacağını çalıştırmadan önce tahmin et, sonra sürprizleri açıkla. Değişkenleri elle izle, küçük programları birkaç gün sonra ezberden yeniden yaz ve alıştırma türlerini karıştır. Kodu izlemek ya da kopyalamak aşinalık, tahmin etmek ve üretmek ise anlayış kazandırır.

Programlama öğrenme: çalıştırmadan önce tahmin et başlığı, sakin ve tek renkli bir desenin üzerinde

Birçok yeni başlayan haftalarca eğitim videolarını takip eder, başını sallar, sonra boş bir editörün önünde donup kalır. Buna bazen tutorial hell denir ve nedeni basittir. Videoyu takip etmek senden kodu tanımanı ister. Program yazmak ise kodu üretmeni. Sınavda ya da projede ayakta kalan bir programlama öğrenme süreci istiyorsan pratiğin üretime benzemeli.

Bu rehber ilk ya da ikinci programlama dersindeki öğrenciler ve kendi kendine öğrenenler için. Örnekler Python ile, ama her teknik her dilde işe yarar. Tahmin et, çalıştır döngüsünü, bir izleme yöntemini, kavramlar için bir kart biçimini ve haftalık bir plan alacaksın.

Kodlama eğitimleri neden akılda kalmaz?

Eğitimler her kararı senin yerine verir, bu yüzden işin zor kısmını, yani sıradaki satırı seçmeyi hiç çalışmazsın. Gördüğün kod sonradan tanıdık gelir; bu bilgi gibi hissedilir ama yalnızca tanımadır. Kullanılabilir bir zihinsel model, hatırlama ve tahminle kurulur.

Pasif eğitim izleme ile aktif kodlama pratiğinin dört alışkanlık üzerinden karşılaştırması

Eğitimlerin yine de yeri var. Yeni bir fikirle tanışmak için kullan. Sonra videoyu kapat ve gördüğünü boş bir dosyadan yeniden kur. Yeniden kuramadığın kısım çalışman gereken kısımdır.

Sözdizimi yerine programlama kavramlarını nasıl öğrenirsin?

Kodun bellekte ne yaptığına odaklan: her değişken neyi gösteriyor, değerler nasıl ve ne zaman değişiyor. Kısa kod parçalarının çıktısını çalıştırmadan önce tahmin et ve tahminin yanlışsa nedenini yaz. Sözdizimi kullandıkça gelir; kavramlar bilinçli pratik ister.

Temel alışkanlık dört adımlık bir döngü. Her kod parçası için birkaç saniye sürer ve dersindeki her örneği pratiğe çevirir.

Kod çalışmanın dört adımlı döngüsü: oku, tahmin et, çalıştır, farkı açıkla

Şimdi dene. Python'da a = [1, 2, 3] yaz, sonra b = a, sonra b.append(4) çağır, sonra print(a) yaz. Okumaya devam etmeden önce çıktıyı tahmin et. Birçok yeni başlayan [1, 2, 3] der. Gerçek çıktı [1, 2, 3, 4], çünkü b = a listeyi kopyalamaz; iki ad da aynı listeyi gösterir. Bu tek sürpriz, değişkenlerin nasıl çalıştığı konusunda bir sayfa açıklamadan daha fazla şey öğretir. Resmi Python eğitimi aynı şekilde kullanabileceğin kısa kod parçalarıyla dolu.

Kod izleme nedir ve neden işe yarar?

İzleme, kodu elle adım adım yürütüp her satırdan sonra her değişkenin değerini yazmaktır. Seni bilgisayarı simüle etmeye zorlar; kod yazmak ve hata ayıklamak bu zihinsel modele dayanır. Ayrıca sınavlarda sık görülen bir soru biçimidir.

2, 4 ve 6'yı toplama ekleyen bir Python döngüsünün izleme tablosu, her adımdan sonraki toplamı gösteriyor
Kod: total = 0, sonra for n in [2, 4, 6]: total += n

Son satır, sınavlarda sık çıkan bir ayrıntıyı saklıyor: Python'da döngü değişkeni, döngü bittikten sonra da son değerini tutar. Bunu ancak her satırı yazınca fark edersin. Her hafta birkaç döngüyü, koşulu ve fonksiyon çağrısını izle; özellikle özyineleme gibi gözünde canlandırması zor konularda.

Kodlama kavramlarını uzun vadede nasıl aklında tutarsın?

Küçük programları öğrendikten birkaç gün sonra ezberden yeniden yaz ve yalnızca ne değil neden diye soran bir kavram kartı destesi tut. Günlere yayılan tekrarlı hatırlama kavramları erişilebilir tutar; tek bir başarılı deneme yetmez.

Hafıza araştırmaları bunu destekliyor. Bir deneyde, ilk doğru cevaptan sonra maddeleri hatırlamaya devam eden öğrenciler bir hafta sonra yaklaşık yüzde 80'ini hatırladı; tek başarıdan sonra bırakanlar ise yaklaşık yüzde 35'ini, bunu Karpicke ve arkadaşları anlatıyor. Kodda karşılığı, ikili aramayı ya da bir sınıf tanımını boş bir dosyadan pazartesi, perşembe ve gelecek hafta yeniden yazmak. Tam yöntem için aktif hatırlama ve aralıklı tekrar yazılarına bak.

Python listesi ile demet arasındaki farkı ve hangisinin ne zaman seçileceğini soran örnek programlama bilgi kartı
Sekmeden çıkmadan bir dokümantasyon sayfasını kavram sorularına dönüştür.

Kodu sesli açıklamak gerçekten işe yarar mı?

Evet. Her satırı sade sözcüklerle, bir arkadaşına ya da masandaki lastik ördeğe anlatmak, geçiştirdiğin adımları ortaya çıkarır. Bir satırın neden orada olduğunu söyleyemiyorsan, sıradaki çalışılacak kavramı bulmuşsun demektir.

Programcılar buna rubber duck debugging der, öğrenme araştırmacıları ise genel alışkanlığa kendine açıklama der. Fikir aynı: Akıl yürütmeyi sözcüklere dökmek, sessiz okumanın atladığı boşlukları doldurmaya zorlar. Çözülmüş bir örneği çalışırken her bloktan sonra dur, ne yaptığını ve yazarın neden başka bir yol yerine bunu seçtiğini söyle.

Bu, programlama kavramlarını derinlemesine öğrenmenin en ucuz yollarından biri, çünkü karşılaştığın her kodda işe yarar: ders örneklerinde, bir kütüphanenin dokümantasyonunda ya da bir arkadaşının projesinde. Tahmin döngüsüyle birleştirirsen yanlış anlamaların çoğunu ödevdeki hataya dönüşmeden çok önce yakalarsın.

Farklı türde kodlama alıştırmalarını karıştırmalı mısın?

Evet. Bir konu tanıdık gelmeye başlayınca birkaç konudan alıştırmaları karıştır; böylece döngü mü özyineleme mi, liste mi sözlük mü gibi hangi aracın uygun olduğuna karar vermek zorunda kalırsın. Gerçek problemler ve sınavlar tam olarak bu seçimi ister.

787 yedinci sınıf öğrencisiyle yapılan bir matematik çalışmasında, karışık problem türleriyle çalışan öğrenciler sürpriz bir testte yüzde 61 aldı; her seferinde tek tür çalışanlar ise yüzde 38, bunu Eğitim Bilimleri Enstitüsü'nün finanse ettiği rastgele denemeli bir çalışma bildiriyor. Programlama da yöntem seçme zorluğunu paylaşıyor. Küçük bir alıştırma bankası kur, her alıştırmayı konusuyla etiketle ve her seansta birkaç konudan çek. Karışık çalışma yöntemi rehberimiz nasıl yapılacağını gösteriyor.

Programlama dersi için haftalık plan

Kavramla derste ya da bir eğitimde tanış, aynı gün örnekleri üzerinde tahmin döngüsünü çalıştır, hafta ortasında sıfırdan küçük bir program yaz ve haftayı karışık bir alıştırma seti ile geçen haftanın programını ezberden yeniden yazarak bitir.

  1. 1. gün: Dersteki her örneği tahmin et ve çalıştır.
  2. 2. gün: İki kod parçasını elle izle, biri fonksiyon çağrısı içersin.
  3. 3. gün: Örneklere bakmadan kavramı kullanan küçük bir program yaz.
  4. 5. gün: Bu haftanın ve öncekilerin karışık alıştırmaları.
  5. 7. gün: Geçen haftanın programını ezberden yeniden yaz, sonra karşılaştır.

Yanında bir hata günlüğü tut. Her hata için belirtiyi, nedeni ve yanlış anladığın kavramı yaz. Birkaç hafta sonra matematikte ve fen derslerinde kullanılan yanlış defteri yöntemi gibi, kişisel zayıf noktalarının listesine dönüşür. Daha fazla ders rehberi için fen derslerine nasıl çalışılır yazısından başla.

Sık sorulan sorular

Programlama kavramlarını öğrenmek ne kadar sürer?

Değişkenler, döngüler, koşullar ve fonksiyonlar gibi temeller genellikle birkaç haftalık düzenli pratikle doğal gelmeye başlar. Özyineleme ya da nesne tasarımı gibi daha derin fikirler daha uzun sürer ve her projeyle gelişmeye devam eder. Toplam saatten çok düzenli kısa seanslar önemlidir.

Aynı anda birkaç programlama dili öğrenmeli miyim?

Yeni başlayan biri için genellikle hayır. Kavramlar diller arasında aktarılır ama iki sözdizimini birden öğrenmek yüzeysel ayrıntıları ikiye katlar. Önce bir dilde rahatla, ikincisi çok daha hızlı gelir.

Öğrenirken kod yazmak için yapay zeka kullanmak sorun olur mu?

Önce kendin denedikten sonra kodu açıklatmak ya da düşüncelerini kontrol etmek için kullan. Çözümü önce o yazarsa beceri kazandıran pratiği atlamış olursun. İyi bir kural, önce tahmin etmek ya da kendi sürümünü yazmak, sonra karşılaştırmaktır.

Kağıt üzerinde programlama sınavına nasıl çalışılır?

Sınav biçimi bu olduğu için kodu elle izleme ve yazma pratiği yap. Editör olmadan kısa fonksiyonlarda kendini süreyle sına, sonra çalıştırarak kontrol et. Bir eksik ya da bir fazla hatalarına ve döngü sınırlarına dikkat et.

Kaynaklar

  1. The Python Tutorial, Python Software Foundation (Tahmin et, sonra çalıştır pratiğine uygun kısa kod örnekleri içeren resmi eğitim.)
  2. Metacognitive strategies in student learning: Do students practise retrieval when they study on their own?, Memory (Karpicke, Butler and Roediger, 2009) (İlk başarıdan sonra tekrarlanan hatırlama bir hafta sonra yaklaşık yüzde 80 akılda kalma sağladı; maddeler bırakılınca yaklaşık yüzde 35.)
  3. Efficacy Study of Interleaved Mathematics Practice, Institute of Education Sciences, U.S. Department of Education (787 yedinci sınıf öğrencisi; duyurusuz testte karışık pratik yüzde 61, tek tür pratik yüzde 38.)