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ı: 2833
hakan
16 Eylül 2014 @ 09:08
Akın Bey, sizin üniversitelerde temel/başlangıç programlama dilleri ile ilgili yazılarınızı okurken eskiden (şu anda bu adreste http://www.turk-internet.com/portal/yazigoster.php?yaziid=21666 bulabildim) okuduğum bir yazı aklıma geldi. Kendi kişisel görüşümü de daha sonra belirtebilirim. Ancak siz ne düşünüyorsunuz bu yazı hakkında? Doğruluk payı var mı sizce? Teşekkürer..
Akin
16 Eylül 2014 @ 21:52
Bir bakayim, sonra yazarim.
Tesekkur ederim.
Oğuz
10 Ekim 2014 @ 17:17
Biz 2006’da Çanakkale Onsekiz Mart Üniversitesi’nde Algoritma ve Programlama -1 dersinde programlamaya Python ile giriş yapmıştık.
Akin
10 Ekim 2014 @ 22:24
Tesekkur ederim.
Can
15 Ekim 2014 @ 14:35
Yukarıdaki yazınızdan benim çıkardığım sonuç ABD’de (ve belki dünyanın diğer bazı ülkelerinde) üniversiteye adım atmış, o ana kadar belki herhangi bir programlama diliyle ve dolayısıyla programlama mantığıyla karşılaşmamış gençlere programlama mantığını aşılamak adına Python eğitimi verildiğidir. Dahası, bir öğrenci kendisini Python konusunda geliştirip çok iyi yerlere gelebilir -ya da belki programlama mantığını aldıktan sonra başka alanlara yönelebilir.
Benim okumakta olduğum üniversitede (Karabük Üniversitesi), internet tabanlı programlama dersinde Klasik ASP ve HTML eğitimi verilmektedir -CSS’i hak getire… Dökümanlar berbat, hiçbir kurala uyulmamış, ASP zaten eski bir teknoloji, HTML’in de güncel halinden son derece geride kalınmış. Programlama dersinde C programlama eğitimi veriliyor. Eğitmenin dökümanı intihallerle ve çalışmayan kodlarla (intihali bile beceremiyor) dolu.
Şimdi, bir öğrenci olarak nasıl tüm bunlara karar verebiliyorsun diyebilirsiniz. Ama, musluğun damlattığını görmek için tesisatçı olmaya gerek yok.
“Her şeyi üniversitede öğrenmeyi beklemeyin” düsturunu sahiplenen “bu hocaların” bu düstura bu kadar budalaca sahip çıkmalarını anlamak mümkün değil. Okulda öğrendiklerinizi iş yaşamınızda (öğrenciyim fakat şu an bir firmada çalışmaktayım) unutmak için ayrıca çaba sarfetmeniz gerekecek. Bir üniversite hocasının her şeyi geçtim, teknolojinin bu kadar gerisinde olduğunu bilmemesine olanak yok, değil ki yeni gelişmeler Türkiye’deki “Üniversitelerin de pek gündeminde” olsun!
Kafamda iki sorunsal var:
1- Bu üniversite hocaları, bu konularda eğitim verecek yetkinlikte (kıdemde) olsalar idi, üniversitede “hoca maaşı” almak yerine iyi bir firmada çok daha iyi koşullarda ve maaşta çalışamazlar mıydı? (Çok yetkin olup üniversite hocası olmayı tercih edenleri tenzih ediyorum) Bu açıdan bakıldığında yanlış da olsa hak vermemek mümkün değil üniversitelerin bilgisayar bilimlerinin durumunun bu halde olmasına.
2- Kalbur üstü üniversitelerde (ODTÜ, İTÜ, YTÜ vb.) durum tam olarak böyle mi? Emin olmamakla birlikte, en iyi niyetimle eğitim kalitesinin üç aşağı beş yukarı aynı olduğu ama öğrencilerin bir takım imkanlara daha fazla sahip olduğu ve daha kolay bir yoldan yönlenebildiklerini düşünüyorum.
Ben herhangi bir üniversite öğrencisinden duymadım ki okul tarafından kendisine cüzi miktarda bir parayla ya da ücretsiz olarak bir PIC programlama seti verilmiş olsun. Ya da en azından duymadım ki öğrencilerin ihtiyaçları olduğunda gidip alabilecekleri board, led ekran, kablo, direnç, mini bilgisayarlar (eğitim amaçlı olanlardan), ücretsiz ve KALİTELİ döküman vb. veren/ucuza satan bir üniversite var!
Eğer tüm bunların bir kısmının en azından olduğu bir üniversite varsa onlara helâl olsun =)
Akin
15 Ekim 2014 @ 17:30
Universitelerimizdeki egitim kalitesiyle ilgili soylediklerinize genel olarka katiliyorum. Ama bu konu bundan daha karmasik bir konu. Yani ogrencilere dusen seyelr de var, pek cok univesite ogrencisi hala lise ogrencisi gibi davranilmasini istiyor kendisine. Ote taraftan hocalarin derslerini eglenceli hale getirmede cok da gayretli olmadiklari genel olarak bilinen bir sey.
Belki yakinda bu konu uzerine dusunduklerimi paylasirim.
Tesekkur ederim.