BİLGİSAYAR MÜHENDİSLİĞİNE İLİŞKİN SIKÇA SORULAN SORULAR

Bilgisayar Mühendisliğine ilişkin çeşitli kesimlerden sorularla sıkça karşılaşmaktayız. Bunun gibi çeşitli nedenleri bulunmakta. Sonuçta çeşitli sohbet ortamlarında havalarda uçuşan yanıtlar, yanıtlayanların profilinden ötürü, doğrulardan çok yanlışlar içermekte. Bu sayfanın amacı çeşitli soruları yerli yerine oturtarak yanıtlamak. Soruları iki gruba ayırdık. Bunlardan ilk grup, birbirleri ile çok ilintili oldukları ve esasda yanlış zeminlerde oluşturuldukları için bir yazı bütünü ile yanıtlanmaktadırlar. Diğer grupta ise tekil yanıtlanan sorular bulunmakta.
 

I. Grup:

Bu sorularınızın yanıtı için aşağıdaki  Bilgisayar Mühendisliği  başlıklı  yazıyı okuyunuz.
 
 
 

II. Grup:


Bilgisayar Mühendisliği


Bilgisayar Mühendisliği başlığı altında toplanmış etkinliğin ve bunun eğitiminin iki boyutu var.

Her nekadar yurtdışında bu ayırımın gözetildiği lisans eğitimleri söz konusu ise de, bu, ülkemizde böyle değildir. Her iki boyut ağırlıklı olarak aynı eğitim programına katkı vermektedir. Ancak, bu birlikteliğin varlığı anılan iki boyutun varlığını ortadan kaldırmaz. Aşağıda bu iki boyutu ayrı ayrı irdeleyeceğiz:

Bilgisayar Bilimi

İngilizcesi 'Computer Science' olan bu bilim dalı, veri barındırıp bunun üzerinde işlem yapmayı sağlayacak yapılarda, belirli amaçlara ulaşmak için verilerin nasıl işlemleneceği ile ilgilenir. Genel kanının aksine:

Bilgisayar Biliminin ilgi alanına girebilmesi için, işlem yapacak yapının fiziksel gerçekliğinin olması gerekmez. Bu gerçekten ötürü, disiplinin adında yer alan 'Bilgisayar' sözcüğünü dar anlamı ile algılamak yanlıştır. Her ne kadar bu isim gündelik kullanım bakımından eskiden odalar büyüklüğünde, şimdilerde ise masalarımızın üzerinde yer alan, elektrikle çalışır, bir ekran, bir klavye ve bir işlem ünitesini barındıran cihazın adı ise de, bilim dalı olarak algılandığında 'Bilgisayar' sözcüğü fiziksel bir yapıdan çok 'veri işleme yeteneği olan herhangi bir yapı' anlamındadır. Bu yapı, elektrikle çalışmak zorunda da değildir. Örneğin, Dünyamız canlılığındaki veri işlemleme organının temel ögesi olan 'nöron hücresi' ve bundan oluşan canlı beyni elektrik akımı ile çalışmamaktadır, ancak bu tür veri işlemleme Bilgisayar Biliminin ilgi alanına fazlasıyle girmektedir. Veri işleyen yapının işlemleme kurallarının sağlıklı tanımlanmış olması koşulu ile, bu yapının varlığı yalnızca kağıt üzerinde bile olabilir.

Bilgisayar Biliminin, belirli amaçlara ulaşmak amacıyle verinin nasıl bir yordamla işlenmesi gerektiği ile ilgileniyor olması, bu kavramların sağlıklı betimlenmesine bir gereksinim doğurmaktadır. Tanımlarda yer alan:

kavramları tanımlanmak durumundadır. Bu bakımdan tek sağlıklı tanım ortamı Mantık ve Matematiktir. Bu iki disiplin engin ve köklü yapıları ile Bilgisayar Biliminin tanım ortamını oluşturular. Mantık ve Matematik, Bilgisayar Biliminin üzerine kurulduğu temel bilimlerdir. Size Bilgisayar Biliminin ilgi alanına girecek, kolay anlayabileceğiniz, BMB birinci sınıf öğrencilerinin öğretinin ABC'si olarak öğrendikleri bir problemi örnek olarak vermek isteriz:
 

Verinin tanımı:

Elinizde ikili olarak aralarında bir sıra ilişkisi (<) tarif edilmiş olan, N adet elemandan oluşan [xi | 1 < i < N] bir sıralamalı küme olsun. Ancak bu kümedeki elemanlar rastgele bir sırada bulunuyor olsunlar.

(Örneğin bir defter dolusu karışık sözcük var elinizde, ikili sözcüklerin arasında bir sıra ilişkisi nasıl tanımlanabilir derseniz... diyelim ki 'sıra' deyince alfabetik sıralamadan söz ediyoruz)
 

Kurallar:

'değiştokuş(i,j)' olarak adlandırılan küme üzerindeki bir işlemle, yalnızca iki elemanın yerlerini değiş tokuş etmenize izin verilmekte. Yani değiştokuş(i,j) işlemi öncesinde belirli biri konumunda bulunana ve belirli bir j konumunda bulunan b ise bu işlemden sonra i konumunda bulunan b ve j konumunda bulunan a olacaktır.

