ABD Üniversitelerinde Giriş Seviyede Programlama Dili Olarak Ne Ögretiliyor?

“Neden Üniversitede Java?” konulu çalışmam sırasında ABD’deki üniversitelerin Computer Science (CS) bölümlerinde hangi dillerin kullanıldığına bir miktar göz attım. Konu ile ilgili zaten yakın tarihte “Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities” başlıklı tahrik edici bir yazı yayınlanmıştı. Bu çalışma bilgi verici olmakla birlikte verilerin ve sonucun sıhhatı hakkında belli şüpheler de oluşturuyor. Örneğin yazının sonunda ögrenci ve hocalardan gelen pek çok cevapta düzeltmeler söz konusu.

Bu yazıya göre ABD’nin en iyi 39 CS bölümünün programlamaya giriş derslerinde ağırlıklı olarak Python kullanılıyor ve Java bu sıralamada ikinci sırada görülüyor. 39 bölümün 27sinde Python, liseden gelen öğrencilere ilk gösterilen dil. 22 bölümde Java ilk gösterilen dil olarak belirtilmiş. 27 ve 22 sayılarının toplamının 39’dan yüksek olmasının sebebi, bazı bölümlerde programlamaya giriş derslerinin birden fazla olmasi, bazı bölümlerde de iki dilin birden ele alınıyor olmasıdır.

Dikkatimi çeken şey, hatta tuhaf gelen, programlamaya giriş derslerinde Matlab’in de bazı bölümlerde ele alınıyor olması. Çünkü Matlab, bir programlama dili değil, yüksek seviyeli, declarative bir hesaplama ortamıdır. Listede Matlab’i kullanan okullara biraz göz attım. Örneğin UCSD’de listede belirtildiği gibi Matlab okutuluyor ama programlamaya ilk giriş dersi Matlab’in olduğu CSE 7 değil, C okutulan CSE 5A. Listede CSE 5A da görünmekte ama CSE 7’yi ne kadar ilk okutulan giriş dersi olarak görmek mümkündür, bunun daha özelde araştırılması gerekli.

Benzer şey UIUC’de de giriş dersinde Matlab’in okutulduğunun iddia edilmesinde de söz konusu. CS101’de hem Matlab hem de C kullanılıyor ve bu bölümde CS125 nolu “Introduction to Computer Science” dersinde ise Java kullanılıyor. Belli ki pek çok bölümde farklı tipte öğrencilere yönelik farklı giriş dersleri var. Bu karışıklık biraz da bundan kaynaklanıyor.

Açıkçası, Python’un giriş derslerinde gösterilen en gözde dil olması kimseyi şaşırtmamalı. Liseden gelmiş gençlere algoritmik düşünceyi, bilgisayara programlama yoluyla işler yaptırmayı öğretmek kolay şey değil. İşin akademik tarafından daha önemlisi belki de pedagojik tarafı. Ben zaman zaman üniversite öğrencileriyle eğitim yapıyorum, yaşadığım zorlukları biliyorum. Karmaşık kavramları onların anlayacağı hale sokmak kolay bir şey değil. Bunu yapınca açıkçası ben de çok şey öğreniyorum ama yorucu bir iş.

Python’un son derece basit ve yüksek ifade gücüne sahip söz dizimi (syntax), dinamik tipli bir dil olması, yorumlanan bir scripting dili olması belli ki giriş dili olarak ABD’de üniversitelerin çoğunluğu tarafından tercih ediliyor. MIT, Carnegie-Mellon gibi önde gelen üniversitelerde programlamaya giriş dersinde Python kullanılıyor. (Bu konudaki bir yazıya buradan ualşabilirsiniz.)

Python kullananlar, bu dil ile çok daha hızlı bir şekilde program yazmaya başlayabildiklerinden bahsediyorlar. Belli ki bu sebeplerden dolayı Python, sektörde kullanımı açısından ilklerden birisi olmasa da öğrenme açısından pek çok avantajı var. Ülkemizde benzer şekilde Python’u giriş dersinde kullanan bölüm var mı bilmiyorum ama bu dilin alternatif olarak değerlendirilmesi gerekiyor. Dünyada Python’u kullanan okulların listesine buradan ulaşabilirsiniz.

Python ülkemizde pek kullanılan bir dil değil. Üniversitelerin de pek gündeminde değil bildiğim kadarıyla. Lakin ABD’de özellikle finans sektöründe veri işleme (data science) konularında yoğun olarak kullanılıyor. Belli ki Python, veri işleme ve istatiksel programlama konularında ciddi desteğe sahip ve cekirdek programcı olmayan data analistler ve matematikçiler big data ile ilgiliişlerini Python ile gorebiliyorlar. Bu konuda buradaki yazıya göz atabilirsiniz.

Tipik bir CS eğitim planını sizlerle paylaşmak istiyorum. Malum, Stanford Üniversitesi, gerek genel eğitim kalitesi gerek ise CS ve mühendislik eğitimiyle son derece saygın bir yer. SU’da CS eğitimine başlayanlar tipik olarak şu dersleri takip ediyorlar:

  • cs106A Programming Methodology: Java ile programlamaya giriş yapılıyor.
  • cs106B Programming Abstractions: C++ ile daha ileri programlama ve
  • cs106L Standard C++ Programming Laboratory: Bu ders ise cs106B’nin laboratuvar dersi.
  • cs108 Object-Oriented Systems Design: Bu ders ise Java ile derinlemesine nesne yapılarının ele alındığı ders. Bu derste Java Se’nin standart konualrı yanında servlet-JSP gibi web development konuları da ele alınıyor.

Bu liste 2014-15 Sonbahar çeyreği için verilmiş olup buradan ulaşılabilir durumda.

Bu yazıda ABD üniversitelerinin CS bölümlerindeki derslerde kullanılan dillerden bahsettim ama bu programlara yakından baktığınızda göreceğiniz şey, odak noktalarının dil olmadığı gerçeğidir.

Hoşcakalın.

Toplam görüntülenme sayısı: 2808