Üniversitedeyken, diğer kursların yanı sıra programlama kursuna giriş dersinde öğretmenlik yapıyordum. Tarif ettiğiniz problem nadir değildir. Özel rolünüzün ne olduğuna bağlı olarak, almak istediğiniz farklı yaklaşımlarınız olabilir.
Birincisi, eğer bu sınıftaki öğrencilerin önemli bölümlerini etkileyen yaygın bir sorunsa, buna erişiminiz varsa, öğrencilerin ne kavramlar konusunda kavramadıkları hakkında belirli geri bildirimlerle dersi öğreten profesöre yaklaşacağım. Terimde tekrar ortaya çıktıkça söz konusu materyalin ek incelemesini de içerebilir veya gelecek terimler için müfredatı geliştirebilir.
Laboratuarınıza ek olarak kurs için bir tartışma bölümü öğretirseniz, derste kafa karıştırıcı olan şeyleri açıklamak ve daha somut hale gelmelerine ve temellerin hepsinin anlaşılmasını sağlamak için harika bir zaman olurdu.
Bu öğrencilerle birlikte çalışacağınız tek zaman ders laboratuarındaki zamanınızdaysa, bu zamanı öğrencilere bire bir veya birkaç defa öğretmek için ihtiyaç duydukları kavramsal yapı taşlarını öğretmek için kullanabilirsiniz. ve ev ödevlerini tamamla.
Sınıfta kendilerini kaybettiklerini hissedebilirler, nerede duracaklarını ve soru soracaklarını bile bilmiyorlar. Bu durumda, onlarla temellere geri dönün. Neler olduğunu anladıklarında kursta neredeydiler? Eğer emin değillerse veya "asla" anlamadılarsa, merhaba dünyasını açıklamaya, bir değişkenin ne olduğu gibi şeyler öğretmeye, bilgisayarın "talimatlar" listesini nasıl alıp almaya çalıştığına başlamaya başlayabilirsiniz. bunları sırayla yapın, ancak bilgisayar bizim kadar "akıllı" değildir, bu yüzden çok değişmez olmanız ve bilgisayarın tam olarak anlayabilmesi için doğru şeyler söylemeniz gerekir.
Bu aslında ana dal dışı programlama derslerinde oldukça sık gördüğüm bir mücadele ve hayal kırıklığı noktası. Öğrenciler bazı kodlar yazarlar. Doğru, "hakkında" görünüyor, ama sonra derlemeye gidiyorlar ve çok şifreli bir hata veriyorlar. Ve neyin yanlış olduğu hakkında hiçbir fikirleri yok. Ve saatlerce kodlarına bak. Sonra nihayet, eksik bir yarı-kolon veya yanlış yerde bir destek gibi önemsiz görünen bir şey olduğunu anlayın. Sonra tekrar derlemeye giderler ve hala bir hata vardır, başka bir şey. Değişken adını, ikinci kez kullandıklarında farklı olarak hecelediler. Ve bunun gibi. Bu yüzden bir arkadaştan, öğretmenden veya birinden yardım isterler ve başlarının tepesinden cevap verebilirler "ah, sadece bunu oraya ekleyin ve sonra işe yarayacaktır." Bu yüzden deneyimleri, programlamanın biraz "gizemli" olduğudur.
Bu, bir öğretmen olarak, yardımcı olacak çok yerinizin olduğu bir alandır. Hayal kırıklık seviyelerine bağlı olarak, kodlarının neden çalışmadığını anlamalarına yardımcı olacak farklı yaklaşımlarım olabilir. Eğer bir türlü anlarlarsa, onlara ipuçları verebilir ve kendi başlarına çözmelerine yardımcı olabilirim. Ancak, hayal kırıklığına uğramaktan vazgeçmeye hazır olduklarının ipinin hemen ucundalarsa, sık sık birkaç freebie cevabı veririm ve sonra en azından onlara bu değişikliğin neden programınızı düzelttiğini anlıyor musunuz? ?"
Bazı öğrenciler, özellikle de ana dal öğrencisi olmayanlar için, iyi bir programcı olmak veya programlamadan zevk almak için gereken detaylara metodik dikkat göstermeyebilirler. Ayrıntılara dikkat etmelerine yardımcı olacak stratejilerle bunları ellerinde tutabilir ve sorunları onlar için zor olsa bile çözmek için yeterince sistemli olabilirsiniz.
Ancak, kodlarını "doğru" olarak tanımlayan öğrenciler hakkında anal olarak kalıcı - sık sık, yeni başlayanlar programcıların yuvalama ve kapsam ile ilgili sorunlar yaratırlar çünkü eşleşmeyen parantezler veya benzerleri vardır, çünkü neyin altında bulunanlara dikkat etmedikleri için. Tüm kodları doğru bir şekilde girin ve parantezlerin eşleştiğinden emin olun, tüm satırların noktalı virgülle bitmesini sağlayın, özellikle ilk hatanın gösterdiği satır numarasının etrafında olduğundan emin olun. yukarı, vb
Onlara erken derlemeyi ve sık sık derlemeyi öğret. Asgari iskelet kodunu yaz (merhaba dünya), derle / test et. Birkaç satır ekleyin, tekrar derleyin. Büyük bir kova değil, yalnızca küçük bir değişiklik kovasına bakıyorsanız, hataları bulmak çok daha kolaydır.
Bir problemi daha küçük çözülebilir problemlere nasıl çözeceklerini öğrenmelerine yardımcı olun. Profesyonel programcılar olarak yaptığımız aynı şeydir, daha zor problemleri çözerek nasıl çözeceğimizi bilmiyoruz. Nasıl çözeceğinizi bildiğiniz ya da nasıl çözüleceğini öğrenmek için bir araştırma yapabileceğinize kadar parçalara ayırmaya devam edersiniz. “Çalışmakta olan bir çözüme ulaşmak için hangi adımları atmanız gerekiyor?” İlk önce biraz iskelet koduna ihtiyacınız var (merhaba dünya). Nasıl yapıldığını biliyor musun? Evet, harika, konuşmayı bitirince bunu başlatabilirsin! Sonra bir dosyayı girdi olarak okuması gerekir. 4. bölümde bunun hakkında okuduğunu hatırladın mı? Pek sayılmaz? Neden gidip merhaba dünyayı çalıştırdıktan sonra bir göz atmıyorsun ve bu işe koyulmaya ne kadar yaklaşabileceğini gör ve sonra beni ara ve Buna takıldığın zaman sana daha fazla yardım edeceğim. İlk birkaç kez, sorunu çözmek için gerekli olan adımları öğrenmek için onlar için numaralandırılmış bir liste yapmanız gerekebilir, böylece sorunun nasıl çözüleceğini örnek olarak öğrenebilirler.
Eğer sınıfta materyallerin bir kısmını alıyor ama hepsini almıyorlarsa, sınıfta soru sormalarını teşvik edin, çünkü on kişiden dokuz kez, anlamayan tek öğrenci değiller ve profesör muhtemelen önemli bir şeyden bahsetti.
"Saatleri" tek bir hataya bakarak harcıyorlar ama çözemiyorlarsa, bu zamanlarını boşa harcıyorlarsa, ondan fazla bir şey öğrenmiyorlar. Genellikle hatalar içgörü problemleridir ve bu sorunu çözmek için doğru içgörü ile ortaya çıkma meselesidir ve bu tür problemler için yetersizliği olmayabilir. Takılıp kaldıklarında diğer genel yaklaşımları önerin: sınıftaki başka bir arkadaşınızdan yardım isteyin (eğer gerekliyse bazı sınıf arkadaşları tanıyın), ödevlerini vaktinden önce başlatın; Öğretmen laboratuvarında ve açık saatlerde sorular sorun ya da profesörün çalışma saatlerine gidin. Ezberleme konuları için iyi sonuç veren tıkanmaya alışkınlarsa, huzursuzluk duvarına çarpacaklardır. ezberlemekten daha çok problem çözme ile ilgili olan programlama ile karşı karşıya kalırsınız. Onlara ders kitaplarından, yığın akışından vb. Sözdizimi örneklerine nasıl bakacaklarını gösterin. Varsa, özel sınıf bir soru forumuna soru göndermeleri için onları teşvik edin.
Onlara, kodun çalışmayı bıraktığı yerin nasıl daraltılacağını öğretin. Çalışan bir şeye geri dönene kadar yayınları yorumlayın ve sonra tekrar bu parçayı tekrar alana kadar yavaşça geri ekleyin.
Bu fikirlerin çoğu, çok fazla gelirlerse bildiri haline getirilebilir. Stratejiler genellikle bölüm profesörlerinin üzerinde dururlar - zamanlarını sözdiziminde, döngüler, diziler, g / Ç, vb. Yazma anlamlarının anlamlarını harcıyorlar. kodumu çalıştırmak ve sadece beni derlemek veya çöker değil mi? "
Kavramsal şeyler söz konusu olduğunda, özellikle "değişken nedir" ya da "döngü nedir?" Bunların kursun geri kalanına ayak uyduracaklarını anlamadığını anlamıyorum. Derse dayalı bir kursta, profesörün her soruyu cevaplamak veya her öğrencinin ampulünün sönmesine yardımcı olmak için zamanı olmayabilir. İşte bu, öğretmenlerin programlamayı öğrenmek için bu kadar önemli olmasının bir parçası. Belirli bir konuyu somutlaştırmak için ek analojilerle kişiselleştirilmiş eğitime ihtiyaçları olabilir.
C ++ 'da ders verdiğiniz için, derslerin bazı öğrencilerin "almak" için uğraştığı soyut bir konu olduğunu düşünürdüm. Genellikle sınıfların soyutlanması, bir "ATM makinesi" gibi bazı rastgele gerçek dünya nesnesine karşılık gelen örneklerle öğretilir ve gerçek dünya nesnesine benzerlikler yapılır. İçinde ne kadar paranın bulunduğunu takip etmek için değişkenlere sahip olabilirsiniz, atm makinesine belirli koşullara nasıl cevap vereceğini söyleyen kurallara benzeyen yöntemlere sahip olabilirsiniz. ve diğer öğrenciler farklı birini daha iyi kavradılar.
Mümkün olduğunda, onlar için resim çizin. Yazdıkları kodun ne yaptığının büyük resmini görmelerine yardımcı olmak için zaman içinde ne olduğuna dair bir dizi diyagramı gibi. Kullanıcı bu düğmeyi tıklar. Sonra program x, y ve z yaparak yanıt vermelidir. Postanede her biri yalnızca bir sayı tutabilecek bir grup PO Kutusu gibi bir dizi çizin ve kutunun önündeki "adres" i gösteren oklar gibi işaretçiler çizin. Vb.