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?
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?

*Algoritmalar ve Veri Yapıları
*Programlama Dilleri
*Mimari
*Bilimsel Hesaplama
*İşletim Sistemleri
*Bilgi ve Veri Yönetimi
*Grafik, Görüntüleme ve Çokluortam
*Ağ-eksenel Bilişim
*Akıllı Sistemler

Algoritmalar ve Veri Yapıları

Algoritma, verilmiş bir amacı gerçekleştirmek için, bir ilk durumdan başlayıp bir son duruma eriştirmeyi sağlayacak, sağlıklı olarak betimlenmiş sonlu bir komut kümesidir. Algoritmalar bilgisayar programları olarak gerçekleştirilebilir. Algoritma kavramını kolay anlatmak için genellikle gündelik hayat içindeki amaçlar için bulduğumuz, uyguladığımız algoritmaları verilir.
Örneğin annelerin yemek tarifleri, şehrin bir yerinden bir başka yerine gitmek için izlenecek usul, 3x2+5x-48=0 denkleminin köklerinin nasıl bulunacağı hep algoritma kavramına örnektir. Bu örneklerden de kolayca algılanacağı üzere bir amaca erişmenin yolu (yani algoritması) farklı başarımlarda olabilir. Aynı amaca yönelik bir algoritma bir diğerinden daha fazla zaman veya kaynak tüketiyor olabilir. Bilgisayar Bilimlerinin Algoritma dalı bu doğrultuda uğraş verir. Amaçlara erişmek için algoritmalar tasarlar ve başarımlarını analiz eder. Geliştirilmiş olanları iyileştirmeye çalışır.

Veri Yapıları, verinin kolay erişilebilecek ve işlenebilecek bir biçimde nerede ve nasıl tutulacağının bilimidir. Her ne kadar 'nerede' sorusunun yanıtı bilgisayar donanımı ile doğrudan ilintili gibi görünse bile gerçekte bunun çok ötesindedir. Bir ansiklopedinin bilgiyi tutuş biçimi (alfabetik sıralı, harf başlarının sayfalarının dizinden bulunabildiği yapı) bile bu disiplinin ilgi alanındadır. Örneğin baktığınız sayfada aradığınız sözcüğü her bulamamanın bir bedeli olsa idi, acaba ansiklopedilerimizi farklı düzenler miydik? Ya her iki günde bir ansiklopedi veya sözlükteki bazı tanımlar değişse, yeni sözcükler eklense durum ne olurdu? Bu ve buna benzer binlerce sorunun verimli çözümlerinin bulunması bu dalın ilgisindedir.

Programlama Dilleri

Bilgisayara yaptırılacak komutları belirtmeye yönelik standartlaştırılmış ifade yöntemlerine Programlama Dilleri diyoruz. Bunlar şüphesiz insan dillerinden çok daha kısıtlı bir sözcük ve söz dizim yapısına sahiptirler ve katı bir kesinlik içerirler. Bu özellikleri bakımından matematiğin yazım diline benzeştiklerini söyleyebiliriz. Farklı amaçlar için farklı bilgisayar dilleri geliştirilmiştir. Programlama dilleri antolojisi binlerce dil içermektedir. Ancak bunların çok büyük kısmı özelleşmiş, dar kullanımlı ve/veya deneysel dillerdir. Genel geçerliği olan dil sayısı 10 dolaylarındadır. Bilgisayar dilleri 20 yi aşkın özelliğe göre sınıflara ayrılabilir. Bir dil yalnızca tek bir sınıfa ait olmak durumunda değildir. [Örneğin Profesyonel olarak yaygın bir kullanıma sahip C++ dili buyurgan (imperative), nesnelliğe yönelik (object-oriented), yordamsal (procedural) bir dildir]

Bu çeşitlilik, farklı (ve bazen çelişen) programcı beklentilerinden, profesyonellerin programlama dünyasına bakış açılarındaki (paradigma) farklılıklardan kaynaklanmaktadır. Gündelik yaşantımızda nasıl her duruma uygun giysi; her ortamda kullanabileceğiniz kağıt/kalem; her türlü bilimsel/teknolojik/mimari çizim için kullanılacak ortak bir çizim usulü yok ise (ve olması da aslında mantıksız ise) her amaca hizmet eden süper bir bilgisayar dili de yoktur (olması da anlamsızdır).
Bilgisayar Biliminin programlama dilleri ile uğraşılan alt alanında programlama dillerinin sınıfları, sınıflara yol açan programlama paradigmaları, farklı (ve bazen çelişen) programcı beklentilerinin nasıl dillerle giderilebileceği irdelenmektedir. Dillerin gerek söz dizimsel gerek anlamsal (semantik) özelliklerini betimlemeye (denotasyon) yarayan ve bu betimleme üzerinden dilin çeşitli özelliklerini ispat eden öğreti de bu daldaki uğraşlar arasında yer alır.