(Yani bu işlemle defterdeki herhangi iki sözcüğün yerlerini değiştokuş edebilirsiniz)

Her hangi bir anda çok az sayıda (en fazlasıyle birkaç) eleman konumunu bir yere kaydetmeniz olanaklıdır.
Bu yolla kaydedilmiş eski bir kayıdın üzerine (eskisini kaybetmek koşulu ile) yeni kayıt yapmak olanaklıdır.

(Diyelim ki elinizde birkaç sözcük konumunu not alabileceğiniz kadarlık bir kağıt parçası ve bir silgi de var)
 

Amaçlarımız:

Büyük olasılıkla bazı çözümleri kafanızda oluşturdunuz bile. Çözümünüzü irdelediğinizde, verilerin en kötü sıralanışlarında bile yönteminizin en fazlası ile K adet değiştokuş(i,j)  işlemi yaparak amacı sağladığını saptadınız. İlk akla gelen çözümler çoğunlukla K=N×(N+1)/2 adet değiştokuş(i,j)  gerektirirler. Bu bağımlılığın derecesine 'mertebe' diyoruz. Yani ilk akla gelen (büyük olasılıkla sizin de bulduğunuz) çözümler N2mertebesindedir. Peki en iyi yöntem için bu 'mertebe' nedir diye merak edenler için yanıtı verelim: N×log(N). Verilmiş kurallar çerçevesinde, herhangi bir yöntemin bundan daha iyi bir başarıda olamayacağının tanıtı (ispatı) da Bilgisayar Biliminde mevcut.

Bu arada yeri gelmişken şunu da belirtelim: Bilgisayar Biliminde bu tür yöntemlere 'Algoritma' diyoruz. Merak edenler için: Algoritma sözcüğü, matematiksel olarak bazı cebir işlemlerini bir yöntem olarak betimleyen, 9 Asırın başında yaşamış Acem asıllı matematik bilgini Abu Cafer Muhammed İbn-Musa-Al-Khovarizmi'in adından gelmektedir. Al-Khovarizmi Farsça 'Harzemli' demektir.

Bilgisayar Biliminin hangi alt alanları var?


Bilgisayar Bilimin alt Alanlarının Mühendisliği ve Yazılım Mühendisliği

Bilgisayar Bilimindeki konular Teori-Pratik ekseninde çeşitli konumlara konuşlanmışlardır, bu konuşlanma bulutumsu bir özellik taşır, çok keskin bir ifade ile herhangi br konunun belirli bir Teori/Pratik konumunda olduğunu savlamak yanılgıdır. Ayrıca Bilgisayar Biliminin salt teorik uğraşlardan oluştuğu, uygulama dünyasından kendisini soyutladığı önermesi gerçeği yansıtmaz. Hep böyle olmak zorunluluğu olmamakla birlikte, gerçel dünyanın getirdiği kısıtlar ve olanaklar, Bilgisayar Bilimlerinin uğraştığı problemlere doğrudan yansır. Bu yansıma, problemleri tanımlayan kurallardaki kısıtlar/olanaklar olarak ortaya çıkar. Örneğin, sizlere örnek olarak verdiğimiz 'Sıraya koyma algoritması probleminde' belirtilmiş koşullar, piyasada sıkça bulunan bilgisayarların mimarisi gözetilerek belirlenmiştir. Başka bir mimaride (örneğin tüm verileri zaten bir biçimde sıralı tutan bir mimaride) bu problem ilginçten uzak olabilirdi.

Bilgisayar Biliminin alt alanlarının herbirisinin pratik uygulamalara yönelik bir bakış açısının egemen olduğu, bunun günün donanım teknolojisi ile el ele gittiği (ve birbirlerini etkiledikleri) kullanılabilir ürünü geliştirmeye yönelik alan bilgisinin sağlayan bir 'Mühendisliği' vardır. Örneğin 'Grafik' alt alanında bilgisayarda 3 boyutlu varlıkların nasıl modellenebileceği ve bu modeller aracılığı ile, örneğin 'gölgelemenin' veya 'hareketlendirmenin' nasıl yapılabileceğinin yöntemleri geliştirilir. Donanım teknolojisi de, bu yöntemlerin daha hızlı ve verimli çalışmasına imkan sağlayacak yeni donanımlar geliştirir.
 

Bu, günün donanım teknolojisi içinde çözüm aranması ve geliştirilmiş bir yönteme uygun donanımın imal edilmesi döngüsü anılan bilim<->teknoloji ara etkileşimine güzel bir örnektir. Öte yandan 'bilgisayar grafiğinin mühendisliği' de o anda var olan donanım teknolojisi ve grafik işlemleme yöntemleri çerçevesinde somut bir grafik yazılım ürününün nasıl kotarılabileceği ile ilgilenir. Yani, 'Mühendislik boyutunun' hedefi 'tarif edilmiş bir işi gerçekleştiren' yazılım ürünün tasarımı ve gerçekleştirilmesidir.


