Okul seçmeden önce alan seçimi yapmak çok kritik, çünkü sizin istediğiniz alanında çalışan bir hoca / lab yoksa o okula başvurmak yersiz. İstediğiniz alanda çalışan hoca varsa bile sizin başlayacağınız dönem izin alıp gidecek olabilir veya yeterince fazla öğrencisi vardır ve daha fazla almak istemiyordur. Okullara başvururken bunları da göz önünde almalısın.

Aynı üniversite tercihindeki gibi, uzmanlık alanınızı da seçerken sihirli bir formülle size en çok uyacak alanı bulma şansınız yok. Fakat üniversite tercihlerinde tek tek bilgisayar mühendisliği, doktorluk, öğretmenlik yapıp bu daha iyi diyemezken üniversitede uzmanlık alanı seçerken bunu yapabilirsiniz.

Bunun için yapmanız gerekenler:
- Aldığınız temel dersler şu an güncel problemlere ve araştırma alanlarının temeli olabilir (olmadığı durumlar da var.) Bu temel derslerde şu an ne yapılıyor, hangi problemler çözülmeye çalışılıyor ne tip projeler var araştırın ve mümkünse görev alın. (Bilgisayar mühendisliği için en bariz örnekler: Bilgisayar mimarisi, Veri tabanı Sistemleri)

- Teorik teknik dersler alın. Bizim bölümde son sene açılan yazılım dersleri var "Proje yönetimi", "Uygulama Ömrü" gibi akademiye devam edecek veya ar-geyle uğraşacak biri için saçma sapan dersler. Bunlar yerine teorik teknik dersler almaya bakın. Teorik teknik derslerde teoriyi kavratmak için mutlaka ödev verirler ve tabii proje de yaptırırlar. Bunlar sizin o alanı sevip sevmeyeceğinizi anlamanız için yeterli. Ve bu dersleri biraz erken almanızı öneririm eğer mümkünse. (Bilgisayar mühendisliği için en bariz örnekler: Makine Öğrenmesi, Paralel Programlama, Bilgisayar Grafikleri, Yapay Zeka, Resim İşleme, Doğal Dil İşleme, Bioinformatik... Hocalarınız hangi alanda çalışıyorsa o alanın teknik dersi açılır genelde.)

- Gönüllü olarak projelerde çalışın. Bunu kendi kendinize yapmanız çok zordur ve ortaya bir ürün çıkmaz. En iyisi denemek istediğiniz alanda bir hocayla çalışma yapın. Şansınız varsa makale de çıkabilir ve hoca makalenin bir köşesine sizin adınızı yazabilir.

- Staja gidin. Üniversitelere, araştırma enstitülerine, ar-ge şirketlerine başvurun. Özel şirketlerde de işinize yarayacak bu tip stajlar çıkabilir unutmayın.

- Yukarıdakileri yapamadığınız alanlar içinde wikipedia'dan, quora.com'dan, ekşi sözlükten alanlarla ilgili temel bilgileri okuyun, hocalarınızı sıkıştırıp bilgi isteyin. Sonra (veya öncekini yapmadan, zaten girişte anlatıyorlardır.) coursera'dan, edx'ten, udacity'den ve artık sayamayacağım kadar fazla mooc sitesinden ilgili dersi izleyin ve tabii verdikleri ödevleri de yapın.

Alanları denediniz mi? Güzel. Fakat "Hah! Bu!" diyebileceğiniz bir alan çıkmadı mı?

O zaman şunları da düşünebilirsiniz:

  • Kalbinizin götürdüğü yere gidin.
  • En güncel çalışmaların yürütüldüğü arz talep oranının yüksek olduğu, ismini çokça duyduğunuz alanı seçin. İnternette "Hot topics in X research" diye aratarak bulabilirsiniz. Örneğin. (Gerçi linkteki adamlar her şeyi yazmış gibi) Bir de fakültelere bakıp en çok hangi alanda çalışan var o alana yönelik çalışmayı düşünebilirsiniz çünkü buradan o alandaki akademisyenler talebin fazla olduğu önermesi çıkarılabilir. (Fakat kontrol edin yine de.)
  • Yüksek lisans veya bir hocayla gönüllü araştırma yapacaksanız kariyeri parlak bir hocanın yanında yapıp onun alanını benimseyebilirsiniz. (Sevmezseniz bırakır veya doktora için farklı bir alana başvurabilirsiniz.)
  • Amerikan sistemine sahip bir okulda doktoraya başvuruyorsanız C.V.'nize / profilinize en uygun alana göre başvurunuzu yapıp oraya gidince danışmanınızı değiştirebilirsiniz. Bu sistemde ilk sene lab rotasyonu uygulanmaktadır. Öğrencilerin 2-3 farklı labta çalışma şansı vardır.

