ProgramByDesign - ProgramByDesign

ProgramByDesign (vakti zamanında TeachScheme!) proje bir sosyal yardım çabasıdır PLT Araştırma grubu. Hedef üniversite fakültesi, lise yetiştirmek öğretmenler ve muhtemelen ortaokul öğretmenleri programlama ve bilgi işlem.

Tarih

Matthias Felleisen ve PLT çabaya Ocak 1995'te başladı, bir gün sonra Programlama Dilleri İlkeleri Sempozyumu (POPL), yaptığı gözlemlere yanıt olarak Rice Üniversitesi birinci sınıf öğrencileri ve cebir Müfredat yerel devlet okullarının. Amacı kullanmaktı fonksiyonel programlama getirmek matematik canlı ve giriş kısmına tasarım bilgisinin enjekte edilmesine yardımcı olun bilgisayar Bilimi Müfredat.

Çaba kullanmaya başladı Programlama dili dilin bir versiyonu olan PLT Şeması adlı Şema, hangisi daha yeni lehçe eski bir dilin Lisp.

Grup birkaç özelden fon topladı vakıflar, Amerika Birleşik Devletleri Eğitim Bakanlığı, ve Ulusal Bilim Vakfı yaratmak:

  • Fonksiyonel programlamada yeni başlayanlar için uygun yazılım
  • Ders yazılımı: müfredat, ders notları, alıştırmalar, mini projeler
  • Öğretmen yetiştirme kampları

On yıl boyunca, haftada birkaç düzine çalıştı eğitim atölyeleri 550 öğretmen için. 2005 yılında TeachScheme! proje, iki düzine öğretmenin çalışmalarını öğrencilerle sunduğu bir Yıldönümü atölyesi yürüttü.

2010 yılında PLT, ana programlama dilini PLT Şeması -e Raket, ve DrScheme -e DrRacket. Biraz sonra yeniden adlandırıldı TeachScheme! -e ProgramByDesign.

Fonksiyonel programlama, hesaplama ve cebir

ProgramByDesign'ın başlangıç ​​noktası, öğrencilerin bilgisayar olarak hareket ettikleri gözlemidir. ilkokul aritmetik kursları ve orta okul ve orta okul kurslar ön cebir ve cebir. Öğretmenler bunları kurallarla programlar ve alıştırmalar yoluyla belirli problemleri çalıştırır. Anahtar nokta, öğrencilerin tamamen işlevsel programları yürütmesidir.

Öğrenciler işlevsel programlar yaratan ve bunları bilgisayarlarda çalıştıran öğretmenlere dönüştürülebilirse, bu içerik güçlendirilebilir ve öğrencilere matematik ve işlevsel programlar yazmanın, canlı animasyon sahneleri ve hatta bilgisayar oyunları yarattığını gösterebilir.

İşte bir örnek:

(gerek 2htdp / evren)(gerek 2htdp / resim);; şimdiki zamandan bir görüntü oluştur(tanımlamak (görüntü yarat t)   (yer görüntüsü ELMA 50 (* 1/10 t t) UZAY));; temel resimler için isimler(tanımlamak ELMA (daire 3 "katı" "kırmızı"))(tanımlamak UZAY (boş sahne 100 100))(canlandırmak görüntü yarat)

Bu kısa program, küçük beyaz bir tuvalin tepesinden aşağıya düşen bir elmayı simüle eder. Üç bölümden oluşur:

  • Yer-imge, daire ve boş sahneli görüntülerin cebirini varsayarak, matematikte tek satırlık bir işlev olan görüntü yaratma için bir işlev tanımı tanıtıldı
  • Bir cebir metnindeki "x 5 olsun" örneğinde olduğu gibi, adların bir değerle eşitlendiği iki kısaltma
  • Programı çalıştırmak için bir satır

Bir öğretmen, görüntü oluşturmayı bir cebir dersindeki herhangi bir sıradan işlev kadar kolay bir şekilde açıklayabilir. Örneğin, önce iki satırlı bir tablo çizilebilir ve n her bir sütunun içerdiği sütunlar t üstte ve altta uygun bir resim. Yani, sayılar soldan sağa doğru artarsa, her görüntüde kırmızı nokta biraz daha düşüktür.

Son olarak canlandırma satırı, verilen işlevi, görüntü oluşturmayı saniyede 28 tıklama oranında 0, 1, 2, 3 vb. Elde edilen görüntüler bilgisayar monitöründe aynı hızda görüntülenir. Filmler böyle yapılır.

Böyle bir örnek için gerekli olan arka plan, film yapma, DrRacket'teki resimlerin cebiri hakkında (sayılar için olana benzer) ve minimum ön cebir hakkındaki bilgiden biraz daha fazlasıdır. ProgramByDesign projesi, ancak, çocukların bu tür bir programla daha çok eğleneceğini iddia ediyor. canlı bahçe karolarının sayısını sayan cebirsel ifadelerden daha fazla işlev görür [8-9. sınıflar için Prentice Hall kitaplarına bakın].