Bu bağlamda donanım ürünlerinin geliştirilmesine de değinmemizde yarar var. Sanılanın aksine Bilgisayar Mühendisliği bilgisayar donanımını geliştirme mühendisliği değildir. Hele hele günümüz popüler teknolojisinde söz konusu olan devre elemanlarının (Tranziztör, Birleşik devre (Yonga) teknolojisi); görüntü birimlerinin (CRT, Plazma Ekran, LCD Ekran); bellek ortamlarının (RAM, ROM, Sabit Disk, CD, vb) geliştirilmesi ilgi alanına girmez. Yukarıda belirtilmiş dolaylı bir ara etkileşim dışında, salt güncel teknoloji ortamının bilinmesi amacıyla bu konuların iyi bir izleyicisidir, Bilgisayar Mühendisi. Bu teknolojinin üretim sürecinde yer almaz. Donanım Elektronik Mühendisliğinin ilgi alanıdır. Bu iki disiplin, Bilgisayar ve Elektronik Mühendislikleri, birbirlerinin ihtiyaç ve kısıtlarını bilmek dışında bir ilişki içerisinde değildirler, buna gerek de yoktur. Pek yaygın, yanlış bir sanıyı düzeltemek amacı ile bir örnek verelim:

Boya kimyası başlı başına bir mühendisliktir. Kimya Mühendisliğinin bir alt dalıdır ve uzmanlık gerektirir. Bu disiplinin mühendisi bir boyadan beklentileri saptamak için boyanın kullanıldığı ilgi alanları konusunda sınırlı bir bilgiye sahip olacaktır. Örneğin inşaat mühendislerinin ve mimarların binaların dış yüzeylerini boyamak taleplerinin olduğunu, bu boyanın hava koşullarından doğrudan etkilenmesinden ötürü bu dış koşullara dayanıklı olarak tasarlanması gerektiğini; öte yandan bir ressamın talebinin ne olduğunu, guaj veya yağlı boyanın zamana karşı dayanıklı olarak tasarlanması gerektiğini bilecektir. Öte yandan mimar da, ressam da, o günün imkanlarında hangi boyaları kullanabileceğini, özelliklerini ve bunların arasındaki farkı bilecektir. Ancak hiç bir durumda bir Kimya Mühendisi, boya konusunda uzmanlaşmış olduğu savı ile 'resim sanatından' anladığını veya 'mimariden' anladığını iddia etmeyecektir. Bir ressam da, hayatının boya kullanımı ile geçtiğini söyleyip, boyanın kimyasına ilişkin fikir yürütmeyecektir.

Benzer biçimde bilgisayar tasarımında uzmanlaşmış Elektronik Mühendisi de, ilgi alanı bu yazıda ayrıntılı olarak açıklanmış Bilgisayar Mühendisinin konuları ile ilgilenmeyecek, hele hele 'yetkinlik' iddiasında hiç bulunmayacaktır.

Bilgisayar Mühendisliğinin ilgi alanına geri dönersek:

Bilgisayar Biliminin alt alanlarının uzmanlaşmış mühendisliği bir yazılım ürününün sağlıklı üretilmesi için yeterli olmamaktadır. Alt alan mühendisliğine ek olarak bir yazılım üretiyor olmanın sorunları ile uğraşan, üretime ve ürüne ilişkin kalite ölçütleri belirleyen, bu doğrultuda üretim yöntemleri saptayan bir 'üst' mühendisliğe gereksinim vardır. Bu gerçeği yazılım sektörü ve onun müşterileri geçen 30-40 yıl içinde (bazen çok acı olan) deneyimlerle öğrenmişlerdir. Yazılım üretmeye yönelik bu 'şemsiye' mühendisliğe 'Yazılım Mühendisliği' denmektedir. Dolayısı ile Yazılım Mühendisliğini 'Bilgisayar Bilimi teorik öğretilerinin pratik uygulamalarının mühendisliği' olarak algılamak yanlıştır. Yazılım Mühendisliği bu değildir.

Yazılım Mühendisliği, eldeki kaynak kısıtlarını gözeterek, yüksek kalitede yazılım üretmenin gerekleri olan sağlıklı mühendislik usullerinin ve iyi yönetim pratiğinin oluşturulması ve bunların uygulanmasıdır. Yazılım kalitesinin ne olduğunun somut biçimde betimlenmesi de bu disiplinin doğrudan ilgi alanındadır. Bilgisayar Mühendisliği bir yazılım üretim sürecinde gözetilmesi gereken usulleri belirler. Bu dört süreç şunlardır: Bu dört evreyi genel hatları ile Bilgisayar Mühendisinin işlevi bakımından şöyle özetleyebiliriz: Y.M.:    Peki, bu depodan günde ortalama kaç sipariş sevk edilir?
Müşteri:    Hiç belli olmaz ki, hep değişir!
Y.M.:    En fazla kaç olur?
Müşteri:    5 de olduğu olur, bazen 500 de olur.
Y.M.:    Peki burada kaç eleman yükleme yapıyor?
Müşteri:    2.
Y.M.:    500 siparişi 2 adam nasıl yüklüyor peki?
Müşteri:    Beyim, o zaten kırk yılda bir olur, o zaman da siparişler bir iki gün gecikir haliylen!
Yazılım Mühendisi için belli ki çok kritik olan ortalama sipariş adedi bilgisini, gördüğünüz üzere, doğrudan öğrenmek olanaklı olmadı. Yazılım Mühendisi bunu yeteği ile buldu, çıkardı. Her zaman da şans böyle yaver gitmeyecektir.
Dolayısıyle bir Yazılım Mühendisinin:
    1. zeki olması,
    2. sosyal iletişim yeteneğinin çok yüksek olması,
    3. titiz olması
