Matematik proje yönetiminde ne işimize yarayacak?

Tabii ki saçma sapan kararlar almamızı önlemeye yarar. Oldukça basit ve güncel bir örnek vereyim. Şirket yönetim kadroları her yıl gelecek dönemler için belli hedefler koyarlar. Bizim yöneticilerin ne farkı var? Onlar da hedef koymuşlar. Şu kadar makine satılacak! Anladığım kadarıyla satmışız da. Şu an hedefle aramızda kalan tek engel bu sattığımız makineleri üretmek. Yılın bitmesine beş hafta kaldı ve otuz makine daha üretmemiz gerekiyormuş.

Son yapılan departman yönetim toplantısında yöneticimiz kalan bu süreyi planlamada tabii ki her mantıklı insan gibi matematiği kullanmış. Üretilmesi gereken makine sayısını kalan süreye bölere hafta başına ortalama beş makine üretilmesi gerektiğini bulmuş. Bunu da montajcılar hedefi daha rahat takip edebilsinler diye üretim alanındaki duvara asmış. 5!

Görüldüğü gibi matematik hem anlama hem de kullanma açısından çok basit bir bilimdir. Ayrıca milyonluk projeleri de tek bir işlemle kurtarabilirsiniz.

Tabii ki bütün bir yıl boyunca haftada birbuçuk makine üretim ortalamasıyla çalışabilmiş bir montajcı ekibinin Noel dönemini de kapsayan bir zamanda haftada beş makine ortalamasına erişebilmesi mümkün değil ama bu matematiğin hatası değil.

Tipik bir pazar günü

Ümit: Baba, Heron metodunu biliyor musun?
Ben: Hayır.
Ümit: Biliyorsundur ya, belki adını bilmiyorsundur.
Ben: Nerede kullanılıyor?
Ümit: Matematikte, karekök hesaplamak için.
Ben: Bilmiyorum, anlat bakayım.
Ümit: İşte, önce karekökünü bulmak istediğimiz sayıyı alıyoruz. Örneğin 7. Sonra ilk tahminimizi yapıyoruz, mesela 1. Şimdi ikisini toplayıp ikiye bölüyoruz. Bir de 7’yi bu çıkan bölüme bölüyoruz. Sonra bu adımları tekrarlıyoruz. Üç dört adım sonra bulmuş oluyoruz.
Ben: Ha kolaymış.

… İki dakika sonra.

Ümit: Baba, şifrelemeyi biliyor musun?
Ben: Tabii ki.
Ümit: Çok ilginç gözüküyor.
Ben: İstersen şirketteki kitabımı getireyim, oradan her şeyi öğrenebilirsin.
Ümit: Kaç sayfa?
Ben: 800 kadar.
Ümit: Oldu o zaman.

… Üç dakika sonra.

Ümit: Oyun teorisi çok ilginçmiş. Biliyor muydun?
Ben: Elbette ilginçtir.
Ümit: Anlamadığım bir şey var ama.
Ben: Sor bakayım.
Ümit: Şimdi pay-off tablolarıyla deneme yapmak istiyorum ama bu tabloları nereden bulacağım?
Ben: Hmmm, bu çok kolay. Kağıt ve kalem alacaksın. Şöyle bir tablo çizeceksin ve içine rastgele sayılar koyup deneyeceksin.
Ümit: Anladım.

… Beş dakika sonra.

Ümit: Akşam programlama çalışabilir miyiz?
Ben: Ne programlamak istiyorsun?
Ümit: Uzaktan kumandalı araba. Java ile programlayalım. Bu arada ben de arabayı tasarlayayım.
Ben: Oğlum, şurada hazır robot araba var, bloklarla programlarız onu. Java’yla uğraşmaya gerek yok şimdi.
Ümit: Tamam.

… Yedi dakika sonra.

Ümit: İşte araba tasarımım şöyle olacak.
Ben: Göster bakalım.
Ümit: Düğmeye basınca pilden motora akım gelecek, tekerler dönecek. Sonra değişik komutlarla tekerler değişik şiddette dönecek böylece araba sağa sola dönebilecek.
Ben: Oğlum, demin bahsettiğim robot bu işleri yapıyor zaten ve şöminenin yanında kendisiyle oynamanızı bekliyor.
Ümit: Doğru.

… Onbir dakika sonra.