Mimari

Veri işlemeye uygun yapıların tasarımıdır. Adının da çağrıştırdığı üzere gereksinimlerden hareket ederek, verilmiş bir bütçe içinde ortam koşullarını da göz önüne alarak, tıpkı bir binanın tasarlanması gibi, bilgisayarın tasarlanması bu alt alanın uğraşıdır. Bu bağlamda bilgisayarın elektronik bir yapı olarak tasarlanması, binaların taş olarak tasarlanması ile benzerlik gösterir. Gelişen veya evrilen teknoloji ile nasıl taş tuğlalar yerlerini plastik veya cam elemanlara bırakabilecekse değişen teknoloji ile bilgisayarlar belki elektrik akımları ile değil de, ışık ile çalışacak veya bambaşka bir fiziksel olguya dayalı olacaktır. Tüm bu değişimlerin geliştirilmesi/izlenmesi, var olan teknolojiler çerçevesinde gereksinimlere cevap verecek tasarımların yapılması Bilgisayar Mimarisi alanının uğraşıdır.

Günümüzde elektronik teknolojisinin sağladığı çözüm artık teknolojik ve fiziksel limitlere yaklaştığından ve daha yüksek başarımlı (performanslı) berime gereksinimin artarak sürmesinden ötürü yeni açılımlar aranmakta ve gerçekleştirilmektedir. Bir yandan günümüz bilgisayarlarının temel mimarisi olan Van-Neumann mimarisine alternatif mimariler geliştirilmeye çalışılmakta diğer yandan ise birden çok (aslında pek çok) bilgisayar merkezi işlem biriminin birlikte, koşut olarak, çalışacakları mimariler geliştirilmektedir.

Mimarinin ne denli farklılıklar yaratabildiğine bir örnek olarak insan beynine kıyaslandığında günümüz bilgisayarlarının durumuna bir bakalım:

                                    | Ortalama PC | İnsan
Saniyede işlem          | 109                 | 1016
Bellek (Byte)             | 109                 | 1015

Oysa insan beyninin yapı taşı olan nöron hücresi saniyede ancak 105 hesap yaparken bir PC nin merkezi işlem birimi 109 hesap yapabilmektedir. Fark, mimari yapıdadır. PC de güçlü tek bir işlem yapıcı varken İnsanda güçsüz ancak koşut çalışan 1011 işlem yapıcı (nöron hücresi) bulunmaktadır. PC de merkezileşmiş bir bellek birimi varken, insanda bellek her nörona dağılmış durumdadır.

Bilimsel Hesaplama

Bilgisayar Biliminin bu dalı diğer bilim ve mühendislik dallarına ait problemlerinin matematiksel modellemelerinin yapılması ve bu modeller aracılığı ile bu problemlerin bilgisayarda çözülmesi ile uğraşır. Bu uğraşa tipik örnekler vermek gerekirse:

*Olguların yeniden kurgulanması ve bu suretle anlaşılmaya çalışılması (örneğin deprem, tusunami ve diğer doğal felaketler gibi)
*Bilinen senaryoların benzeşiminin yapılması bunların verimlileştirilmesi (örneğin teknik veya üretim süreçleri gibi)
*Geleceğe veya daha gözlenememiş durumlara ilişkin çıkarımların yapılması (örneğin hava tahminleri, atom içi parçacıkların davranışları gibi)

Bu dal çoğunlukla nümerik hesaplamalara yönelik yöntemler kullanır ve geliştirir. Ancak sembolik hesap yöntemleri de bu alanda kullanılan (ancak maliyeti yüksek) yöntemlerdir. Bilimsel hesaplama disiplini, hesapların yeğinliği ve zorluğundan ötürü yüksek başarımlı (high performance) berim mimarileri ve yöntemleri ile yakından ilgilenir.

İşletim Sistemleri