gerekir. Bunlardan birisindeki bir eksiklik sonradan gecikmeler, milyarlık zararlar, davalar, kötü ün olarak geri döner. Yeri gelmişken şunu da belirtelim:
Genel kanının aksine Yazılım Mühendisi gününü (gecesini) bilgisayar karşısında geçiren, çoğunlukla karikatürize edildiği üzere sosyal iletişim özürlüsü, garip bir dille konuştuğu için ne dediği bir türlü anlaşılamayan bir kişi hiç değildir.
Bu durumdaki kişi yukarıda anılan nedenlerden ötürü kaybetmeye mahkumdur, genel profil de hiç böyle değildir zaten. Bu bakımlardan Yazılım Mühendisliğinin pek benzeri Endüstri Mühendisliğidir. Hatta denebilir ki Yazılım Mühendisinin iletişimde olması gerekebileceği kesim bir Endüstri Mühendisininkinden daha yaygındır ve muhatap olacağı müşterinin kendi terimlerine (Yazılım Mühendisinin) vakıf olması ise daha az olasılıktadır.

Bu aşamanın sonunda üretilen karşılıklı bağıtlanan (üzerinde anlaşmaya varılıp imzalan) ihtiyaca cevap verecek ürünün (yapacakları ve yapmayacakları ile) tarif edildiği bir dökümandır.

    1. Kendini hasbel kader programcılık alanında (kısmen) yetiştirmiş, halk deyimi ile 'alaylı' farklı disiplerin insanları. Bu kişiler genellikle ufak programlar yazmışlar, hatta bir denetim mekanizması da olmadığından bunları satabilmişlerdir de. Bununla edindikleri öz güven kendilerine 'kendinden menkul' programcı sıfatı yakıştırmalarına neden olmuştur. Bu kategorideki kişiler evvelki bölümde anlatılan 'tasarım dökümanlarını' çözümlemek konusunda eğitim almamışlardır. Ayrıca, yılların deneyimi ile elde edilmiş, yazılım 'kodlama' nın kurallarından da pek haberli değildirler. Her boyutta 'alaylı' iş görürler.

    2.  
    3. Diğer grup, ne yazık ki Yazılım Mühendislerinin kendileridir. (1) gruptan kişilerle acı deneyimler yaşamış ihtiyaç sahiplerinden imkanı olanları (büyük yazılım şirketleri, parasal kısıtı az olan bankalar, holdingler,&hellip;) Yazılım Mühendislerine dönüp, 'kodlama' evresinin de onların tarafından gerçekleştirilmesini istemektedirler. Bu durum belki Yazılım Mühendisinin piyasa ederini ülkemizde artırmakta ancak öte yandan onların (yüksek ücretler karşılığında) yeteneklerine göre düşük kalitede bir iş yapmalarına ve sıkıntı duymalarına neden olmaktadır. Bu, ülkemiz Yazılım Mühendisleri arasında yaygın bir yakınma konusudur. Patlayan bilgisayarlaşma talebinin bir sonucu olarak önümüzdeki on yıl içerisinde ülkemizde bu sorunun çözülmesi ve dengelerin daha sağlıklı olarak oluşması beklenmektedir.

Bilgisayar Mühendisi için iş imkanları nedir, kaç para kazanır?

Yurtiçinde:

Ne yazık ki devlet üniversitelerinde verilen ücretler memur ücreti olup, her disiplin için aynıdır. Bazen dalgalanma göstermekle birlikte araştırma görevlisinin alacağı maaş 400 USD dolaylarındadır. Buna karşın kendisinden beklenen iş yükü özel sektördekinin yarısı gibidir. Bazı projeler çerçevesinde yapılabilecek eş işler aracılığı ile bu rakamın yükseltilmesi de olanaklıdır. Ayrıca, akademik ortamda kişiye tanınan özgürlük verilen görevlerin aksamaması sınırlarına kadar genişlemektedir. Özel sektörde durum bunun tam aksidir. İş saatleri, giyim-kuşam, iş ortamındaki kişisel özgürlükler çok daha kısıtlanmıştır.

Yurtdışında:

Türkiyedeki olgular büyük ölçekli olarak yurtdışı için de geçerlidir. Ancak herşey daha büyük boyutlarda gerçekleşmektedir. Ar-Ge etkinlikleri Türkiyeden daha yoğundur. Ancak, unutmamak gerekir ki, yurtdışındaki üniversitelerde araştırma, ülkemize göre çok daha fazla ticarileşmiştir. Üniversiteler özel sektöre ciddi paralar karşılığında araştırma ve geliştirmeler yapmaktadırlar. Yani şirket içinde 'bilimsel' etkinlik, yurtdışı normlarına göre, yine azdır. Kendi içlerinde Ar-Ge birimi oluşturup burada ciddi araştırma yapmak ancak 'dev' diye adlandırılacak bazı kuruluşlar için sözkonusudur (Kodak, AT&T, IBM, Microsoft gibi). Yine de buralarda iş bulmak olanaklıdır. Yazılım geliştirme sektöründe ise, bölümümüz mezunu her zaman iş bulabilmektedir.

ABD standartlarında, ODTÜ BMB mezunu bir bilgisayar mühendisinin (iş ayırımı gözetmemesi koşulu ile) kazanacağı yıllık (brüt) 60000-75000 USD dır. Bunun net getirisi %70 dolaylarındadır. Yaşam için harcanacak kısmı ise en az 25000-30000 USD mertebesindedir. Bu değer bazı büyük kentlerde alınan ücretin tümü düzeyine de erişebilmektedir.


Türk bilgisayar mühendisleri ne zaman yerli bilgisayar yapacak?

Bu soru bir eksikliğin ifadesi ile sorulmakta ise bu tümüyle yanlış bir yaklaşım. Türkiye Kuzey Denizinde petrol de aramıyor, Palmiye yağı üreticisi de değil, Çikita muz ve kahve de yetiştirmemekte, ancak bunları yoğun biçimde tüketmekte. Günümüz açık pazar ekonomisine dayalı Dünya düzeninde her ülkenin her ihtiyacını kendisinin gidermesi olanaklı değildir. Ülkemiz ileri bir sanayi ülkesi olacaksa bunu hangi doğrultuda gerçekleştireceğini belirlemiş durumda. Ülkemiz, beyaz eşyada, belirli türden elektronik kontrol cihazlarında (örneğin telefon santralları), ileri teknolojiye dayalı inşaat sektöründe, tekstil alanında, uluslararası konaklama organizasyonlarında (ki bir alt kümesi turizmdir), Motorlu taşıt üretiminde Dünya çapında gelişmeyi seçmiş durumda. Tercihini bilgisayar üretimi doğrultusunda yapmamış olmasının yatırım sermayesi, zamanlama, karlılık gibi karmaşık nedenleri vardır. Büyük olasılıkla ileride de bu yönde bir tercih olmayacaktır. Anlaşılması gereken bu tercihin nedeninin 'teknik bilgi eksikliğinden' kaynaklanmadığı, tamamen ticaret dünyasının kendine özgü kurallarından kaynaklandığıdır. Ülkemiz, bu teknolojileri gerekirse üretebilecek bilgi düzeyini çeşitli kurumları aracılığı ile sağlamakta ve bu bilgiyi de güncel tutmaktadır. Bir örnek vermek gerekirse ASELSAN'ın ve üniversitelerimizin bilgi birikimi bu sektörde üretim yapmaya yeterdir. Yapmayışının nedeni ticaridir. Yani yukarıdaki sorunun yanıtı şudur:
Türk ticaret dünyası tamamen ticari çıkarlarla bilgisayar ithalini değil, üretimini karlı gördüklerinde.


Bilgisayarlar birgün insanların yerini alacak mı?

Bilgisayarların şu andaki yapıları ile bu zor gözüküyor. Veri işlemleme yeteneğine sahip tek yapı masalarımızın üzerinde oturan teknoloji değildir. Başka fiziksel yapıların da bu yeteneğinin olduğunu biliyoruz. Bu yapılar günümüz teknolojisinde somutlaştırılan 'Von-Neuman' yapısında değillerdir. Ancak insanlığın ihtiyacı daha bu doğrultuda olmadığından ve günümüz bilgisayarlarının pek çok eksiği giderebiliyor olmasında ötürü 'Von-Neuman' dışı yeni teknolojilere yatırım yapılmamakta. İlerleyen zamanda bu doğrultuda yatırım yapılmasına koşut olarak sorunun cevabı olumluya dönebilecektir. Bölümüzdeki çeşitli dersler kapsamında bu alternatifler ele alınmakta, buna ek olarak Yapay Zeka kavramından da ne anlaşılması gerektiği irdelenmektedir.


Bilgisayarlara ilgim yok ama ÖSYM puanım çok yüksek, çevrem Bilgisayar Mühendisi olmam için baskı yapıyor, nasıl karar vermem gerektiğini bilmiyorum.


Başarılı öğrencilerin en güncel ilgi alanlarında meslek sahibi olmaya teşvik edilmeleri (hatta bir anlamda zorlanmaları) oldukça eski bir sorun. Ülkemizde çeşitli zaman dilimlerinde çeşitli meslekler 'revaçta' oldu:

Elektrik Mühendisliği, İnşaat Mühendisliği, Tıp, Endüstri Mühendisliği şimdi de Bilgisayar Mühendisliği... Bu akımı biçimleyen, şüphesiz ki Dünyadaki ve onun özelinde Türkiyedeki 'gereksinim'. Geçmiş deneyim, sanırız şu biçimde özetlenebilir:

Yukarıda Bilgisayar Mühendisliğini gerçek boyutları ile tanıtan yazıyı okuyup özümsedikten sonra:


Bilgisayar Mühendisinin ne yaptığını çok iyi biliyorum. Hayatta edinmek istediğim yegane meslek. Ancak ÖSYM başarım düşük, ne yapmalıyım?


Cevabımız hiç duraksamadan şu olacaktır: Ne yapın edin bu öğrenimi yapın. Ülkemizde en yüksek puandan başlayan ve daha mazbut puanlara doğru uzanan bir dizi Bilgisayar Mühendisliği Bölümü var. Şüphesiz, sizin gibi çok istekli ve bilinçli bir bireyi aramızda görmek isteriz. Ancak puanınız bu bölüme yetmiyor ise bu dünyanın sonu değil. Eğer bu mesleği belirttiğiniz kadar çok edinmek istiyorsanız en kötü Bilgisayar Mühendisliği eğitimi başka bir dalı okumak durumunda kalmaktan yeğdir. Dört yıl boyunca (ve ondan sonra) kendinizi eğitmek elinizde. Nasıl olsa zamanınızı vermeniz gereken konularla, bilgi edinmek istediğiniz konular aynı, gerisi size kalmış durumda.

Yapmamanız gereken en önemli şey, başka bir disipline gidip bir yandan da kendinizi Bilgisayar Mühendisliği konusunda eğitebileceğinizi sanmanız. Ne kadar iradeli de olsanız buna zaman bulamayacaksınız. Ayrıca size temel teşkil edecek bir bilgi de almıyor olacaksınız. Bu hata, pek çok kişi tarafından yapılmaktadır. Deneyimimiz, bu usulle başarıya ulaşabilen insan sayısının ihmal edilebilecek kadar az olduğudur. Ayrıca bu durumda elinizde diploma olmayacak ve hep 'alaylı' muamelesi göreceksiniz.



 

Oyun programlarına hayranım, ben de öyle programlar yazmak istiyorum, Bilgisayar Mühendisliği okusam bu programların nasıl yazılacağını öğrenir miyim?


Bu soru

'Kilitlere' veya 'konserve açacaklarına' hayranım, makina mühendisliği okursam bunların nasıl yapıldığını öğrenir miyim?
ssorusuna benziyor. Yanıt hem evet hem hayır. Nasıl Makina Mühendisliğinde 'Konserve Açacakları' bir ders veya konu başlığı değilse, Bilgisayar Mühendisliğinde de 'Oyun Programları' diye bir konu başlığı yoktur. Ancak çok daha genel bilgileri ve yazılım yöntemlerini öğrenmiş olan Bilgisayar Mühendisi için bu özel konu, pek de zorlanmadan üretkenlikte bulunabileceği bir konudur. Yani yanıt 'Evet, oyun programı yazabilecek bir düzeye gelirsiniz' ancak geldiğiniz düzeyde 'oyun programı' yazmakla mutlu olur musunuz, bu bizim yanıtlayamayacağımız bir soru.


Program nedir? / Ben de program yazabilir miyim? / Bilgisayar Mühendisliğinde program yazılması mı öğretiliyor?


Öncelikle yukarıdaki I. grup sorulara yanıt amacı taşıyan yazıyı okuyunuz.

Program, bilgisayarda belirli bir amacı gerçekleştirmek için geliştirilmiş (geliştirdiğiniz) yöntemlerin ve verilerin, Bilgisayarın donanımının yerine getirebileceği, uygulayabileceği bir biçimdeki ifadesidir. Programlar, bir 'Bilgisayar Programlama Dili' kullanılarak yazılır. Günümüzde yüzlerce, böyle programlama dili vardır. Aynen insanların kullandığı dillerdeki gibi, bu dillerin bazılarında bir eylemi tarif etmek diğer bazı dillere kıyasla kolay veya zordur.

Evet, siz de program yazabilirsiniz. Önce bilgisayarlar için söz konusu olacak yöntemleri öğrenmeniz, sonra amacınıza en rahat gerçekleştirebileceğiniz bir bilgisayar dilinin yazım kurallarını ve nasıl çalıştığını öğrenmeniz gerekecektir. Bunun için piyasada pek çok kitap bulunmaktadır.

Yukarıdaki yazıda da belirtildiği üzere Bilgisayar Mühendisliği eğitiminde pek çok şey öğretiliyor. Bunu Bölümümüz Curriculum (Müfredat) listesinden de gözlemleyebilirsiniz. Bu öğretilenlerin arasında program yazmakla ilintili pek çok ders bölümü bulunmakta. Ancak Bilgisayar Mühendisliği Bölümünü, 'Program yazılmasının öğretildiği yer' olarak algılamak bir yanılgı olur. Eğitim boyutumuzda gerçekleştirdiklerimizden yalnızca bir tanesi budur.