Ümit: Baba, Bir küreyi parçalara ayırıp birleştirdiğinde aynı büyüklükte iki küre yapılabildiğini biliyor muydun?
Ben: Elbette.
Ümit: Hmmmm.

… Onüç dakika sonra.

Ümit: Baba, sen bilmece seviyorsun, sana bir bilmece sorayım mı?
Ben: Sor tabii.
Ümit: Şu denklemi çözebilir misin?
Ben: Kolay soruymuş, çözemem. Ne denklemi bu?
Ümit: Aaaa bilmiyor musun? Eliptik eğriler hani. Taniyama-Shimura’yı da mı bilmiyorsun?
Ben: Kim o? Anime mi?
Ümit: Fermat var ya?
Ben: Hah, onu tanıyorum.
Ümit: İşte onun ispatıyla ilgili.
Ben: Anladım (tabii ki anlamadım).

Akşam.

Ben: Ümit, ödevlerini yaptın mı?
Ümit: Tarih ve resim ödevlerim var daha.
Ben: Bütün hafta sonu ne yaptın da bitmedi bu ödevler? Ha, tabii, Ishiguro filan.
Ümit: Taniyama-Shimura!
Ben: Her neyse. Peki ödevlerini bitir, diğer şeylere bakarız.
Ümit: Kumandayı versene, Grey’s Anatomy’yi açayım. Serkan! Dizi başlıyor.
Ben: Ödevlerini bitirsene önce.
Ümit: (Koltukta uzanmış, kucağında koca resim defteri) Yapıyorum işte.
Ben: Peki.

Eğitimde gözüme çarpanlar (Avogadro sayısı)

Lisede kimyada öğrendiğim ve hiç unutmadığım bir sayı. Altı sıfır iki on üzeri yirmiüç diye aklımda tuttuğum oldukça büyük bir sayı. Bir mol karbonda bulunan atom sayısını ifade ediyor ve evrensel bir sabit tabii ki.

Geçen gün Serkan’ın lise kimya ödevini kontrol ederken kitapta bu sabit için 600 trilyar (600 Trilliarden) isminin kullanıldığını gördüm. Evet Alman sisteminde trilyar 21 tane sıfır içermekte. Türkçe’de trilyar diye bir kelime yok ve 21 tane sıfır içeren sayının adı da seksilyon. Sayı isimlerinin ülkelere göre farklılıklar gösterdiğinin uzun zamandır farkındaydım. En sık karşılaştığım fark İngilizce’deki billion ile Almanca’daki billion idi. İngilizde’deki bizdeki milyara kalrşılık gelirken Almanca’daki bizim trilyona karşılık geliyor. Özellikle ekonomik yazılar okumak dikkat gerektiren bir iş oluyordu. Birinin trilyonu diğerinin sisteminde beş para etmeyebiliyor ya da tam tersi olabiliyor. Örneğin Alman trilyonu bizim hemen hemen hiç duymadığımız kentilyonumuza eşdeğer.

Bu sabah bu farkın nedenine baktım ve kısa ve uzun ölçek diye iki temel sistem olduğunu öğrendim. İki sistem de hemen hemen aynı önekleri kullansalar da kısa ölçek temel olarak bin sayısının kuvvetlerini, uzun ölçek ise milyon sayısının kuvvetlerini kullanmakta. Türkiye anladığım kadarıyla Amerika ve İngiltere gibi kısa ölçeği almış. Sadece isim olarak biz milyarı kullanırken, diğer ikisi bilyon demeyi tercih etmiş. Kıta Avrupa’sı da uzun ölçeği almış. Almanların milyarı ile bizimki aynı mesela ama ondan sonra yollarımız ayrılıyor.

Neden, ne zaman bu yollar ayrılmış, niye ülkeler bu seçimleri yapmış diye araştırmaya üşendim ama isteyenler ve erişimi olanlar hepsine vikipedi üzerinden ulaşabilir. Tarihi dokümanları okumaya çalışanların daha da dikkatli olması gerekir. Anladığım kadarıyla İngiltere, Fransa, İtalya gibi bazı ülkelerde değişik tarihlerde bir sistemden diğerine geçişler olmuş.

