"Enter"a basıp içeriğe geçin

Bilgisayar Mühendisliği ve Yazılımcılık

Bilgisayar mühendisliği ve yazılımcılık son yılların en popüler meslek grupları haline geldi. Tüm hayatımızın teknolojik aletlerle çevrili olduğu bir zamanda yaşadığımızı düşünürsek  böyle olması  gayet doğal. Ben de dahil, dünyadaki pek çok genç  bu sektörde kendimize iyi bir yer edinmek istiyoruz. Ve bunun sonucunda üniversitelerdeki ilgili bölümlerde buluyoruz kendimizi. 

Bu kavramları biraz daha açalım

Yazılımcılık

Yazılım sözlük tabiri ile her türlü elektronik aygıtın donanımının o aygıtın işlevine uygun şekilde çalışmasını sağlayan ve bu donanımlar tarafından anlaşılabilen sözler dizisidir diyebiliriz. Bu durumda yazılımcı da yazılımları hazırlayan kişidir. Yani yazılımcı, aklınıza gelebilecek her türlü teknolojik alete hayat veren kişidir.

Bilgisayar Mühendisliği

Bilgisayar mühendisliğinin ne olduğunu anlayabilmek için, öncelikle mühendisliğin ne olduğunu bilmek gerekir. Mühendislik, teorik bilgiyi pratiğe dökme ve alanındaki sorunları  en az maliyetle en iyi şekilde çözebilmektir. Arthur Mellen Wellington’ın tabiri ile mühendislik

“Beceriksiz birinin iki dolara kötü yaptığı bir şeyi bir dolara iyi yapma sanatıdır” 


Bu açıdan bakarsak, bilgisayar mühendisi de içinde bilgisayar içeren her türlü şeyi mükemmelleştirmeye çalışan kişidir. Bilgisayar deyince aklımıza sadece kişisel bilgisayarlar gelmemelidir. Veri işleme yeteneği olan her elektronik alet bilgisayar olarak kabul edilebilir. Yani özünde hesap makinesi bile bir bilgisayardır. Günümüzde her teknolojik aletin içerisinde bilgisayar diyebileceğimiz donanımlar olduğunu düşünürsek, bilgisayar mühendisliğinin kapsamını siz hayal edin.

Bu bölüm bilgisayar mühendisliği olarak bilinse de, dünya genelinde “Computer Science” yani bilgisayar bilimleri olarak geçer. Yazılımcılık ile arasındaki farkın çıktığı yer de burasıdır. Yazılımcılık, adı üstünde, sadece yazılım kısmı ile ilgilenir. Bilgisayar bilimlerinin kapsamı ise çok daha geniştir.

Bilgisayar bilimlerini dallara ayırmak çok zordur. Çünkü her şey birbiri ile bağlantılıdır. Ancak temelde 5 dala ayırmak bence mümkün.

Bunlar:

  • Yazılım
  • Donanım
  • Makine Öğrenmesi
  • Ağ teknolojileri ve Güvenlik
  • Teorik Uygulamalar 

Yazılımın ne olduğundan zaten bahsettim. Diğer dallarla ilgili detaya girelim.


Donanım

Bilgisayarın fiziksel parçalarına donanım denir. Elektronik mühendisleri gibi bilgisayar mühendisleri de donanımla ilgilenebilir. Ancak düşünülenin aksine, bilgisayar mühendisinin görevi bilgisayar donanımı üretmek değildir. Bilgisayar mühendisleri, donanımın mantıksal (logical) kısmı ile ilgilenir. Yani yine donanım parçalarının sağlıklı çalışabilmesini sağlayan yazılımlarla uğraşır. Analog kısımlar genelde elektronik mühendisliğinin uğraş alanıdır. Yine de, elektronik mühendisliği kadar olmasa da bilgisayar mühendisliğinde de donanımla alakalı dersler mevcut. Eğer donanım alanına bir ilginiz varsa, seçmeli dersler ve ardından kendi uğraşlarınızla da bu alanda kendinizi geliştirebilirsiniz. Ayrıca bilgisayar bilimlerinin kapsamına giren IoT, gömülü sistemler ve mikroişlemciler gibi konular da donanım ile bağlantılıdır.

Makine Öğrenmesi