Bunlar benim alan seçerken ki kullandığım yöntemlerdi.

*

Bilgisayar mühendisliği okuyanlara biraz detaylı bilgi vereyim.

Dört ana kategori vardır. Bunlar:

1- Yapay Zeka 
( Arama motorları, robotik, görüntü tanıma, ses tanıma, doğal dil işleme, makine öğrenmesi vs.)
2- Teori
( Algoritmalar, kriptografi, mantık)
3- Sistemler
( Bilgisayar mimarisi, dağıtık programlama, veri tabanları, işletim sistemleri, yazılım mühendisliği, güvenlik vs.)
4- Disiplinlerarası Alanlar
( İnsan-bilgisayar etkileşimi, sanal gerçeklik. Bioinformatik de bu kategoriye giriyor diyor bazıları ama katılmıyor. Robotik de bu kategoriden sayılabilir belki. )

Benim gözümde:

1- Matematik
2- Çılgınlarcasına Matematik
3- Geek
4- Geyik

Nedir açalım:

Yapay zeka: Yapay zekanın teorisi Matematikten geliyor. Bilgisayar mühendisliği okuyanlar bu dediğimi zaten hemen anlarda, yazayım yine de: "yapay zeka" etiketli herhangi bir problemi (örneğin bir resmin köşelerini otomatik olarak algılamayı) çözmek için Matematiksel araştırma gerekir. Sadece yazılım bilen adam bu problemi çözemez.

Resimdeki köşeleri bulma ile ilgili wikipedia sayfası

Bu sayfada herhangi bir kod veya koda benzer bir şey oldu mu?

Yazılım kısmı bu Matematik formüllerinin algoritmaya dökülüp sonra koda aktarılıp yazılıma yedirilmesidir.

Çıkan kod öyle karmaşık bir şey olmadığından bunu Matematikçi de, Elektronikçi de, Endüstrici de yapabilir. Dolayısıyla yapay zeka Matematik ve Elektronik çıkışlı kişilerin de uğrak noktası olmuştur. Özellikle "Ses tanımlama"da elektronikçiler çalışır çünkü ses bir sinyaldir ve sinyal elektronikçilerin işidir.

Fakat bilgisayar hocalarının işi bu matematik formüllerini keşfetmek değildir. Benim okulda aldığım yapay zeka dersi de bu tip formüllerle ilerleyince korkup "Hocam bunları araştırmak için zehir gibi Matematik lazım." demiştim de hoca "Yok ya bunlar basit Matematiksel analizler, dahası için de kimse oturup Matematik kitabı okumuyor." demişti. Zaten Yapay zeka çalışan hocaların projelerine bakınca genelde yapay zeka uygulamalarına çalıştığı görülmekte. Tabii zehir gibi Matematiğe sahip olup teorik çalışanlar da mevcut.

Uygulama çalışınca tabii uygulamayı halka göstermek için yazılım yazmak gerekiyor. Yazılımı da asistanlar yazıyor. Dolayısıyla hocalar kendilerine başvuran elektronikçilerin ve matematikçilerin yazılımda ne kadar iyi olduklarına bakacaklardır çünkü onların için tek önemli kriter bu kişilerin ileride nasıl bir deha olacakları değildir. Kendi işlerine yarayacaklar mı bu da önemli.

Teori: Teorik Bilgisayar Bilimcileri tam yukarıda dediğim yapay zeka analizlerini yapıyor olabilirler. Veya bilgisayar güvenliği için daha güvenli şifreler bulmakla uğraşıyorlardır. Var olan algoritmaları hızlandırıyor veya daha verimli yapıyor olabilir. Türlü çalışma alanları var ama ben çok ayrıntılı bilgi sahibi değilim. Doğrusunu söylemek gerekirse bu alan daha çok bilgisayar olimpiyatlarıyla büyümüş, üniversite de kodlama yarışmalarıyla haşır neşir olmuş hırs küpü ve zeki ve en önemlisi idealist öğrenciler için çünkü endüstride o kadar da çalışma alanı yok. Aynı bu profilde bir arkadaşım vardı, avrupa şampiyonalarında falan madalyaları vardı ama sonuncu sebepten öteri Teori lablarına başvurmaktan vazgeçip Bioinformatik'e kaydı.