Eğitimde bu sayıların isimleri kolaylıklar yaratır mı bilmiyorum. Öncelikle o ismin de sık sık kullanılan bir şey olması lazım ki çocukların kafasında yer etmiş olsun. Türkiye’de seksilyona pek şans vermiyorum açıkçası. Almanya’da trilyarın işe yarayıp yaramadığını da ileride görürüm heralde.

Yazılımda kimera modeli

Uzun zamandır beraber çalıştığımız bir müşterinin makineleri için değişiklikler içeren bir proje yapmaya başladık. Aslında makineyi biz üretiyoruz, kullanıcı arabirimini de. Müşterimiz bu makinelere kendi mekanik sistemlerini ekleyerek başkalarına satıyor. Şimdi başladığımız projenin bir ayağı da müşterimizin kendi kullanıcı arabirimini geliştirmesini içeriyor ve bunun için de makinemizin ürettiği verilere, ölçümlere erişmesi ve bazı komutlar verebilmesi gerekiyor.

Önceki versiyonlarda bu haberleşme müşterinin sistemi ve bizim makinenin kontrol birimi arasındaydı. Yeni projede müşteri kendi arabirimi için bu sefer dışarıdan bir programcı tuttu. Haberleşmenin bizim makine ucunu da ben programlıyorum.

İlk iş olarak eski sistemde yapılabilen işleri yeni sisteme geçirdik. Tam işler bitti diyordum ki diğer programcıdan bir mesaj geldi. Eski sistemde verilerin silinmesi ile ilgili bir komut varmış. Ben daha önceki yazışmalarda da bu silme işleminin zaten makinede otomatik olarak yapıldığını ve belki de gerek olmadığını bildirmiştim ama anlaşılan müşterimiz bu fonksiyonda ısrarcıydı. Eski versiyonda bunu programlayan arkadaşa bu fonksiyonun verileri silmekten başka bir iş yapıp yapmadığını sordum. Bana verdiği cevap şu oldu: “Yok, sadece veriler siliniyor ve bir de üretim bantlarını hareket ettiriyoruz”. Ben de “o zaman silme işini ben yaparım ama hareket işi için sana bir komut gönderirim” dedim ama bu hareket işi de aklıma takıldı. “Neden bantları hareket ettiriyoruz ki?” diye sordum ve beklemediğim cevabı aldım. Sistem kullanıcıları veri silme komutunun sonucunun olumlu olup olmadığını bu şekilde anlıyormuş. “Nasıl yani? Kontrol birimi zaten olumlu ya da olumsuz cevap göndermiyor mu?” diye sordum. Öğrendim ki cevabı zaten gönderiyormuşuz ama müşterinin eski programcıları aldıkları bu cevap yerine görsel bir uyarı sistemini kullanmaya karar vermişler. Yani, kullanıcı, arabirimde veri silme komutunu veriyor. Sonra makineye koşuyor. Bantların hareket ettiğini görüyor. Ardından koşarak arabirimde bir sonraki komutu veriyor. Kullanıcılara spor yaptırmaktan başka ne işe yaradığını anlamadığım bu özelliği yeni versiyonda kullanmamayı önerdim ve programcı arkadaş bunu şimdilik kabul etti. Müşteri ısrar ederse yine yapılacaktır heralde, müşteri kraldır ne de olsa. Yine de bugüne kadar gördüğüm en ilginç insan makine entegrasyonu buydu.

Genom (Çözüm)

Soru

Aynı dizinin bir tamsayı kadar klonlandığını biliyoruz ama bu tamsayıyı bilmiyoruz. Eğer tamsayısı bilseydik bu dizinin kaç simgeden oluştuğunu bulabilirdik. O zaman önce o tamsayıyı bulalım.

Bütün simgeleri sayınca toplam 120 adet simge olduğunu görüyoruz. Demek ki elimizdeki dizinin uzunluğu 120 sayısını bölebilmeli. Eğer 120 sayısını çarpanlara ayırıp bu ihtimallere bakarsak olası uzunlukların 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60 ve 120 olduğunu görürüz. Tabii ki bu değerlerin bir kısmının doğru olamayacağını da bir bakışta görebiliyoruz. Yine de denemek için çok fazla sayı var, birazını daha elemeye çalışalım.

Her bir simgeyi tek tek sayalım. Bu durumda şu sonuca ulaşırız:

A = 30
C = 30
G = 25
T = 35