Makine öğrenmesi, belki de son yılların en trend alanlarından biridir. Makine öğrenmesi sayesinde, biz her şeyini tanımlamadan, sadece programa ihtiyaç duyduğu veri yığınını vererek bir insan gibi öğrenmesini sağlayabiliriz. Makine öğrenmesi kavramı da zaten insanın öğrenme süreçleri gözlenerek oluşturulmuştur. Programın deyim yerindeyse “hafızası”, başlangıçta boş bir levha gibidir. Gelen verileri (veri setlerini) işleyip, inceleyip kategorize ettikçe bu boş levha zamanla dolar. Ve daha önce öğrendiği bir şeyi tekrar gördüğünde tanımaya başlar. Henüz bilim kurgu filmlerindeki gibi, insan zekasından daha üstün yapay zekalar yok. Ancak sürekli ve çok büyük bir ivmeyle ilerleyen bir dal olduğu için, geleceğin ne getireceğini kim bilebilir 😀

Ağ Teknolojileri ve Güvenlik

Yüzyılın en büyük icadının internet olduğunu hiçbirimiz inkar edemeyiz sanırım. Her her saniye kullandığımız, yaşamımızın 4. temel ihtiyacı haline gelen internet aslında yaşayan devasa bir organizma gibidir. Dünyanın her yerindeki bilgisayarları ve dolaylı yoldan bizi birbirine bağlayan bu organizmanın da doğal olarak ihtiyaçları vardır ve bunları gidermek de tabi ki bilgisayar bilimlerinin alanına girer. Bu devasa ekosistemde her şeyin hatasız işlemesi gerekir. Bunun için bir çok donanımlar, protokoller ve yazılımlar üretilmiştir.

Ancak doğanın kanunu olarak, ağlar da saldırılara açıktır. Kapsadığı alan düşünüldüğünde, bilgisayar ağlarına yapılan saldırıların ne kadar büyük hasarlara yol açabileceği tahmin bile edilemez. Birkaç bin dolarlık donanım ve biraz hayal gücü ile, milyonlarca dolarlık zararların verilebildiği bir zamanda yaşıyoruz. 

Olayın ciddiyetini yeterince anlatabildiğimi düşünüyorum 😀 Sunucu yönetimi, ağ güvenliğinin sağlanması, protokollerin yazımı ve işleyişi gibi konularla ilgilenmek istiyorsanız bu alanda ilerleyebilirsiniz.

Teorik Uygulamalar

Bilgisayar bilimlerinin salt matematiksel kısımlarını kapsayan soyut alanıdır. Matematiksel ve mantıksal kısımlar üzerinde düşünerek bilgisayarlara çalışma metodları sağlarlar.
Hesaplama-kodlama-programlama teorileri, veri yapıları, algoritmalar, biçimsel yöntemler gibi konular bilgisayar bilimlerinin teorik kısmın oluşturur.  

 

Bunların hepsini bilmek zorunda mıyım?

İşin mutfağına giren kişiler fark edecektir ki, aslında bu dalların birbirinden ayrı olması kesinlikle mümkün değildir. Yazılım olmadan donanımlar çalışamaz. Fiziksel bir form olmadan bilgisayarlardan da bahsedilemez. Makine öğrenmesinin temeli teorik uygulamalardan çıkar. Teorik uygulamalar yazılımın gelişmesine de yön verir. Makine öğrenmesi ve Ağ sistemlerinde hem donanımlar hem de yazılımlar kullanılır. 

Birbiriyle bu kadar iç içe olan bir sektörde, “ben bir alana yöneleyim, diğerlerini bilmesem de olur” düşüncesi, bence çok büyük bir yanılgıdır.

Bir hocamla sohbet ederken, iyi mühendisin tanımını sorduğumuzda şunu söylemişti: 
“İyi mühendis, her şey hakkında bir şeyler bilen, bir şey hakkında da her şeyi bilen kişidir.

Yani her konuda az çok bilgi sahibi olur, bir yandan da ilgi alanımızı seçip o yönde gidebildiğimiz kadar gidersek gerçek başarıya ulaşabiliriz. 


 
Başlıca konuları elimden geldiğince açıkladım. Ama henüz öğrenci olduğumdan daha detaya girmenin haddim olduğunu düşünmüyorum 😀  Belki ilerleyen zamanlarda bu konulardan daha detaylı şekilde bahsederim. Benim söyleyeceklerim daha çok, hocalarımdan ve gittiğim konferanslardan  duyduğum kadarıyla, öğrencilik sırasında neler yapabileceğimiz ve bu sitenin size hangi konularda yardım edebileceği ile alakalı.
 

