AP Computer Science Principles sınavının Create Performance Task bölümünde öğrencilerin karşılaştığı en kritik ancak en az anlaşılan kavramlardan biri procedure ve function soyutlamasıdır. İki satır kod yazıp çalıştırmak çoğu zaman kolaydır; asıl zorluk, bu kodu neden ve nasıl soyutlayarak yeniden kullanılabilir procedure'lara dönüştüreceğinizi kavramaktır. Bu makale, AP CSP'in Create Performance Task bileşeninde rubric'in üçüncü satırında tam puan almak için procedure mimarisi tasarımının nasıl yapılacağını, parametre kullanımının neden salt değişken atamalarından farklı olduğunu ve soyutlama katmanlarının sınav değerlendiricileri tarafından nasıl okunduğunu derinlemesine incelemektedir.
Create Performance Task'ta soyutlamanın sınavdaki yeri
AP CSP'in Create Performance Task bileşeni, toplam sınav puanının yüzde otuzuna karşılık gelir ve doğrudan okul ortamında tamamlanır. Bu görevde öğrencilerden bir dijital eser — genellikle bir uygulama, oyun veya etkileşimli program — üretmeleri, buna ilişkin yazılı yanıtlar sunmaları ve kodlarını incelenmeye hazır hale getirmeleri beklenir. Değerlendirme rubric'i altı satırdan oluşur ve her satır en fazla bir puan değerindedir. Rubric'in üçüncü satırı, procedure ve function kullanımı ile ilgilidir ve bu satırda tam puan alabilmek, soyutlamanın yalnızca teknik bir beceri olmadığını, aynı zamanda tasarım kararlarının bir yansıması olduğunu anlamayı gerektirir.
Öğrencilerin bu satırda sıklıkla düştüğü hata, zaten çalışan birkaç fonksiyon yazmış olmalarına rağmen bu fonksiyonların gerçek bir soyutlama katmanı oluşturmadığını fark edememeleridir. Kodda onlarca satır tek bir yerde durabilir, fonksiyon isimleri function1, function2 gibi genel kalabilir veya parametre kullanımı salt argüman aktarımı düzeyinde kalabilir. Bu senaryolarda değerlendirici, soyutlamanın varlığını görebilir ancak nitelik açısından yetersiz bulabilir.
Procedure soyutlaması: Temel kavram ve CSP pseudocode bağlamı
Soyutlama, bilgisayar bilimlerinde karmaşık bir sistemi önemli ayrıntıları saklayarak ve yalnızca gerekli bilgileri sunarak basitleştirme sürecidir. AP CSP müfredatında bu kavram, yedi büyük fikirden biri olarak karşımıza çıkar ve özellikle Create Performance Task'ta soyutlama düzeyleri üzerinden somutlaştırılır.
AP CSP'in kullandığı pseudocode, herhangi bir programlama dilinin sözdizimine tam olarak bağlı değildir; bu durum öğrencilere bazen avantaj sağlar, bazen de kavramsal netliği zorlaştırır. Procedure tanımlamak için PROCEDURE anahtar kelimesi, parametre parantezleri ve süslü parantezler içinde kod bloğu kullanılır. Ancak asıl soru şudur: bir procedure'ı soyutlama aracı olarak mı kurdunuz, yoksa yalnızca kodu parçalara bölmek için mi?
Bu iki motivasyon arasındaki fark, rubric değerlendirmesinde bellidir. Bir procedure yalnızca kodu bölüyorsa, buna yordamsal ayrıştırma diyebiliriz. Ancak bir procedure aynı zamanda bir problemi genelleştiriyor, farklı girdilerle çalışabilir hale geliyorsa ve bu genelleme koda düşünülmüş bir karar olarak yansıyorsa, bu gerçek bir soyutlama katmanıdır.
Soyutlamanın üç katmanı
AP CSP bağlamında soyutlama üç temel katmanda ele alınabilir:
- Veri soyutlaması: Ham verinin anlamlı bir tipe dönüştürülmesi — örneğin bir sayı dizisinin
skorListesiolarak adlandırılması ve bu yapının skor verilerini temsil ettiğinin belirtilmesi. - Prosedürel soyutlama: Karmaşık bir işlemin tek bir procedure çağrısına indirgenmesi — örneğin bir oyundaki çarpışma algılama mantığının
checkCollision(nesne1, nesne2)gibi bir procedure içine alınması. - Soyutlama hiyerarşisi: Procedure'ların birbirini çağırarak katmanlı bir mimari oluşturması — üst düzey bir procedure'ın alt düzey procedure'ları çağırması ve her katmanın kendi soyutlama düzeyini koruması.
Rubric'in 3. satırı: Procedure ve function kullanımında tam puan kriterleri
AP CSP Create Performance Task rubric'inin üçüncü satırı şu soruyu sorar: Programınızda en az bir procedure veya function tanımladınız mı ve bu procedure, programınızın çalışmasına anlamlı bir katkı sağlıyor mu?
Bu satırda tam puan alabilmek için üç koşulun bir arada sağlanması gerekir:
- Programda en az bir
PROCEDUREveyaFUNCTIONtanımlanmış olmalıdır. - Bu procedure, programa soyutlama katkısı sağlamalıdır; yani aynı işlevsellik doğrudan ana kod bloğunda da yazılabilirdi ancak procedure kullanılarak düşünülmüş bir ayrıştırma tercih edilmiştir.
- Procedure, en az bir parametre almalı ve bu parametre procedure'ın davranışını etkilemelidir.
Üçüncü koşul, öğrencilerin en çok takıldığı noktadır. Bir procedure'ın parametre almaması, onu doğrudan bir makroya dönüştürür — her çağrıldığında aynı şeyi yapar. Böyle bir procedure soyutlama değil, yalnızca kod tekrarını önleme işlevi görür. Bu elbette yararlıdır, ancak AP CSP rubric'inin 3. satırında aradığı genelleştirilmiş soyutlama düzeyine ulaşmaz.
Örneğin, bir oyun programında PROCEDURE movePlayer() şeklinde parametresiz bir procedure yazmak, kodu düzenli hale getirir. Ancak aynı procedure'ın PROCEDURE movePlayer(yön) şeklinde bir yön parametresi alması, artık aynı kod yapısının farklı durumlarda kullanılabileceği anlamına gelir. Bu genelleme, soyutlamanın özsüdür.
Yerel ve genel değişken kapsamı: Neden scope yönetimi puan kazandırır
Procedure soyutlamasının bir diğer kritik boyutu, değişken kapsamı yönetimidir. AP CSP pseudocode'unda değişkenler ya yerel (bir procedure içinde tanımlanan ve yalnızca o procedure'ta geçerli olan) ya da genel (programın herhangi bir yerinden erişilebilen) olabilir. Bu ayrım, öğrencilerin kodlarında bilinçli bir tasarım kararı olarak mı hareket ettiğini gösteren önemli bir göstergedir.
Değerlendiriciler, öğrenci kodunu incelerken şu soruları sorar: Procedure içinde tanımlanan yerel değişkenler, o procedure'ın kendi işini yapması için gerekli mi? Yoksa genel değişkenlere bağımlılık yaratılarak procedure'ın taşınabilirliği mi engellenmiş? Bir procedure, işini tamamlamak için yalnızca parametrelerden gelen veriyle çalışıyorsa, bu durum yüksek soyutlama düzeyinin göstergesidir. Aksine, procedure sürekli olarak programın farklı yerlerindeki genel değişkenleri okuyup yazıyorsa, bu procedure bağımsız bir soyutlama birimi olmaktan çıkmış, aksine ana programın bir parçası haline gelmiştir.
Tecrübemde gördüğüm en yaygın hata, PROCEDURE hesapla() gibi parametresiz bir procedure içinde onlarca satır boyunca genel değişkenlerle işlem yapılmasıdır. Bu yapı, procedure'ın var olma gerekçesini zayıflatır. Aynı kod bloğu doğrudan ana programda da yazılabilirdi; dolayısıyla procedure kullanımı salt bir biçimsel ayrıştırma olarak kalır. Bunun yerine, PROCEDURE hesapla(puan, zaman) şeklinde parametre alan ve tüm işlem mantığını bu parametreler üzerinden yürüten bir procedure, hem soyut hem de bağımsız bir birim olarak değerlendirilir.
Create PT yazılı yanıtında procedure soyutlamasını açıklama
Create Performance Task'in yazılı yanıt bölümünde öğrencilerin üçüncü satıra yönelik bir açıklama sunması gerekir. Bu açıklama, yalnızca procedure'ın ne yaptığını değil, neden bu şekilde tasarlandığını da içermelidir. Rubric'in bu satırında tam puan alan öğrencilerin yazılı yanıtlarında üç öğe belirgin şekilde görülür:
- Procedure'ın amacı: Procedure ne işe yarıyor ve bu işlev neden ayrı bir procedure olarak tasarlandı?
- Parametre kullanımının gerekçesi: Bu parametreler neden gereklidir ve procedure'ın davranışını nasıl etkiler?
- Soyutlamanın programdaki yeri: Bu procedure, programın genel akışında hangi katmanda yer alır ve diğer procedure'larla nasıl bir ilişki kurar?
Örneğin, bir flappy-bird tarzı oyun için şu açıklama yeterli olabilir: "checkCollision(kuş, engel) procedure'ı, kuş ile ekrandaki engellerin çarpışıp çarpışmadığını kontrol eder. İki parametre almasının sebebi, bu kontrolü yalnızca tek bir nesne çiftiyle değil, herhangi bir kuş ve engel kombinasyonuyla çalışacak şekilde genellemektir. Böylece oyuna yeni engel türleri eklendiğinde, bu procedure değişmeden çalışmaya devam eder."
Bu açıklamada üç temel öğe bir aradadır: işlev tanımı, parametre gerekçesi ve genişletilebilirlik avantajı. Bu bileşim, rubric değerlendiricisine öğrencinin soyutlamayı anladığını ve bunu bilinçli bir tasarım kararı olarak kullandığını gösterir.
Create Performance Task'ta soyutlama kalitesini düşüren beş yaygın hata
Create Performance Task hazırlığı sürecinde öğrencilerin sıklıkla yaptığı hatalar, procedure soyutlaması üzerinden somutlaştırılabilir. Bunları önceden bilmek, sınav gününe kadar düzeltilmesi gereken noktaları netleştirir.
Hata 1: Tekrarlayan kod bloklarını ayrı procedure'lara bölmek
Öğrenciler bazen kodu sadece parçalara ayırmak için procedure oluşturur. Örneğin, oyunlarında üç farklı yönde hareket komutu varsa ve bunları ayrı procedure'lara bölerlerse, bu ayrıştırma soyutlama değildir. Soyutlama, bu üç işlemin tek bir genelleştirilmiş procedure ile yapılabileceğini fark etmektir — yani move(direction) procedure'ı.
Hata 2: Procedure'ları açıklamak yerine kodu tekrar anlatmak
Yazılı yanıtta öğrenciler sıklıkla kodu satır satır yeniden anlatır. Ancak rubric değerlendiricisi, procedure'ın tasarım kararını değil, kodu anlayıp anlamadığınızı değerlendirir. Procedure'ın neden bu parametreleri aldığı, aynı işlevselliğin farklı tür girdilerle nasıl çalışacağı ve kod tekrarını nasıl önlediği üzerine odaklanmak gerekir.
Hata 3: Global değişkenlere aşırı bağımlılık
Procedure'ın içinde sürekli olarak programın üst kısmında tanımlanan genel değişkenlere erişmek, procedure'ı bağımsız bir birim olmaktan çıkarır. Her procedure'ın olabildiğince kendi verisini parametre olarak alması ve sonucunu geri döndürmesi tercih edilmelidir.
Hata 4: Tek bir devasa procedure yazıp onu çağırmak
Diğer uçta, tüm programı tek bir procedure içine yazıp bunu çağırmak da soyutlama değildir. Soyutlama, programı anlamlı parçalara bölmek ve her parçayı kendi bağlamında anlaşılabilir kılmaktır. Bu parçalar arasındaki ilişki, üst düzey bir procedure'ın alt düzey procedure'ları çağırmasıyla kurulur.
Hata 5: Procedure isimlendirmesinde genellik
procedure1, calculate, check gibi genel isimler, procedure'ın ne yaptığını veya hangi bağlamda kullanıldığını yeterince iletmez. İyi bir procedure ismi, procedure'ın ne yaptığını ve hangi veriyle çalıştığını bir arada ima eder — örneğin calculateFinalScore(finalScores, bonusPoints) ifadesi, isim düzeyinde bile soyutlamayı iletir.
AP CSP ile AP Computer Science A arasındaki soyutlama yaklaşımı farkı
AP Computer Science Principles ve AP Computer Science A, her ikisi de bilgisayar bilimi alanında olmalarına rağmen soyutlama kavramına farklı yaklaşırlar. Bu farkı bilmek, CSP'deki Create Performance Task hazırlığını daha bilinçli yapmayı sağlar.
| Boyut | AP CSP | AP Computer Science A |
|---|---|---|
| Soyutlama odağı | Prosedürel ve veri soyutlaması; genelleştirilmiş fonksiyon tasarımı | Nesne yönelimli soyutlama; sınıf hiyerarşisi ve kalıtım |
| Procedure kullanımı | Yazılı yanıtta açıklanması gereken bir tasarım kararı olarak sunulur | Kod yazımının doğal bir parçası; ayrıca açıklanması beklenmez |
| Değerlendirme kriteri | Soyutlamanın nitelik ve tasarım gerekçesi önemlidir | Kodun çalışması ve doğru çıktı üretmesi önceliklidir |
| Başarı göstergesi | Yazılı açıklama + kod kalitesi birlikte değerlendirilir | Kodun derlenmesi ve test senaryolarını geçmesi yeterlidir |
AP CSP'de soyutlama, yalnızca kodda görünür olması yetmez; aynı zamanda öğrenci tarafından anlaşılmış ve açıklanmış olmalıdır. Bu, Create Performance Task'ı AP Computer Science A'nın serbest kodlama bölümünden ayıran temel farktır. AP CSP'de bir öğrenci mükemmel bir soyutlama mimarisi kurabilir ancak bunu yazılı yanıtta ifade edemezse, rubric puanı sınırlı kalabilir.
Create Performance Task hazırlık sürecinde procedure soyutlaması çalışma planı
Procedure soyutlamasını Create Performance Task'ta tam puan düzeyine taşımak için sistematik bir çalışma planı uygulamak gerekir. Bu plan, son altı hafta içinde uygulanabilir bir yol haritası sunar.
İlk iki hafta: Temel kavram pekiştirme
Bu dönemde AP CSP müfredatındaki soyutlama fikirlerini — özellikle Big Idea 2 (Veri) ve Big Idea 3 (Algoritmalar ve soyutlamanın kesişimi) — tekrar gözden geçirmek gerekir. Procedure tanımlama, parametre kullanımı ve return ifadeleri pseudocode üzerinde çalışılmalıdır. Mevcut bir örnek program alınarak, procedure'ların soyutlama katmanlarına göre düzenlenip düzenlenemeyeceği değerlendirilmelidir.
Üçüncü ve dördüncü hafta: Create PT projesinde uygulama
Bu aşamada öğrencinin kendi Create PT projesi üzerinde çalışması beklenir. Projede en az iki katmanlı bir soyutlama mimarisi kurulmalıdır: bir üst düzey procedure ve bunu çağıran bir veya daha fazla alt düzey procedure. Her procedure için yazılı açıklama taslağı hazırlanmalı ve bu açıklamalar, procedure'ın neden bu parametreleri aldığını ve nasıl genelleştirildiğini açıkça belirtmelidir.
Beşinci hafta: Yazılı yanıt yazımı ve revizyon
Yazılı yanıt bölümü, procedure soyutlamasının görünür kılındığı yerdir. Her procedure için üç bileşenli bir açıklama şablonu kullanılabilir: (1) Procedure'ın amacı, (2) parametre kullanımının gerekçesi, (3) programın genelinde sağladığı soyutlama katkısı. Bu açıklamalar yazıldıktan sonra, her cümlenin kod tekrarı içerip içermediği kontrol edilmelidir. Yalnızca kodu anlatan değil, tasarım kararını açıklayan ifadeler korunmalıdır.
Altıncı hafta: Final kontrolü ve rubric okuması
Son hafta, Create Performance Task rubric'inin tamamını — özellikle satır 3 — baştan sona okumak ve kendi projesinin her satır için karşılık gelen öğeleri karşılayıp karşılamadığını kontrol etmek için ayrılmalıdır. Procedure soyutlaması bağlamında, rubric'de belirtilen parametre kullanımı ve soyutlama katkısı unsurlarının her ikisinin de hem kodda hem yazılı yanıtta somutlaştırılmış olması gerekir.
Sonuç ve ileri adımlar
AP CSP Create Performance Task'ın rubric satır 3'ünde tam puan almak, procedure ve function soyutlamasının yalnızca teknik bir beceri olmadığını, aynı zamanda tasarım düşüncesinin bir yansıması olduğunu kavramayı gerektirir. Parametre alan, genelleştirilmiş ve bağımsız bir soyutlama birimi olarak çalışan procedure'lar kurmak; bu procedure'ları açıklayan, neden bu şekilde tasarlandıklarını anlatan yazılı yanıtlar hazırlamak; global ve yerel değişken kapsamını bilinçli yönetmek — bu üç öğe bir araya geldiğinde, rubric değerlendiricisine öğrencinin soyutlamayı derinlemesine anladığını gösteren tutarlı bir portre çıkar.
Create Performance Task hazırlığında procedure soyutlamasını derinlemesine çalışmak, yalnızca bu rubric satırında değil, aynı zamanda Create PT'nin bütününde daha tutarlı bir proje mimarisi kurulmasına da katkı sağlar. Procedure'lar doğru tasarlandığında, kod daha modüler, daha okunabilir ve daha kolay açıklanabilir hale gelir — bu da yazılı yanıt sürecini doğrudan kolaylaştırır.
AP Özel Ders'in one-to-one AP Computer Science Principles programında, öğrencinin Create Performance Task projesi rubric bazında satır satır incelenir. Özellikle procedure soyutlaması satırında, mevcut kodun soyutlama niteliğinin artırılması için somut öneriler sunulur ve yazılı yanıt taslakları her bir procedure için ayrı ayrı geliştirilir. Create PT'de tam puan hedefi olan öğrenciler için birebir çalışma planı oluşturulur.