Aradığımız N tamsayısı bu sayıların hepsini bölebilmeli. Demek ki bu dört sayının en büyük ortak bölenini arıyoruz. Şimdi bu sayıları da asal çarpanlarına ayıralım:

A = 30 = 2*3*5
C = 30 = 2*3*5
G = 25 = 5*5
T = 35 = 5*7

Bu tablodan da görüldüğü gibi her sayı için ortak tek asal çarpan 5. Demek ki başlangıçta elimizde 5 dizi vardı, yani aradığımız dizinin uzunluğu 120 / 5 = 24.

Yani dizimizdeki simge dağılımı şu olmalı:

A = 30 / 5 = 6
C = 30 / 5 = 6
G = 25 / 5 = 5
T = 35 / 5 = 7

Şimdi elimizdeki uzun dizilere bakalım.

TAACTGTT        (1)

CTGTTCCA        (2)

ACTGTTC          (3)

ACTTGG            (4)

CCAACG           (5)

Bu parçaları ikişer ikişer alıp birbirlerinin üzerinde kaydırırsak bazı çiftlerin ortak dizileri olduğunu görürüz ve bazıların olmadığını. Örnek olarak şunlara bakalım:

(1) ve (2)
T A A C T G T T                (1)
      C T G T T C C A          (2)

(3) ve (4)
A C T G T T C                  (3) 
              ... A C T T G G  (4) 

ya da 
                  A C T G T T C (3) 
A C T T G G ...                 (4)

(3) ve (4) numaralı diziler birbirlerinin önekleri ya da sonekleri şeklinde olmadığından üstüste binen bir dizi parçası yok. Demek ki bu iki parça dizi üstünde farklı yerlerde olmalı. (3) numaralı dizi 7 simge uzunluğunda ve (4) numaralı parça da 6 simge uzunluğunda olduğundan dizimizdeki 13 simgeyi tanımlamış olduk. Henüz bu simgelerin dizi içindeki ve birbirlerine göre yerlerini bilmiyoruz ama.

(3) ve (4) numaralı parçalara bir de (5) numaralı parçayı ekleyelim. Yukarıdaki kaydırma işlemini uygularsak tek çakışmanın (3) numaralı parçayla aşağıdaki şekilde olabileceğini görürüz.

(3) ve (5)
A C T G T T C                 (3)
            C C A A C G       (5)

Bunun sonucu olarak (3) ve (4) numaralı parçalara ek olarak en az 5 simge daha (CAACG) belirlenmiş oldu. Şimdi bu üç parçayı alıp simgeleri sayalım.

ACTGTTC   (3)
ACTTGG    (4)
(C)CAACG  (5)
İlk simge parantez içinde çünkü (3) numaralı parçanın son simgesiyle ortak olabilir.
İlk durum olarak birinci C simgesinin ortak olmadığını varsayalım. O zaman aşağıdaki
simge dağılımını buluruz.

A = 4
C = 6
G = 4
T = 5

Yani bütün C simgeleri bu üç parçadan gelmekte. Ayrıca toplam uzunluk bu durumda 19 simge olduğundan kalan (1) ve (2) numaralı parçalar da bu dizilerle epey örtüşmeli. Bu örtüşmeyi en iyi (3) numaralı parça sağlar. Şimdi böyle bir çözüm bulabilir miyiz diye bakalım. Özellikle C simgesine odaklanalım. (1) numaralı parçanın ortasında bir C simgesi var. Bu simge (3), (4) ya da (5) numaralı parçaların bir C simgesiyle örtüşmeli, aksi bir durumda dizide altıdan daha fazla C simgesi olur. Ayrıca (2) numaralı parçanın sonundaki C simgeleri de yine (3), (4) ya da (5) numaralı parçaların C simgeleriyle örtüşmeli. Burada birkaç deneme yapmamız gerekebilir.

1. deneme:
T A A C T G T T                                 (1) 
      C T G T T C C A                           (2)
    A C T G T T C                               (3) 
                    A C T T G G                 (4)
                                C C A A C G     (5)

T A A C T G T T C C A C T T G G C C A A C G  Bu dizilimde 7 tane C simgesi var.

Sorun (2) numaralı parçanın örtülmeyen son C simgesinde. Bunu (4) ve (5) numaralı parçalarla örtmenin bir yolu şöyle olabilir.

2. deneme:
T A A C T G T T                                 (1) 
      C T G T T C C A                           (2)
    A C T G T T C                               (3)
                C C A A C G                     (5)
                            A C T T G G         (4)