ProgramByDesign projesi, hem geleneksel matematik hem de fen derslerinin bu programlama biçimini entegre etmekten yararlanabileceğini önermektedir. Gelenekselin aksine TEMEL veya Visual Basic Bu tür kitaplardaki bloklar, bir Racket programı matematik kadar çok satırdan oluşur. Matematik ve program arasında geçiş bu nedenle basittir. Daha da iyisi, ikisinin anlamı aynı. DrRacket'in cebirsel adımlayıcısı, Racket'in programı bir altıncı veya yedinci sınıf öğrencisi gibi, düz cebir kullanarak adım adım nasıl değerlendirdiğini gösterebilir.

Programlamada Fonksiyonel Programlama, Hesaplama ve Tasarım 101

Programlamaya giriş müfredatı için ProgramByDesign projesi derslerin sistematik tasarımın rolüne odaklanması gerektiğini vurgulamaktadır. Öğrenciler bir daha asla programlama yapmasalar bile, problem çözmeye sistematik bir yaklaşımın ne kadar yararlı olduğunu görmelidirler. Bu, programcı, doktor veya gazeteci veya fotoğrafçı olsalar da onlara yardımcı olacaktır. Bu nedenle, programlamaya giriş dersi, öğrencilerin şu anda moda olan (ve yakında modası geçecek) programlama dillerinin sözdizimini öğrendikleri bir yer olarak değil, yaygın olarak uygulanabilecek bir şeyi öğrenebilecekleri bir yer olarak algılanacaktır.

ProgramByDesign müfredatının temel tasarım öğesi, tasarım tarifi. İki boyutu vardır: süreç boyutu ve veri boyutu.

Süreç boyutu boyunca öğrenciler, bir (basit) programı çalıştırmadan ve diğerlerinin kullanmadan önce tasarlamanın altı adımı olduğunu öğrenirler:

  1. Programa giren ve çıkan veri sınıflarını açıklamak amacıyla problemlerin analizi;
  2. Problem ifadesini kısa bir amaç ifadesi olarak yeniden formüle etmek
  3. Amaç ifadesini açıklayan ve başarı için kriter görevi gören örnekler oluşturmak;
  4. Şablon veya envanter olarak da adlandırılan vericileri organize etme
  5. Kodlama
  6. Programın küçük girdiler üzerinde düzgün çalıştığından emin olmak için örneklerden bir test paketi oluşturmak.

De olduğu gibi test odaklı geliştirme, test senaryoları yazılır önce kodlama, testin bir parçası olarak sonradan değil, gereksinim analizinin bir parçası olarak.

Hemen hemen her insan çabası, problemi açıkça anlamaktan, başarı kriterlerini belirlemekten, mevcut kaynakları ve verilenleri analiz etmekten, önerilen bir çözüm geliştirmekten ve kriterlere göre kontrol etmekten faydalanabilir.

Örneğin, bir gazeteci benzer bir süreçten faydalanır: bir haberdeki ana kavramları bulmak; bir başlık oluşturmak; örnekleri ve belirli verileri sıralamak; verilenlerin hikayesi ve hikayenin nasıl geliştiği hakkındaki makaleyi düzenlemek; yazı; ve doğruluk kontrolü.

Veri boyutu şu maksim ile özetlenebilir: verinin şekli kodun şeklini belirler ve test eder. Örneğin, girdi veya çıktı veri türünün üç çeşidi varsa, bir test paketi her bir değişkenden en az bir test senaryosuna sahip olmalıdır ve program kodu muhtemelen üç yollu bir koşullu (polimorfik bir gönderimde açık veya gizli) içerecektir. Giriş veya çıkış veri türünde üç alan varsa, bir test takımı bu üç alan için değerler belirtmek zorunda kalacak ve program kodu bu üç alana başvurmak zorunda kalacaktır. Giriş veya çıkış veri türünün basit bir temel durum ve bir veya daha fazla kendine referans varyantı, test paketi bir temel durum ve bir veya daha fazla temel olmayan durum içermelidir ve program kodu muhtemelen bir temel duruma ve bir veya daha fazla kendine referanslı duruma sahip olacaktır, veri türüne izomorfiktir. . Tekniği özyineleme gizemli ve korkutucu olmaktan ziyade, önceden öğrenilmiş yöntemleri kendine referanslı bir veri türüne uygulamaktır.

Verilenleri organize etmek, verilerin tanımlarını bir program çerçevesine çevirme görevidir. Her bir açıklama biçimi, belirli bir program organizasyonu biçimini belirler. Dönüşüm neredeyse mekaniktir ve öğrencilerin görevin yaratıcı kısmına odaklanmasına yardımcı olur.