Bilgisayar Mühendiliğinde bilgisayar donanımı öğretilmiyor mu?


Öğretiliyor. Bir dizi zorunlu derste (dört ders), en temel yapı öğeleri olan tranzistörler, dirençler ve kapasitelerden başlanarak, sırasıyle mantık devreleri, bunlarla inşa edilen hesap ve işlemleme devreleri, en sonunda da mikro-işlemci (Microprocessor, CPU) dediğimiz ve bilgisayarın çekirdek işlevlerini gerçekleştiren (günümüzde 100 Milyonlarca yapı öğesini barındıran) yapı, öğrencilerimize hem teorik hem uygulamalı ortamlarda öğretilmekte. Ancak genel çerçevede, bu eğitim, donanımı imal etmeye yönelik bir eğitim olmayıp, daha çok kullanılan alt yapının ne olduğunu detayları ile vermeye yönelik bir eğitimdir.


Bilgisayarımda XXX çalışmıyordu, tanışım bir bilgisayar mühendisinden yardım istedim, çalıştıramadı, başka birisi ise geldi, birşeyler yaptı, sorun çözüldü. Nasıl bilgisayar mühendisi bu?

Bilgisayar Mühendisliği öğretim üyesi/öğrencisi/mezunu olarak, bu, çok karşılaştığımız bir durum. Windows gibi işletim sistemleri 'müdahaleye kapalı' olarak tasarlanmışlardır. Bu, bir otomobilin çeşitli bölümlerinin erişilemez, açılamaz olarak imal edilmesine benzemektedir. Böyle bir işletim sisteminde, doğan sorunu gidermek yönünde sistematik metotlar çaresiz kalmaktadır. 'Resmin' hemen hiç görülemediği bu durumlarda çözüm bilgiden ziyade, böyle bir durumla daha önce karşılaşılıp karşılaşılmadığı ve bu durumda körlemesine yapılan, işe yaraması/yaramaması durumunda nedenin bilinemediği müdahalelerin ne olduğunu anımsamak yolu ile bulunmaktadır. Bu durumda ise bilgisayar mühendisliği mensubunun bir üstünlüğü yoktur. Hatta, bu bağlamda dezavantajlı olduğu bile söylenebilir. O, zamanını körlemesine denemeler yapıp sonuçlarını gözlemlemekten ziyade, sistematik, bilimsel bilgileri edinmek ve özümsemek ile geçirmektedir.

Böyle durumlarda, başvurduğunuz kişiye XXX sorunları konusunda deneyim sahibi olup olmadığını sormanızı öneririz


ODTÜ Elektrik ve Elektronik Mühendisliğinin Bilgisayar branşı var. Öğrenimimi orada yaparsam hem Elektronik Mühendisi hem Bilgisayar Mühendisi olmuş olacağımı söylüyorlar, doğru mu?

Bu kadar mesnetsiz ve gerçek dışı bir söyleme tepki duymamak elde değilse de, bilim adamı kişiliğimizden ötürü salt somut gerçekleri ortaya koyacağız ve yargıyı size bırakacağız.

ODTÜ Elektrik ve Elektronik Bölümü Bilgisayar branşından mezun olmak için öğrenci üç yıl boyunca Elektrik ve Elektronik Mühendisliği bölümünün açtığı aşağıdaki dersleri almak zorundadır:
 
 
EE 100 Introduction to Electrical Engineering
EE 201 Circuit Theory I
EE 213 Electrical Circuit Laboratory
EE 202 Circuit Theory II
EE 212 Semiconductor Devices and Modeling
EE 214 Electronics Circuit Laboratory
EE 224 Electromagnetic Theory
EE 230 Probability and Random Variables
EE 301 Signals and System
EE 303 Electromagnetic Waves
EE 311 Analog Electronics
EE 313 Analog Electronics Laboratory
EE 361 Electromechanical Energy  Conversion I
EE 302 Feedback System
* EE 312 Digital Electronics
* EE 314 Digital Electronics Laboratory
* EE348 Introduction to Logic Design
EE348 Electromechanical Energy Conversion II
EE 306 <veya> EE 374 Signal & Systems <veya> Electrical Equipipment and Applications

Bu üç yıl boyunca alınan bölüm derslerinin yalnızca (*) ile işaretli olan üç tanesi Bilgisayar Mühendisliği eğitimi bakımından anlamlıdır. Bu üç yıl içinde bu üç derse ek olarak olarak, öğrenci bir de Bilgisayar Mühendisliği Bölümünden bir ders alır:
 
* CENG 230 Introduction to Computers and 
C Programming

Bu ders, basitliğinden ötürü Bilgisayar Mühendisliği ögrencilerine kapalıdır.