Öğrenci iken ne yapmalı?

İyi bir yazılımcı veya bilgisayar mühendisi olabilmek için okul dersleri elbette ki önemlidir. Ama tek başına yetmez. Geleceğin bilgisayar mühendisleri, yazılımcıları olarak hayatımız boyunca öğrenmemiz gerektiğinin bilincinde olmalıyız. Yine bir hocamın dediği gibi, “Okul bize öğrenmeyi öğretir”. Üniversitede geçirdiğimiz süre boyunca öğreneceklerimiz bize temel oluşturabilir. Ama sadece temeli olan bir bina işe yaramaz. Bu temelin üzerine geleceğimizi inşa etmek bizim elimizde. Bu da tabi ki sürekli kendimizi geliştirmek ve en yeni teknolojileri öğrenmekle mümkündür. 

Bu site sayesinde hem  bölüm derslerinde gördüklerimi ve öğrendiklerimi, hem de kendimi geliştirmek amacıyla araştırdığım diğer konuları  sizlerle paylaşmak istedim. Teknoloji kendini sürekli yeniler. Bu  yüzden biz de kendimizi sürekli yenilemeliyiz.
Sizler için bu konuları hazırlarken de bir yan  kendi bilgilerimi tazelemiş ve güçlendirmiş oluyorum. Benim gibi bilgisayar mühendisliği-programcılığı okuyan veya kendini geliştirmek isteyen arkadaşlarımın kullanabilecekleri bir kaynak oluşturabilirsem ne mutlu bana.

 

Üstümde emeği geçen tüm hocalarıma teşekkür ederim. Ama özellikle, bana mühendisliğin ne olduğunu öğreten, bizi gerçek dünyaya elinden geldiğince hazırlamaya çalışan Ulaş Vural hocama ve Bilgisayar Mühendisliği Bölüm Başkanı’mız Ayşe Betül Oktay hocama ayriyeten bir teşekkürü borç bilirim.  

Ayrıca bahsetmeden geçersem ayıp olur. Şimdiye kadar bana çok fazla yardımı dokunan Şadi Evren Şeker hocamın youtube kanalı kesinlikle öğrencilik hayatınızda kullanabileceğiniz çok güzel bir kaynak.

 

Site ile ilgili bilgilendirmeler

Şuanda sitede sadece nesne tabanlı programlama ve Linux sistem yönetimi bölümleri var. Yakın zamanda temel ağ bilgisi, Java ve Bash Script bölümlerini eklemeyi düşünüyorum. Bu listeye zamanla eklemeler yapabilirim.

Sitenin bazı bölümlerinde yabancı sitelerdeki kaynakları kullandım. Bu kaynakları yazının en altında kaynakça kısmında bulabilir, ve orijinal yerinden okuyabilirsiniz. Ben sadece diğer siteler, kitaplar ve hocalarımdan öğrendiklerimi elimden geldiğince size aktarmaya çalıştım.

Bazı konularda yapılabilecek hataları da yazıya ekledim ve yanlarına hatalı kullanım olduklarını belirttim. Mesela nesne tabanlı programlamada bazı  kodların o şekilde kullanamayacağını ve kendi derleyicinize kopyalarken bu satırları silmeniz gerektiğini söyledim. Yani yorum satırlarına dikkat etmeniz önemli 😀

Bunlar dışında tavsiyelerinizi, şikayetlerinizi yada eksik-yanlış gördüğünüz yerleri yorum bölümüne yazarak veya e-posta adresimden bana ulaşarak iletebilirsiniz.
Gizlilik politikama bu linkten ulaşabilirsiniz. Ayrıca “hakkımda” sayfasına da bakmayı unutma 😀

 

Sayfada kullandığım görsellerinin kaynakları : https://fullhartsoftware.com/wp-content/uploads/2019/09/Application-Software.jpg
https://www.bluechip.co.uk/sites/default/files/styles/service_main/public/Software%20Photo.png?itok=xLk0sOvn