Programlar Nasıl Tasarlanır (HTDP), ProgramByDesign grubunun çekirdeği tarafından yazılan metin kitabıdır.[1] Üçüncü bir baskı hazırlanıyor.[2]

Programlama dili seçimi

TeachScheme adı! Görünüşe göre bu tasarım tarifinin Scheme (şimdi Raket ) ve yalnızca Scheme ile öğretilebilir. Sonuçların hiçbiri doğru değil. PLT üyeleri ve kursiyerleri tasarım reçetesini montaj dili, C, Java, ML, Python ve diğer programlama dilleri ve geometri, biyoloji ve şiir kursları. ProgramByDesign'ın temel fikri, programlamayı bir tasarım etkinliği olarak vurgulamaktır. Bu yanlış anlama, 2010 yılında gerçekleştirilen yeniden adlandırma işlemlerinin nedenlerinden biridir.

Başlamak için, ProgramByDesign projesi üç temel unsur üretti:

  • Racket'in lehçeleri olan, tasarım reçetesiyle eşleşen, ancak öğrencinin düzeyiyle eşleşen hata raporlaması olan (örneğin, standart Racket'te yasal olan ancak yeni başlayan bir öğrencinin yapmadığı birçok şey), birbirini izleyen daha güçlü ve izin veren bir dizi öğretim dili Başlangıç ​​Öğrenci düzeyinde hata olarak işaretlenir)
  • Başlangıç ​​dostu, ücretsiz indirilebilen, pedagojik programlama ortamı, entegre geliştirme ortamı Bu dil seviyelerini zorlayan DrRacket adlı
  • Çoğunlukla Program Nasıl Tasarlanır kitabında kodlanmış bir müfredat,[1] hangi üçüncü baskı çalışmalarda yer almaktadır.[2]

Racket seçimleri, varsayımlarını doğrulamak için (Java'ya göre) çok az finansmanı olan küçük bir ekip için Racket'in iyi bir dil olduğuna olan inançlarını yansıtır. PLT grubu her zaman fikirlerin diğer bağlamlara taşınabilir kalmasını sağlamaya çalıştı.

Java için

Ekip, son birkaç yılda müfredatın ikinci bir bölümünü veya aşamasını da oluşturdu. Aynı tasarım tarifi fikirlerinin bir kompleks için nasıl geçerli olduğunu gösterir. nesne yönelimli programlama gibi dil Java. Tarifler başlangıçta işlevsel bir paradigmada uygulanır, daha sonra polimorfizm ve kalıtım gibi nesneye yönelik kavramlar ve ardından ana akım Java'da deyimsel olan zorunlu yöntemler sunulur.

Ekibin bir kısmı, kolejlerde ve liselerde saha testleri yapmak için Ulusal Bilim Vakfı'ndan bir hibe aldı. Profesyönel geliştirme atölye çalışmaları 2007, 2008, 2009 ve 2010 yazında gerçekleşti. Projenin bu kısmına ReachJava adı verildi; beraberindeki kitap geçici olarak "Sınıflar Nasıl Tasarlanır" olarak adlandırılmıştır.

Önyükleme

2006 yılında, Northeastern Üniversitesi'nde PLT ve Vatandaş Okulları Boston'dan okul sonrası programlarla şehir içi öğrencilere ulaşmak için ortak çaba sarf edildi. Citizen Schools, gönüllüleri okul sonrası program siteleriyle eşleştiren ve onları yazılı müfredatla başlatan ülke çapında bir organizasyondur. Çabanın amacı materyali altıncı sınıf müfredatına çevirmektir. İlk birkaç test Boston'da büyük bir başarıydı.[3][4] Bu programın matematik dersleri üzerindeki etkisi, Microsoft ve Google ulusal bir ölçek büyütme çabasını finanse etmek, öğretmenleri eğitmek için materyaller geliştirmek ve Teksas, Kaliforniya ve diğer gönüllü şehirlerde siteler oluşturmak.

Referanslar

  1. ^ a b Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram (2018-01-06). "Programlar Nasıl Tasarlanır". MIT Basın. Alındı 2019-01-08.
  2. ^ a b Felleisen, Matthias. "Programlar Nasıl Tasarlanır, Üçüncü Baskı". Felleisen.org. Alındı 2019-01-08.
  3. ^ "Bootstrap programı, Roxbury, Dorchester ortaokul öğrencilerini çekiyor". Boston.com. 2011-05-03. Alındı 2011-09-29.
  4. ^ Krishnamurthi, Shriram (Mart 2009). "Akıllı Telefonlar için Moby Şema Derleyicisi". Brown Üniversitesi, Bilgisayar Bilimleri Bölümü. Alındı 2019-01-08.

Dış bağlantılar