T A A C T G T T C C A A C G A C T T G G

Bu denemede aynı zamanda (3) ile (4) numaralı parçaların da birer C simgesinin örtüştüğüne dikkat çekmek istiyorum. Başka bir yolla bu ikinci C simgesini örtmenin yolunu bulamadım. Bu şekilde toplamda da 5 tane C simgesi olduğundan biraz daha esneklik kazanmış olabiliriz. Buradaki sorun (4) numaralı parçanın bu büyük parçaya göre pozisyonu ve iki bloğun da ana dizi içindeki yerleri henüz bilmememiz.  Elimizdeki alt dizi toplamda 20 simge uzunluğunda ve sadece 4 simgelik yerimiz kaldı.

Şimdi kalan uzun parçalardan birini alalım, mesela

GGTCA              (6)

Bu parçanın örtüştüğü tek yer sondaki çift G.

Üçüncü deneme:
T A A C T G T T                                 (1) 
      C T G T T C C A                           (2)
    A C T G T T C                               (3)
                C C A A C G                     (5)
                            A C T T G G         (4)
                                    G G T C A   (6)

T A A C T G T T C C A A C G A C T T G G T C A

A = 6
C = 6
G = 4
T = 7

Görüldüğü gibi bu altdizide 24 simge var ve sadece bir tane G eksik. Şimdi kalan parçalardan içinde G olanları bu diziye eklemeye çalışalım.

Bu adımda GGTAA parçası için yerimiz kalmadığını görebiliriz. Demek ki önceki adımlarda başka bir yolu seçmemiz gerekiyor. Bu arada GGTAA parçasını da (7) numaralı parça olarak tanımlayarak ikinci bir küçük problem elde edebiliriz. İlk küçük problemimiz ilk beş parçanın C simgesi ve toplam uzunluk kıstasları üzerinden analiziydi. İkinci küçük problemimiz de toplam uzunluk ve G simgelerinin uyumudur. Çözüm dizisinde beş adet G olduğunu biliyoruz. (1) numaralı dizinin ortasında bir adet G var. Kalan kısımda da dört tane G olmalı. Dikkat edersek (4), (6) ve (7) numaralı parçalarda yanyana G simgeleri var. Çift G simgeleri (4) numaralı parçanın sonunda, (6) ve (7) numaralı parçaların ise başında. (6) ve (7) numaralı parçalar aynı uzunlukta ve birbirlerini örtemiyorlar. Demek ki ya (4) ve (6) numaralı parçalar birbirini örterken (7)  numaralı parçanın ilk G simgesi (5) numaralı parçanın son G simgesini örtecek, ya da (4) ve (7) numaralı parçalar birbirlerini örterken (6) numaralı parça (5) numaralı parçanın son G simgesiyle ilgilenecek. Her iki durumda da (4) numaralı parça (1), (2), (3) ve (5) numaralı parçalardan oluşan bloğun önüne gelmeli.

Dördüncü deneme:
A C T T G G                                              (4)
        G G T C A                                        (6)
                  T A A C T G T T                        (1) 
                        C T G T T C C A                  (2) 
                      A C T G T T C                      (3)   
                                  C C A A C G            (5) 
                                            G G T A A    (7)

A C T T G G T C A T A A C T G T T C C A A C G G T A A

Kolayca görüldüğü gibi bu dizinin uzunluğu 27 simge, yani aradığımız dizi bu olamaz. O zaman aynı yöntemi (4) ve (7) gruplar başta olacak şekilde deneyelim.

Beşinci deneme:
A C T T G G                                                  (4)
        G G T A A                                            (7)
                  T A A C T G T T                            (1) 
                        C T G T T C C A                      (2) 
                      A C T G T T C                          (3)   
                                  C C A A C G                (5) 
                                            G G T C A        (7)

A C T T G G T A A T A A C T G T T C C A A C G G T C A

Maalesef bu dizi de 27 simge uzunluğunda ama bu denemeye biraz dikkatli bakarsak (7) numaralı parçanın sonuyla (1) numaralı parçanın başının örtüştüğünü görürüz. Şimdi bunu kullanarak bir deneme daha yapalım.