İşletim sistemi bir bilgisayar sisteminin tüm donanımını erişilebilir ve kullanılabilir kılan, kullanıcının sistemden taleplerini yerine getiren büyük boyutlu, kalıcı bir yazılımdır. Günümüz bilgisayarlarında bir anda birden fazla iş yapılmaktadır. Bu işler çalışan programlardır. Gerçekte bir bilgisayarda bu iş sayısı ile kıyaslanmayacak kadar az sayıda (genellikle bir tane) merkezi işlem birimi (processor) vardır. Dolayısı ile bir mekanizma ile işlerin çok hızlı bir biçimde dönüşümlü olarak ve parça parça merkezi işlem birimine yaptırılması gerekmektedir. Bu çok hızlı iş değiştirme kullanıcı tarafından algılanmayacaktır. Bu olguya zaman paylaşımı (time sharing) denir. İşletim sistemlerinin önemi bir işlevi bu zaman bölüşümünün yönetimini yapmaktır. Çağdaş bilgisayar sistemlerinde, zamanın çeşitli işler arasında paylaşıldığı gibi, bellek kullanımı da işler arasında paylaşılmaktadır. İşletim sisteminin önemli bir görevi de bu paylaşımın yönetimidir. İşletim sisteminin diğer önemli bir görevi çalışmakta olan işlerin programcı hatalarından kaynaklı bazı yanlış eylemlerde bulunmamasını sağlamak böyle bir olay durumunda müdahale edip zararı en aza indirmektir. Şüphesiz işletme sistemi prgramların amaçlarını anlayıp amaca doğru ilerlenilip ilerlenmediğini kontrol edemeyecektir. Ancak bir program kendisine tahsis edilmemiş bir bellek alanına erişmek isterse, hakkı olmayan bir donanımı veya yazılım birimini kullanmak isterse buna izin vermeyecektir. İşletim sistemi tüm donanım birimleri ve dış birimler ile olan iletişimden de sorumludur. Kullanıcı ile bilgisayar sisteminin iletişmini sağlayan 'arayüz' de yine işletim sisteminin bir parçasıdır. Hemen hemen tüm PC kullanıcılarının aşina olduğu Linux, Unix, Windows ve MacOS, işletim sistemlerinin çok tanınan dört tanesidir.

Bu denli ağır işlevleri olan devasa yazılımların tasarımları pek çok yeni kavram ve yöntem gerektirmektedir. Bilgisayar biliminin işletim sistemleri ile ilgilenen dalı bu kavram ve yöntemlerin geliştirilmesi, başarımlarının analiz edilmesi ile ilgilenir.

Bilgi ve Veri Yönetimi

Çağımızın gereği olarak hemen her türden bilgi ve veri temin edilmek, düzenlenmek ve depolanmak durumundadır. Ayrıca bilgilerin pek çoğu da insanlara özgü kayıt usulleri ile oluşturulmuştur. Farklı yüzü aşkın dilde döküman, kitap, çizim, el yazmasına ek olarak görsel ve sessel kayıtlar da hep bilgidir ve organize biçimde saklanması, gerektiğinde bulunup sunulması durumundadır. Bilgi ve veri yönetimi disiplini büyük boyutta bilgi ve verilerin bilgisayarlar üzerinde sağlıklı saklanmasının bilimini ve mühendisliğini yapar. Pek çok etkinliğin WEB üzerinden gerçekleştirilmesi ve WEB üzerindeki bilginin aslında hiç bir standardının bulunmamasından ötürü Bilgi yönetimi son on yılda çok büyük bir önem kazandı. WEB kullanıcılarının pek aşina oldukları arama motorlarının (google, yahoo, altavista vb) saniyede on binlerce sorguya cevap verebilmeleri hep bu alandaki gelişmelerle ilintilidir.

Önceleri veritabanı, daha sonraları veri tabanı yönetim sistemi adı ile bilinen alan, belirttiğimiz üzere, son yıllarda genişlemiş ve her türlü bilginin bilgisayarlarda düzenli bir biçimde tutulması ve bundan önemlisi zekice sorgulanabilmesi konuları ile yoğun biçimde ilgilenir olmuştur. Bu bağlamda, güncel araştırma konularına iki örnek veri madenciliği (data mining) ve Çokluortam verilerinin sorgulanması konularıdır.

Veri madenciliği eldeki büyük boyutlu verilerden harekt edip bunların arasındaki ilişkiyi, sebep sonuç bağlantılarını inceleme çabasıdır. Örneğin bir büyük alışveriş merkezinin yalnız kasa kayıt bilgilerinden (kredi kartı bilgisi+satılan mal bilgisi) hareket, edip hangi gelir/yaş/cinsiyet grubunun hangi günler neler aldığı, hangi ürün markalarını tercih ettiği, bir sonraki ziyaretlerindeki alış-veriş profilinin bir önceki ile ilintisi, reklamların/indirimlerin etkisi gibi tecimsel yaşam bakımından yaşamsal önemde bilgileri bulup çıkarmak, bunları istatistiksel kural dizgeleri haline getirmek veri madenciliğinin yapabildiklerindendir.