Sistemler: Sistemler, bilgisayarla alakalı karmaşık sistemleri geliştirmeye yönelik. Sistem nedir? Sistem kısaca farklı görevleri olan parçaların "beraber yürüdük biz bu yollarda" diyerek uyumlu bir şekilde çalıştığı, anlamak için çaba sarf etmenin ve "bütünsel" düşünmenin gerektiği her şey. Sistemleri incelemek ve nasıl çalışıyor öğrenmek genel olarak eğlencelidir.  Ve böyle düşünüyorsanız geeksiniz.

Bilgisayar sistemlerinde alanlar çok çeşitli, buraya yazmakla bitmez. Tek yorumum var; bunlarla uğraşmak, kitabını okumak, kodunu yazmak falan çok zevkli ve fazla bir Matematik bilgisi gerektirmiyor. Ama, en azından üniversite sondayken, proje fikri bulup hayal kurmak çok zor. Yapay zeka çalışıp "Makine öğrenmesiyle Galatasaray'ın bu sezon şampiyon olup olmayacağını tahmin edeceğim." diye proje üretebilirsiniz mesela fakat "Ben şu Internet Explorer'ı Paralel Programlamayla bir hızlandırayım." diye hayal etmezsiniz herhalde. Veya "donanım haber sık sık çöküyor sitenin güvenliğini arttıracak bir proje yapayım." demezsiniz diye tahmin ediyorum. Belki bu alanda uzmanlaştıktan sonra insanlar bu tip hayaller kurup proje fikirleri bulmaya başlıyordur ama, bilemiyorum. Ama şu dezavantaj hep kalıyor: bilgisayar mühendisliği dışındaki bir adama ne yaptığınızı anlatamıyorsunuz. Hatta belki içerinden birine bile.

Sistemlerin yapay zekadan önemli bir farkı var o da şu ki iyi yazılım bilgisine sahip olmak gerekir. Örneğin güvenlikte çalışacaksınız hoca websayfasına "Başvuran kişi iyi Linux bilsin ben hekır arıyorum." gibi şeyler yazar mutlaka. Dolayısıyla kabul alırken tecrübe ve bilgi, zeka ve potansiyelden önde olabilir.

Geyik - pardon - disiplinler arası alanlar: Bu alanlara geyik dememin nedeni teorisi bilgisayar mühendisliğiyle birlikte farklı alanlara (psikoloji) dayandığı için çok fazla geyik işle uğraşmak durumunda kalmanız. Benim Koç'ta çalıştığım lab bu şekildeydi ve bizim danışmanımız olan mastır öğrencisi - ki kendisi tam bir bilgisayar kurdudur - "Yav deney tasarlamaktan kod yazamıyorum." diye yakınıyordu sürekli. Bu kategoriye giren alanlar "Human Computer Interaction" yani "İnsan Bilgisayar Etkileşimi" ve "Sanal Gerçeklik" çalışmalarını içine alan "Bilgisayar Grafikleri" alanı. Psikoloji ne alaka derseniz, sanal gerçeklik sağlayan bir yazılım yaparsanız insanların ihtiyaçlarını da düşünmek zorundasınızdır. Yoksa insanlar o koca şeyleri kafaya taktıktan sonra midesi bulanıp kusabilirler (başıma geldi, kusmadım gerçi). İnsan Bilgisayar Etkileşiminde de insanların kolaylıkla kullanabileceği tasarımlar yapmak üzere araştırmalar yapılıyor. Çıkış noktalarından biri "itilecek mi çekilecek mi belli olmayan yanıltıcı kapılar.", şu ilgili videoyu izlemenizi tavsiye ederim. Bilgisayar destekli eğitim de bu kategoridedir. Sırf buna odaklanan bir lab görmedim, ama arada bununla ilgili proje yapıyorlar.

*

Benim teori çalışmam imkansızdı. Proje fikri üretmek eğlenceli olduğundan yapay zeka düşünüyordum fakat dördüncü sınıfta aldığım "Makine Öğrenmesi" dersi beni çok zorladı. Teorik kısımları anlamakta çok zorlanıyordum. O yüzden - biraz da buna isyan ederek - "Human Computer Interaction" içerikli okullara başvurdum genelde. Yapay zeka neredeyse her okulda bulunduğundan, sonradan barışırsak yapay zekaya transfer olabilirim diye düşündüm.

Bu yazı da böyleydi, umarım faydalı olmuştur.