4. Yılda (son yıl)  ODTÜ Elektrik ve Elektronik Bölümü Lisans programında branşlaşma başlar:

  • Communications Area
  • Computers Area
  • Control Area
  • Microwaves and Antennas Area
  • Energy Area
  • Her branş için öğrenci  branşına göre 3 ila 4 zorunlu ders ve  branşına göre 3  ila 4 seçmeli ders almak durumundadır.
    Şimdi Bilgisayar Branşı için olan duruma bakalım:

    Zorunlu dört ders:
    * EE 441 Data Structures
    * EE 445 Computer Architecture I
    * EE 446 Computer Architecture II
    * EE 447 Introduction to Microprocessors

    Ve şu aşağıdakilerden öğrencinin keyfine göre seçeceği üç ders:
     
    EE 402 Discrete Time Systems
    EE 404 Nonlinear Control Systems
    EE 407 Process Control
    EE 408 Process Instrumentation and Contro
    EE 412 Nonlinear Electronics for Communications
    EE 415 Introduction to Medical Imaging
    EE 416 Fundamentals of Biomedical Engineering
    × EE 430 Digital Signal Processing
    EE 435 Telecommunications I 
    EE 436 Telecommunications II
    * EE 442 Operating Systems
    * EE 443 Computational Methods in Electrical Engineering
    * EE 444 Introduction to Computer Networks
    EE 463 Static Power Conversion I
    EE 464 Static Power Conversion II

    Bunlardan  (*) ile işaretli olanlar Bilgisayar Mühendisliği ile ilintili  (×) ile işaretli olan ise zayıf ilintilidir. İşaretsiz olanların Bilgisayar Mühendisliği ile hiç bir alakaları yoktur.

    Zorunlu derslere bakıldığında görünen Bilgisayar Mühendisliği eğitiminin 'Donanım' a ilişkin verdiği derslerin sağlıklı biçimde kapsandığı diğer derslerinin çok ufak bir kısmının [bir tanesinin] verildiğidir, bu dersi her iki bölümün resmi katalog tanımlarına göre kıyaslayalım:

    Elektrik ve Elektronik Mühendisliğinin verdiği Data Structures dersinin tanımı:

    Bilgisayar Mühendisliğinin verdiği Data Structures dersinin tanımı: EE 441 in kapsamadığı alanların yanında Algoritmalarla ilgili ek olarak kapsıyor gibi gözüken konular Bilgisayar Mühendisliğinde başlı başına bir zorunlu derstir: Görüldüğü gibi donanım dersleri dışında Bilgisayar Mühendisliği ile ortak tek zorunlu derste de, aslında iki ders olması gereken konular tek bir derste kapsanmış durumdadır.

    Son olarak bir de Bilgisayar Mühendisliğinin derslerini listeleyelim.  (??) işareti Elektrik ve Elektronik Mühendisliğinin verdiği dersler arasında benzeri bulunmayan dersleri, (?) işareti ise dersin konularının bazılarının kapsandığı bir 'yakın' dersin varlığını göstermektedir. Hiç bir işaret olmaması ise dersin eşdeğeri bir dersin varlığını göstermektedir.

    ODTÜ Bilgisayar Mühendisliği Lisans programı zorunlu bölüm dersleri:
     
    ?? CENG 100 Computer Engineering Orientation
    ?? CENG 111 Introduction to Computer Engineering
    ? CENG 140 C Programming
    ? CENG 213 Data Structures
    ?? CENG 223 Discrete Computational Structures
    CENG 232 Logical Design
    ? CENG 272 Numerical Computation
    ?? CENG 242 Programming LAnguage Concepts
    ? CENG 315 Algorithms
    CENG 331 Computer Organization
    ?? CENG 351 Data Management  & File Structures
    ?? CENG 378 Computer Graphics
    ? CENG 334 Introduction to Operating Systems
    CENG 335 Microprocessors and Microcomputers
    ?? CENG 350 Software Engineering
    ?? CENG 380 Formal Languages and Abstract Machines
    ?? CENG 444 Language Processors
    CENG 435 Data Communication and Computer Networking

    Bunlara ek olarak öğrenci aşağıdaki altı dersten birini almakla yükümlüdür:
     
    ?? CENG 352 Data Base Management Systems
    ?? CENG 462 Artificial Intelligence
    EE 212 Semiconductor Devices and Modeling
    EE 282 Introduction to Digital Electronics
    EE 301 Signals and Systems I
    EE 312 Digital Electronics

    Bunlara da ek olarak, Bilgisayar Mühendisliğı Lisans öğrencisi beş tane de seçmeli (teknik konuda) ders almak durumundadır ki bunlar da bölüm derslerinden olabilmektedir.

    Böylece Bilgisayar Mühendisliği Lisans eğitiminin

    Bunun dışında öğrencinin almak durumunda olduğu altı teknik seçmeli dersin en az beşinin ve Elektrik ve Elektronik Mühendisliğinde benzerinin bile olmaması olasılığı çok yüksektir.

    Görüldüğü üzere Elektrik ve Elektronik Mühendisliği öğrencisinin Bilgisayar Branşını seçmek sureti ile Bilgisayar Mühendisliğinin bilgisine yaklaşabilmesi olanaklı gözükmemektedir.