Çokluortam verilerinin sorgulanması bu dalın en ilginç, güncel araştırma konularındandır. Bir örnekle açıklamaya çalışalım, diyelim ki elinizde basın/yayın organlarında kullanılmış fotoğraf, film, ses ve yazılardan oluşmuş ve bilgisayara aktarılmış son 20 yılın arşiv bilgileri var. Ancak görüntü ve seslerin bilgisayar kayıtlarında içerikleri ile ilgili bir bilgi mevcut değil. Şimdi gereksinime dayalı olarak, sisteme vereceğimiz:

*2001-2004 yılları arasında, devrin İngiliz başbakanının bir ABD başkanı veya Dışişleri bakanı ile birlikte gözüktüğü, açıkhava toplantısı kayıtlarının hepsini bul.

komutu ile bu tür bilgilerin hepsinin aranıp bulunması işte bu araştırma dalının amaçladığıdır

Grafik, Görüntüleme ve Çokluortam

Bu alan belki PC kullanıcılarının (özellikle genç olanlarının) en çok tanış oldukları alandır. Popülerliği hep var olan 'Bilgisayar Oyunları' görsel arayüzlerinde bu disiplinin bilimsel ürünlerini çok yoğun biçimde kullanırlar. Bu alanda bilgisayarlar aracılığı ile yapay görüntülerin nasıl oluşturulacağı ve bunların gerçek dünyadan kaydedilmiş görüntü ve 3 boyutlu bilgiyle nasıl entegre edileceği ile uğraşılır.

Bu alanın temel ilgilerini şöyle sıralayabiliriz:

*Gerçel zamanda 3 Boyutlu görüntü oluşturma (Bilgisayar oyunlarındaki gibi)
*Bilgisayarla canladırma (animasyon), özel efektler (Çizgi filmlerin tümü; pek çok bilim-kurgu filmindeki gibi)
*Video yakalama ve oluşturma, sıkıştırma, ağ üzerinden yollama (streaming) (MPEG sıkıştırma, internet üzerinden TV vb. gibi)
*Görüntü işlemleme (editing) ve modelleme (CT, MR, Ulrasonografi gibi tıbbi görüntülemeler, Sonar, Radar görüntüleri)

Bu disiplin uygulamalı matematiğin pek çok dalından yararlanır. Ancak matematik disiplini bu tür problemlerin çözümlerinin çerçevesinin oluşturulmasında yardımcıdır. Bilgisayar bilimlerinin en önemli tasası ve uğraşı bir işi hızlı yapabilmektir. Dolayısı ile matematik çerçevede tanımlanmış soruna özellikle bilgisayar biliminin Algoritma ve Veri yapıları öğretisi aracılığı ile hızlı çözümler bulunulur. Aslı uğraş buradadır.

Ağ-eksenel Bilişim

Bilgisayarın çeşitli fiziksel yöntemlerle birbirleri ile iletişmeleri ile ilgilenir. Bu iletişimin

*hızı
*verinin gizliliği
*iletişimin güvenliği
*Bir bağlantı ağı yapısı içinde yolunu bulması

bu alanın bilim adamlarının tasasıdır. Bazen binlerce kilometre taşınan verinin istenmeyen unusrlarca dinlense bile çözümlenememesi gerekmektedir. Bunun için veri çoğunlukla şifrelenir. Şifrelemeyi ne kadar 'karmaşık' yaparsanız bunun kodlanması da çözümlenmesi de zor olacaktır, ancak bu da zamn kaybıdır. Bu alanın bilim adamları bu işin denge noktasında, hep daha güvenli şifrelemeler oluşturumaya çalırlar. Şüphesiz tek tasa verinin şifrelenmesine ilişkin değildir. Bir aktarımda milyarca 1 ve 0 bilgisinin aktarılması olağandır. Aktarma ortamındaki bir parazitten ötürü veya aynı anda başka bir iletişimin bu iletiye karışmasından ötürü verinin sağlıklı karşı tarafa aktarılamamış olması da olasılık dahilindedir. Bunun anında fark edilmesi, onarılması, onarılamıyor ise, bir usulle kaynaktan tekrar istenmesi hep bilimsel olarak çözülmesi gereken sorunlardır. Ayrıca, günümüz bilgisayar iletişim yapıları bir ağ biçimindedir. Bir noktadan bir noktaya bilgi iletmenin birden fazla yolunun olması çok doğal ve sağlıklıdır. Hangi yolun seçileceği, yolun o andaki bilgi trafiğinin yoğunluk durumuna göre ne yapılacağı, bir yolun devreden çıkması durumunda alternatif yol seçimi usulleri bu alanın uğraşlarındandır. Tahmin edileceği üzere İstatistik bilimi, Enformasyon teorisi ile çok yakından ilgili yöntemler kullanılır.

