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
-
Yeni ve yaygınlığı hızla artan bir teknolojiye ilişkin olması,
-
bu teknolojiyi kullanmak ile üretmenin arasındaki çizginin keskin olmayışı,
-
bu disiplinden eğitim almış kişilerin azlığı,
-
çok revaçta olan bir meslek grubu olması
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:
-
Bilgisayar Mühendisliği ile Bilgisayar Bilimi (Computer Science) aynı şeyler
midir?
-
Bilgisayar Mühendisliği Elektronik Mühendisliğinin bir alt kolu mudur?
-
Bilgisayar Mühendisliğinin komşu bilim alanları ve mühendislikleri nelerdir?
-
Bir Bilgisayar Mühendisi gününü bilgisayar karşısında mı geçirir?
-
Bilgisayar Mühendisliğinde nasıl bilgisayar imal edileceği öğretiliyor
mu?
-
Bilgisayar donanımı Elektronik Mühendisliğinin konusu olduğuna göre bu
donanımın programlanması da bu dalın ilgi alanında olmalı.
-
Bilgisayar Mühendisliği-Yazılım Mühendisliği; ikisi aynı şey mi?
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ühendisi için iş imkanları nedir, kaç
para kazanır?
-
Türk bilgisayar mühendisleri ne zaman yerli
bilgisayar yapacak?
-
Bilgisayarlar birgün insanların yerini
alacak mı?
-
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.
-
Oyun programlarına hayranım, ben
de öyle programlar yazmak istiyorum, Bilgisayar Mühendisligi okusam bu programların
nasıl yazılacagını öğrenir miyim?
-
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?
-
Program nedir? / Ben de program yazabilir
miyim? / Bilgisayar Mühendisliğinde program yazılması mı öğretiliyor?
-
Bilgisayar Mühendiliğinde bilgisayar
donanımı öğretilmiyor mu?
-
Bilgisayarımda XXX çalışmıyordu, tanışım bir bilgisayar mühendisinden yardım istedim,
çalıştıramadı, başka birisi ise geldi, bişeyler yaptı, sorun çözüldü.
Nasıl bilgisayar mühendisi bu?
-
ODTÜ Elektrik ve Elektronik Mühendisliğinin
Bilgisayar branşı var. Oraya gidersem hem Elektronik Mühendisi hem Bilgisayar
Mühendisi olmuş olacağımı söylüyorlar, doğru mu?
Bilgisayar Mühendisliği
Bilgisayar Mühendisliği başlığı altında toplanmış etkinliğin ve
bunun eğitiminin iki boyutu var.
-
Bilgisayar Bilimi,
-
bu bilimin alt alanlarının herbirisinin mühendislikleri ve bu bilimin teknolojik
ürününü geliştirme süreci ile ilgilenen Yazılım Mühendisliği.
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:
-
Veri,
-
Belirli amaç,
-
İşlemleme kuralları,
-
İşlemleme yordamı
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:
-
Yalnızca değiştokuş(i,j) ve elemanların sıra ilişkisini (<) kullandığımız
öyle bir yöntem bulmak ki sonunda verilen kümedeki elemanlar tümüyle artan
sıraya girmiş olsun. Matematiksel deyişle: Bütün i,j ler için xi
<
xj ise i < j dir.
(Yani, amaç defterdeki bütün sözcükleri, ikili değiştokuşlarla, artan
sıraya sokmak)
-
Yöntemde kullanılan değiştokuş(i,j) işlemlerinin 'en az' olmasını
sağlamak. Bu 'en az' değiştokuş(i,j) sayısını
N cinsinden
tarif etmek.
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:
-
Sipariş sahibi ile yapılacak görüşmeler sonucunda ihtiyacın belirlenmesi.
-
Tasarımın yapılması.
-
Yazılımın yazılması.
-
Yazılım ürününün test ve bakım.
Bu dört evreyi genel hatları ile Bilgisayar Mühendisinin işlevi bakımından
şöyle özetleyebiliriz:
-
Sipariş sahibi ile yapılacak görüşmeler sonucunda ihtiyacın belirlenmesi:
Bir olurluk-fiyat analizi ile başlayan bu süreçte müşterinin ihtiyacının
ne olduğu ve bütçesinin çerçevesinde nasıl yazılım çözümleri üretilebileceği
irdelenir. Bu süreç çok yoğun müşteri ile ilişki gerektirmektedir. Pek
çok müşteri, bilgisayarlar konusunda en temel bilgiden bile yoksundur.
Bundan ötürü Yazılım Mühendisini çok kolaylıkla yanlış noktalara yöneltir.
Örneğin bir mal sevkiyatının otomasyonunda şöyle bir diyalog, çok olasıdır:
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:
-
zeki olması,
-
sosyal iletişim yeteneğinin çok yüksek olması,
-
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.
-
Tasarımın yapılması:
Bu aşama mühendisliğin teknik (ve anlaşılmaz) boyutunun devreye girdiği
aşamadır. Gerekli bilgileri müşteriden almış olan Yazılım Mühendisi (olasılık
ekibi ile) kapanıp talep edilen ve üzerinde anlaşılmış sistemin tasarımını
yapacaktır. Nasıl İnşaat Mühendisliğinin proje çizim yöntemi, Elektronik
Mühendisliğinin elektronik devre çizim yöntemi, Makina Mühendisliğinin
teknik resim çizim yöntemi varsa Bilgisayar Mühendisliğinin de kendine
özgü bir tasarımı belgeleme (denotation) yöntemi vardır. Ve nasıl Bir Makina
Mühendisi elektronik devre şemasından birşey anlamaz ise diğer tüm mühendislikler
de Bilgisayar Mühendisliğinin bu belge ve çizimlerinden birşey anlamaz.
Bu belgelerde işin hangi işlevsel modüllere, nasıl bölüneceği, modüllerin
birbirleri ile ilişkileri, veri depoları, veri akışları, veri dönüşümleri,
veri türleri gösterilir. Nasıl üç odalı, bir mutfaklı ve iki tuvaletli
bir daireyi iki İnşaat Mühendisinin (veya Mimarın) farklı farklı tasarlaması
olanaklı ise yazılımın tasarımı da farklı farklı ve buna bağlı olarak da
başarılı/başarısız olabilir. Teknik deneyim ve ustalığın kendisini göstereceği
en önemli aşamalardan birisidir tasarım. Bu tasarım evresinde de kimse
sipariş edilen yazılımı 'yazmak' (biz buna kodlamak diyoruz) amacı ile
bilgisayar başına oturmayacaktır. Bu, daha planı yapmadan inşaata girişmeye
benzerdi ve aynen böyle bir inşaat nasıl çökmeye mahkum ise, tasarım evresi
profesyonel usullere uygun yapılmamış bir yazılım da feci biçimde çökmeye
mahkumdur.
Bu evrede, günümüzde artan biçimde, Yazılım Mühendisleri bu tasarımları
belgelemek için özel bilgisayar prgramlarından yararlanmaktadırlar. Piyasada
bulunan Yazılım Mühendisliği paketleri Yazılım Mühendisinin tasarımını
yapması ve belgelemesinde yardımcı araç görevi yapmaktadır. Aynen bir Elektronik
Mühendisinin yarattığı devreyi çizmesine yardımcı olan devre çizim programları
veya bir İnşaat Mühendisinin bina planının çizdiği halk arasında Autocad
programı olarak bilinen programlardır bunlar. Gerçekte Bilgisayar Mühendisi
(diğer mühendisliklerde de olduğu üzere) bu programlar olmaksızın da tasarımını
yapabilir.
Tasarım evresinin sonunda üretilen bir 'Tasarım Dökümanı' dır. Ve belirtildiği
üzere ancak ancak konunun profesyonellerince anlaşılabilecek özelliktedir.
-
Yazılımın yazılması:
Sıkı durun, beklentinizin aksine olduğunu tahmin ettiğimiz, çarpıcı
bir gerçek geliyor:
Gerçek profesyonellikte yazılımın fiilen yazılması Yazılım Mühendislerince
yapılmaz.
Bu aynen planı çizilmiş bir inşaatın İnşaat Mühendislerince harç
karılarak, kalıp çakılarak, kazma kürekle inşaa edilmesine, veya tasarımı
yapılıp şeması çizilmiş yeni televizyonun üretim hattında bir Elektronik
Mühendisinin lehim yapmasına benzer. Bu aşama aslında 'programcı' olarak
adlandırılan, kendi başına tasarım yapacak bilgisi olmayan ancak yapılmış
bir tasarım dökümanına bakarak yazılımı yazabilecek elemanlarca gerçekleştirilir.
Bu 'programcıların' 'kodlamaları' da aynen bir inşaat sahasındaki şantiye
mühendisinin inşaatın yapılmasını her aşamada denetim altında tutması gibi
bir Yazılım Mühendisi tarafında sıkı biçimde denetlenir. Hatasızlığı kontrol
edilir. Yeri gelmişken bir gerçeğin altını çizip, genel bir yanlış kanıyı
düzeltelim:
Yazılım Mühendisliği yoğun bilgisayar kullanımı gerektiren, kişinin
hayatını program yazarak geçirdiği bir meslek değildir.
Ülkemizdeki durum:
Ülkemiz yazılım üretimi konusunda ne yazık ki daha tam profesyonelleşememiştir.
Eksiklik, gerekli kadroların ve iş gücünün oluşmasıdadır. Yazılım Mühendisi
sayımızda azlık olduğu gibi, bu disiplinin ara elemanı durumunda olan 'programcı'
sayısı ihtiyacın çok çok altındadır. Pek az üniversitede 2 yıllık 'programcılık'
eğitimi verilmektedir. Kaldı ki 'programcılık' üniversite çatısı altında
olmaktan çok 'meslek yüksek okulu' çatısı altında yer alması gereken bir
meslek eğitimidir. (Profesyonel) 'programcı' boşluğu ne yazık ki ülkemizin
bir gerçeği olarak iki kaynaktan doldurulmaktadır:
-
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.
-
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,…)
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.
-
Yazılım ürününün test ve bakım:
Bir yazılım üretim süreci çeşitli aşamalarda test evreleri içerir.
Bu gerek 'kodlanan' modüllerin işlevlerini yerine getirip getirmedikleri,
gerekse de tasarım parametrelerinin uç değerlerindeki tavırları ve dayanıklılıklarına
ilişkindir. Ayrıca birleşince tüm yazılım sistemini oluşturacak olan bu
modüllerin birleştirilme işlemi de hatalar içerebilmektedir. Dolayısıyle
tüm sistem bütensellik bakımından da testlere tabi tutulur. Bütün bu test
işlemleri deneyim,ciddiyet ve tititzlik gerektirir. Bu evrede Yazılım Mühendisleri
ve deneyimli 'programcılardan' oluşmuş olan bir ekip yer alır. Bu ekibin
'yazılımı kodlayan' ekipten tümüyle farklı olması ve yalnızca 'ihtiyacın
tarif edildiği' dökümanı ve 'tasarım dökümanını' kriter olarak alması esastır.
Bu aşama üretilen yazılımın test edilmesi amacı ile bilgisayar başında
geçen bir evredir.
Bakım, ürünün tesliminden ve kabulünün yapılmasında sonraki zaman dilimlerinde
keşfedilecek yazılım bozukluklarının (hep hiç olmaması dilenir, ancak hiç
bir zaman hata sıfır olmaz) onarılması ve/veya gereksinimlerdeki değişim
veya ek gereksinimlerin doğması dolayısıyle yazılımda yapılacak değişiklikleri
içerir. Bu aşama da Yazılım Mühendisinin denetimindedir.
Bilgisayar Mühendisi için iş imkanları nedir,
kaç para kazanır?
Yurtiçinde:
-
Şirketlerin bilgi-işlem birimleri:
Çeşitli bankalar, holdingler, büyük ölçekli sanayii kuruluşları kendi
faaliyetleri ile ilgili bilgisayar(laşma) etkinliklerini kendi çatıları
altında gerçekleştirmekteler. Buralardaki etkinlikler çoğunlukla çeşitli
tecimsel (ticari) işlerin ve işlevlerin otomasyonu olmaktadır. Veritabanı
uygulamaları (stok, süreç denetimi, muhasebe, vb.), ağ eksenli uygulama
geliştirilmesi, ofis otomasyonu, WEB esaslı e-tecim, etkinliklerin büyük
kısmını oluşturmaktadır.
Bilgisayar Mühendislerine en yüksek ücret bu şirketlerin bünyesinde
ödenmektedir. Bulunulan şehre göre değişmekle birlikte yaklaşık 1000-1200
USD ile başlayan başlangıç ücreti bir yıllık başarılı bir çalışma sonucunda
2000 USD'a tırmanmaktadır. Piyasa 4-5 yıllık bir deneyimin alacağı ücret
2500 USD üzeri olmaktadır.
-
Yazılımevleri:
Ülkemizde artan sayıda, çeşitli ölçekte, yazılım üreten şirket açılmaktadır.
Bunlara yazılımevi diyoruz. Bu yazılımevleri kendi stratejilerine uygun
olarak yatay veya dikey pazara yönelik ürün üretmektedirler. Yatay pazarda
bir yazılımın değişikliğe uğratılmadan birden fazla farklı müşteriye satılabilmesi
amaçlanmaktadır, yani bir tür 'konfeksiyon' üretim söz konusudur. Düşey
pazarda ise amaç belirli bir müşteriye (veya dar bir kesime) yönelik yazılım
üretmektir. Ufak yazılımevleri genellikle düşey pazardan pay almak istemektedirler.
Son yıllarda bu tür yazılımevlerinin sayısı yazılım gereksinimlerine koşut
olarak artmaktadır. Bu yönde devlet teşvikleri ve banka kredi destekleri
de vardır. Çoğunlukla mezuniyetinin ertesinde bir yazılım kuruluşunda çalışan
Bilgisayar Mühendisinin, belirli bir alanda 'alan bilgisi' ve ilişkilerini
oluşturup, bulunduğu kurumdan ayrılıp, bir iki ortaklı yazılımevi şirketi
kurması ve söz konusu dikey pazara yazılım üretmesi en yaygın gerçekleşme
türüdür. Bu tür yazılımevleri ilk bir iki yıl finansal yönden zorlanmakta,
ancak ilk birkaç ürünlerinin satılamasını izleyen zaman diliminde (bu ürünün
başarısı oranında) piyasada tutunabilmektedirler.
Yazılımevlerindeki Bilgisayar Mühendisi çalışanların aylıkları bir
önceki başlıkta anılandan daha azdır. Bazı yazılımevleri ürün satışı üzerinden
ortaklık önermekte ve rakamı daha da düşük bir düzeye çekmektedir. Buralarda
geliştirilen yazılımın 'çekiciliği' ne yazık ki, Bilgisayar Mühendisinin
ücretine (-) bir faktör olarak etkimektedir.
-
Akademik yaşam:
Öğrenimin lisans sonrası eğitim (master, doktora dercelerine yönelik)
sürdürmek kararında olan lisans mezunları için bir alternatif de 'üniversitede
asistan olarak kalmaktır'. Bu eski deyim 80 li yıllarda Araştırma Görevliliği
olarak yeniden adlandırılmıştır. ODTÜ Bilgisayar Mühendisliği Bölümünde
her yıl 8-10 araştırma görevlisi göreve başlamaktadır. İyi bir not ortalaması
ve bilgi düzeyi, akademik çalışma yönünde motivasyon bu yolu seçmenin ön
koşuludur. Araştırma görevlileri, görevlerinin bir parçası olarak bir yandan
sınıf karşısında bilgi aktarma imkanı bulmakta ve eğitmenliğin tadına varmakta
diğer yandan ise bilimsel araştırmanın nasıl yapıldığını öğrenmekte, bilime
katkıda bulunabilmektedirler. Yayınlanan bir bilimsel çalışmanın kapağında
kişinin kendi adını görme olanağı yalnızca bu yaşamı seçmekle gerçek olabilir.
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:
-
Eğer birden fazla mesleğe eşit mesafede iseniz ve Bilgisayar Mühendisliği
bunlardan birisi ise bu disipline geldiğinizde hayal kırıklığına pek uğramayacaksınızdır.
Sağladığınız yaşam kalitesi, sürekli gelişen bir teknolojinin içinde saygın
bir meslek sahibi olmak sizi mutlu edecektir.
-
Eğer başka bir meslek (özellikle Sosyal Bilimlerde veya Fen bilimlerinde)
sizi çok daha fazla cezbediyorsa, bu durumda ciddi bir probleminiz var
demektir. Önce ilgilendiğiniz meslek alanı hakkında gerçek ve sağlıklı
bilgi edinmeyi amaç edininiz. O disiplinin kişileri ile konuşunuz, yukarıdakine
benzer ayrıntıda bilgiyi edinmeye çalışınız. Size 'gerçek bilgi' aktaran
kişiler dışında herkese (evet gerekirse en yakın çevrenize bile) 'kulaklarınızı
tıkamanızı' öneririz. Siz, yeteri kadar bilgilendikten sonra kendi kararınızı
kendi başınıza ve herkesten sağlıklı verebilecek zekaya sahipsiniz, başarılarınızla
bunu kanıtladınız. Önerimiz, tamamen bilgilendikten sonra, kendi kararınızı
gönlünüzün olduğu doğrultuda vermenizdir. Bu yaşamı herkesin yalnız
bir kere yaşadığını unutmayınız.
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ı:
-
EE 441: Arrays, stacks, queues, linked lists, trees, hash tables,
graphs: Algorithms and efficiency of access. Searching and sorting algorithms.
Prerequisite: CENG 230 or consent of the department
Bilgisayar Mühendisliğinin verdiği Data Structures dersinin tanımı:
-
CENG 213: Classification of Data Structures, Space and Time considerations,
Linked Lists, Stacks and Queues, Tree structures, Graphs, Array and Pointer
based applications, Recursive applications.
Prerequisite: CENG 140
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:
-
CENG 315 (Algorithms): Selected computer algorithms: Sorting, Searching,
String Processing and Graph algorithms. Algorithm design and analysis techniques.
Time and Computational complexities of algorithms. Introduction to NP-completeness,
parallelization of algorithms, linear and dynamic programming.
Prerequisite: CENG 213
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
-
zorunlu derslerinden 9/18 nin Elektrik ve Elektronik Mühendisliğinde benzeri
bile yoktur.
-
zorunlu derslerinden 4/18 nin Elektrik ve Elektronik Mühendisliğinde zayıf
benzeri vardır.
-
zorunlu derslerinden 5/18 nin Elektrik ve Elektronik Mühendisliğinde eşi
vardır.
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.