Üniversite düzeyinde tanıtım programcılığı öğrettim. Ekmek-tereyağı kursu oldu, tüm fakülteler yaptı ve bence gayet iyi yaptık. Ortak bir metni takip ettik ve ortak sınavlar yaptık, ancak her birimizin işe yarayan kendi sınıf yöntemimiz vardı. O zamandan bu yana uzun zaman geçti, ama bazen programlamada bazı çocuklara özel dersler veriyorum ve tüm resim aynı.
Yapmamın yolu mümkün olduğunca somut, en alttan başlamak. Öğrencilerin bildiği bir yapıdır. Zaten çok fazla kavramları var. Bunların üzerine başka kavramlar inşa ediyorum ve onların üretkenliği olan kavramları oluşturabiliyorum. Aynı zamanda yaparak öğrenmelerini sağlarım .
Intel 8008 yonga, biraz EPROM ve birkaç devre ile küçük bir bilgisayar inşa ettim. G / Ç yongası birkaç hoparlöre bağlandığında, küçük bir düet çalması için programlamıştım. Küçük programın nasıl çalıştığını, bir sayacı geri saymak için bir iç döngü ile açıklayacağım. Bu gecikme gibi davranır. Sonra çıktı biti değiştirir ve tekrar yapardı. Bunu bir süre yapar ve sonra başka bir gecikmeye geçer, başka bir adım verir, vb. Bellek yongasının biraz zamanlayıcısı vardı ve zamanlayıcı girişlerinden birinin altına bir kapasitör kablosu soktuysam , program yavaşça vejeteryanı çalıştırırdı . Sınıf konuşmacıların tıklandığını, tıklandığını, tıklandığını duyabiliyordu ... Sınıfın bilgisayarın her seferinde bir adım çok basit şeyler yaptığını anlamasını istedim.. Sonra kapasitörün bağlantısını keserdim ve “müzik” patlardı. (alkış)
Sonra, her biri 4 haneli bir ondalık basamağa sahip, 1000 bellek konumuna sahip, çok basit bir ondalık bilgisayar için bir simülatör kurdum. "Akümülatöre ekle", "eğer negatifse zıplar" gibi çok basit kodlara sahipti. Bu "makine dilinde" iki sayı eklemek veya bir numara listesi eklemek gibi küçük programlar yazmalarını isterdim. Sonra tek adımla çalışarak veya "hızlı" çalışmasını izlemek için Enter tuşunu basılı tutarak çalışabilirlerdi.
Bunun amacı, bilgisayarların yalnızca çok az sayıda farklı temel işlemleri yapabileceği ve bunları birer birer yapabilecekleri kavramını ortaya koymaktı. Bu, bilgisayarların karmaşık olduğu ve her şeyi aynı anda yaptıkları izlenimine karşı koymak ve aklınızı pazarlıkta okumaktır.
Oradan "basit" bir dilde (BASIC :) programlama yapmaya başladık, çok basit ama ilginç programlardan başlayarak, koşullarla çalışma, döngüler, diziler, dosyalar, birleştirme vb. Amaç, kendi seçtikleri bir projeye devam edebilmeleri için yeterli bir beceri seti koymaktı, çünkü programlamayı ilginç kılan tek şey - onu kullanabileceğiniz kullanımı. Projeler için bazı fikirler ortaya atardım ve sonra onu oradan alırlardı. Onlardan son dakikaya ertelemelerini ve sonra paniklemelerini engellemek için yazılı fikirler isteyeceğim ve ardından raporları ilerleteceğim. Projelerin en iyi kısmı olduğunu düşünüyorum çünkü kendi güçleriyle öğreniyorlardı.
Bu, hangi bilgisayarların ne yaptığını çok net bir şekilde anlamanın ilk temeli, daha sonra kavramları öğretmeyi çok daha kolay hale getirdi; aksi halde, diziler veya (daha sonraki bir kursta) işaretçiler gibi gerçek bir hız artışı olacaktır. “Soyutlama” kavramını bu harika şey olarak yüceltmeye meyilliyiz, ancak havada değil somut bir temel üzerine inşa edilmesi gerekiyor.