Altıncı deneme:
Dördüncü deneme:
A C T T G G (4)
        G G T A A (7)
            T A A C T G T T (1) 
                  C T G T T C C A (2) 
                A C T G T T C (3)   
                            C C A A C G (5) 
                                      G G T C A (6)

A C T T G G T A A C T G T T C C A A C G G T C A

A = 6
C = 6
G = 5
T = 7

İstenen simge dağılımına ve dizi uzunluğuna sahip bir çözüm bulduk. Şimdi bütün parçaların bu dizi üzerinde bulunduğunu göstermek kaldı. Bunu da size alıştırma olarak bırakıyorum. Bu arada bu dizilimin verilen şartları sağlayan tek çözüm olup olmadığını da ispatlamadım. Bu da ileri seviyedekiler için bir alıştırma olsun.

Genom

Elimizde aşağıdaki resimde görüldüğü üzere bir organizmanın aynı kromozomuna ait DNA (aynı sarmalından) dizilim parçaları var. Kaç tane DNA örneği kullanıldığını bilmiyoruz ama bütün dizilimlerin aynı olduğunu biliyoruz (ümit ediyoruz). Dizilimin tamamını bulunuz.

 

 

Eğitimde gözüme çarpanlar

Ümit dün akşam elime aşağıdakine çok benzer bir akış şeması tutuşturdu ve bu şemayı bana ezbere anlatmaya başladı. Anlamayanlar için kısa bir açıklama yapayım. Yasama organlarının işleyişiyle ilgili bir şema. Olay Almanya’da geçiyor, hem de Federal Almanya’da, yani yasamaya katılan federal organlar da var. Bu yüzden şema biraz karışık.

Almanya’da yasamanın işleyişi

Çocuk tabii ki bütün şemayı ezberlemiş ama hangi organın bir adımda neden bu işi yaptığını, bu adımların neden bu sırada yapılması gerektiğini, hatta bu organların kimlerden ve nasıl oluştuğunu da bilmiyordu. Kafamın aldığınca ve dilimin döndüğünce anlatmaya çalıştım ama Ümit bu hafta bir sürü sınavı olduğu bahanesiyle sadece şemayı ezberlemeye odaklanmayı seçti.

Bu konu sınıfta nasıl işlendi bilmiyorum (bizim zamanımızdaki vatandaşlık derslerinde bize böyle şemalar bile dağıtılmıyordu) ama bu dersi ben nasıl anlatmak isterdim diye düşünmeye başladım.

Önce çocukların arasında parlamento, hükümet gibi gruplar kurup temsili yasaları çıkarma oyunu oynatmayı düşündüm ama yedi yüz kişilik bir meclisi yirmibeş kişilik bir grupla canlandırmak yanlış olur dedim. Keşke sınıflar çok daha kalabalık olabilseydi.

Küçük bir alanda daha uygulanabilecek bir şeyler düşünmeye başladım. Örneğin önce şemanın en tepesindeki üç organ gerçek oturumlardan alınmış video parçaları ile tanıtılabilir. Gerçek insanlar ile. Sonra belki yine gerçek yasama oturumlarından alınmış çekimlerle bu kişilerin yukarıdaki adımlarda gerçekte neler yaptıkları kısaca gösterilebilir. Hatta belki video görüntülerinin üzerine küçük işaretler ya da yazılarla kimin hangi partiye üye olduğu (ya da bağımsız) bilgisi de eklenebilir. Böylece bir partinin komple aynı kararı vermek zorunda olmadığı da gösterilebilir. Bu kadarı yukarıdaki şemanın işleyişi için yeterli olacaktır ama bu adımların neden bu sırada olması gerektiğini anlamak için daha başka hesapları da göstermek gerekecektir. Buraya kadar video oynatma imkanının olduğunu varsaydığımdan bu hesaplar için de küçük animasyonlar kullanılabilir. Temsili bir meclis, hükümet, partiler, milletvekilleri kolayca programlanabilir, bu programda sayılarla oynayarak temsili hesaplar yapılabilir ve bu sonuçların etkileri tartışılabilir. Eğer bu imkan yoksa tahtada da şekiller çizerek ve elle hesaplar yaparak bu olasılıklar tek tek işlenebilir.

Evet, benim yöntemim oldukça masraflı olurdu. Her ders böyle işlenirse de konular zamanında yetişmezdi ama bence çocukların öğrenmesi konuların yetişmesinden çok daha önemli olmalı.