Akıllı Sistemler

Yapay Zeka (Artificial Intelligence) sistemleri olarak da bilinen bu konu Bilgisayar Biliminin içinde önemli yer tutan dev bir konu başlığıdır. Konu o denli önemlidir ki bilim adamları tanımı üzerine bile tam bir fikir birlikteliğinde değildirler. Belki en genel kabul gören tanım aşağıdakidir:

İnsan eylemlerinin zeki davranış gerektirenlerini yararlı bir biçimde yapacak bilgisayar yapılarının geliştirilmesi

Birkaç somut ilgi alanına örnek vermek gerekirse:

*Kaynak atması ve dağılımı gerektirecek kararların verilmesi (örneğin askeri, ticari, devinimsel)
Belirli bir alandaki her türlü soruya yanıt oluşturulması (sorunun sorulmasında kullanıcıya Doğal *Dil düzeyinde serbestlik tanınması)
*Konuşma tanıma
*İnsan diiler arasında tercüme
*Obje tanıma, yüz tanıma
*Dar bir uzmanlık alanında 'uzmanlık' (örneğin kan hastalıklarının teşhisi, motor onarımı, borsa alım/satımcılığı)

Yapay Zeka uğraşılarında, aslında felsefi denebilecek, iki farklı görüşün egemen olduğunu söyleyebiliriz: Güçlü ve Zayıf Yapay Zeka.Yukarıdaki tanım aslında Zayıf Yapay Zeka alanının tanımıdır. Zayıflık, yapay zekası olan bilgisayarın tümüyle zeki, otonom bir varlık olarak değil de, ancak fevkalade dar bir alanda zeka gösteren bir yapı olarak gerçekleşebileceği anlamındadır. Bu, ne yazık ki, şu anki bilgisayar mimarisi ve bilgi birikimimiz bakımından doğrudur. Güçlü yapay zeka şu anki imkan ve yetilerimizle daha onlarca yıl ufukta bile gözükmeyecektir.

Yapay Zeka uğraşının alt alanlarını belirtecek olursak:
*Durum Uzayı Aramaları (State space search)
*Otomotik Plan Oluşturma (Automated planning)
*Kombinatorik Arama (Combinatorial search)
*Uzman Sistemler (Expert systems)
*Doğal Dil İşlemleme (Natural Language Processing)
*Bilginin nasıl betimleneceği (Knowledge representation)
*Bilgi-tabanlı sistemler (Knowledge-based systems)
*Nitel nedenlendirme (Qualitative reasoning)
*Nöron Ağları (Neural network)
*Yapay Yaşam (Artificial life)
*Dağıtık Yapay Zeka (Distributed artificial intelligence)
*Evrimsel Hesap (Evolutıonary computing)
*Sürü Zekası (Swarm Intelligence)
*Yapay Varlık (Artificial Being)
*Özdavranışsal Yapay Zeka (Emergent AI)
*Bayezian Ağlar (Bayesian networks)
*Makina Öğrenmesi (Machine learning)
*Örüntü Tanıma (Pattern Recognition)
*Bulanık Mantık (Fuzzy Logic)
*Bulanık Elektronik (Fuzzy electronics)

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:

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.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.

Savunma sanayii:
ASELSAN, HAVELSAN, STM gibi bir grup, sayıları çok kısıtlı olan, devlet ortaklı şirket, iyi bir alıcı olan savunma sektörüne yazılım üretmektedirler. Ülkemizde çok az bulunan AR-GE içeren yazılım etkinliklerinin önemli bir kısımı da bu çatılar altında gerçekleşmektedir. Daha çok Ankarada konuşlanmış bu şirketlerdeki üçret politikası, ilk maddede belirtilmiş boyutta olmamakla birlikte yine de tatmin edicidir. Genellikle işe koşut Yüksek Lisans eğitimine izin verirler (uzun süreli ortandan kaybolmamanız koşulu ile). Zaman kaynağınızda bir sıkışma doğması durumunda, sizden beklenilen, iş yerine öncelik tanımanızdır. Yani bu eğitiminizin işi aksatmasına izin verilmez.

Ücretler genellikle 1000USD civarında başlar ancak zaman içinde çok fazla da tırmanmaz.

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:

***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?

sorusuna 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?

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 EE 374 Signal & Systems 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.