Blog

  • Yapay Zeka

    Yapay Zeka

    Başka bir deyişle, yapay zekâ, bilgisayarların ve robotların insan gibi düşünmesini sağlamaktadır. Bu bilgisayarlar ve robotlar buluş sayesinde insanların gerçekleştirdiği görevleri yerine getirmeye başlamıştır. Karmaşık sorunları bile insan beyni gibi çözmeye çalışan bu bilgisayarlar ile zeka ve akıl gerektiren durumlar etkili bir şekilde çözülebilmektedir.

    Bu programlar, insan bilgisine ihtiyaç duymaktadır çünkü karmaşık verilerin kalıplarını tanıması, insan tarafından alınan kararları uygulaması ve insanların tecrübelerinden faydalanması gerekmektedir. Yapay Zekâ sistemi, var olan durumu gözlemleyerek ve bu gözlemi daha önceden belirlenen parametreler doğrultusunda işleyerek çalışmaktadır. Sorun çözmek adına çalışmakta ve istenilen durumlara tepki vermektedir.

    Yapay zeka

    Yapay Zeka Nasıl Çalışıyor

    Bu buluşu tanımanın en iyi yolu, onun yapabildiklerini, insan yetisi ve hareketleri ile karşılaştırmaktır. Bilinen en zeki canlı insandır ve yapay zeka onu taklit ederek çalışmaktadır. Bilgisayar bilimleri içerisinde geniş bir alana sahip olan bu yazılımı sıradan yazılımlardan ayıran özellik insan zekasını taklit etme özelliğidir.

    Günümüzde sadece gelişmiş bir yazılım özelliği taşıyan bu buluş üzerinde önemli geliştirme çalışmaları yapılmaktadır. Gelecekte, tıpkı insan beyni gibi doğrudan bir donanıma sahip altyapının sağlanması hedeflenmektedir.

    yapay zeka

    Yapay Zeka Neyi Taklit Ediyor

    İnsanlar, dil yardımı ile iletişim kurmaktadır. Yapay zekada ise bunun karşılığı konuşma tanıması yazılımıdır. Yapay zeka bunu istatiksel olarak yapmaktadır ve konuşma tanıma sistemi de istatiksel öğrenme çerçevesi altında gelişmektedir. İnsanların belirli bir dilde konuşup anlaşabilme yetisi ise bu yazılımda doğal dil işlemeye yanı NLP’ye girmektedir. Ancak insan sadece bilişsel yetiye sahip bir canlı değildir, dünyayı gözleriyle gören insanlar, gördüklerini beyinde işleyerek anlamlandırmaktadır. Görüleni anlamlandırma durumu bilgisayarlarda ve robotlarda bilgisayar görüşü alanına girmektedir. Son yıllarda bu buluşa yönelik çalışmalarda derin öğrenme tekniği geliştirilmiştir.

    Bu bilgisayar ve robotlar, nesne tanıma özelliği sayesinde bir fotoğraftaki grubun aile ya da arkadaş grubu olduğunu anlayabilmektedir. Hatta bu grup üyelerinin hangisinin kadın, hangisinin erkek ve hangisinin hayvan olduğunu tanımlayabilmektedir. Bu tanımlama ile sınırlı kalmayan teknoloji, bu kişilerin boyunu ve bedenini ölçmekte ve ne renk giyindiklerini tanımlayabilmektedir. Hatta bu grubun bulunduğu ortamın arkasında ne olduğunu da ( orman, deniz ) ayırt edebilmektedir.  Bu özellik geliştirilerek kullanıcıların hangi ürünleri inceledikleri ve aldıkları konusunda veri üretimine yardımcı olmaktadır.

    yapay zeka

    Yapay Zekanın Yetenekleri Nelerdir?

    Yapay zekanın yetenekleri arasında insan konuşmasını tanıma ve anlama, içerik sıralaması gerektiren ağ dağılımı, yüksek strateji gerektiren oyunları oynayabilme kabiliyeti, otonom otomobiller, karmaşık veri çözümleme, askeri simülasyon ve fotoğraf – video çözümleme bulunmaktadır. Bu teknoloji, nöral ağlar, ekonomi, istatistik, olasılık ve matematiksel optimizasyon araçlarını kullanmaktadır.

  • Neden Bilgisayar Mühendisliği

    Neden Bilgisayar Mühendisliği

    Bilgisayar, yaptığımız her şeyin bir parçası.

    Bilgisayarlı hesaplama ve bilgisayar teknolojileri, kullandığımız arabalardan izlediğimiz filmlere kadar hayatımızın neredeyse her alanında yer bulan parçalar haline geldi. Bilgisayar bilimlerinin farklı boyutlarını anlayabilmek, eğitimli bir 21.yüzyıl insanının sahip olması gereken temel özelliklerden biri. Hedefiniz ister bilim insanı olmak, ister popüler bir uygulama geliştirmek, ya da isterseniz yalnızca birisi “bilgisayar bir hata yaptı” dediğinde onu anlayabilmek olsun; bilgisayar bilimleri alanında eğitim almak size çok değerli bilgiler kazandıracaktır.

    Bilgisayar bilimleri dünya üzerinde pozitif yönde bir değişim yaratmanıza olanak sağlar.

    Bilgisayarlı sistemler bilim, mühendislik, işletme, eğlence sektörü ve eğitim gibi birçok alanda yeni buluşların ortaya çıkmasının arkasındaki temel güçlerden biridir. İnsan genom projesi, AIDS aşısı araştırmaları, çevre gözetim ve koruma uygulamaları gibi sayısız konuda bilgisayar destekli çalışmalar yürütülüyor. Eğer siz de dünyaya katkıda bulunmak istiyorsanız, bilgisayar bilimleri tam size göre.

    Bilgisayar bilimleri kazançlı kariyer imkanları sunar.

    İş hayatında en çok kazandıran ve en yüksek iş memnuniyeti sağlayan alanlardan biri bilgisayar bilimleri alanıdır. Yeni buluşlar ve bu yeni buluşların getirdiği alan içi yenilikler, sürekli dinamik bir şekilde ileriye doğru giden rekabetçi bir ortam doğmasına neden olmaktadır. Bu nedenle hem kariyer imkanları, hem de memnuniyet açısından bilgisayar bilimleri alanı her geçen gün yeni olasılıklar sunmaktadır.

    Nerede olursanız olun, iş imkanları kalıcıdır.

    2020 yılına kadar, bilim, teknoloji, mühendislik ve matematik konularındaki her iki işten birinin bilişim alanında olması bekleniyor. (Kaynak: http://pathways.acm.org) Bilgisayar dünyasında beklenen gelişmelerle küresel ölçekte tüm kuruluşların bu alanda birikim sahibi yeni yeteneklere bugünkünden daha da fazla ihtiyaç duyması kaçınılmaz olacak.

    Bilgisayar bilimleri alanında uzmanlaşmak, asıl kariyer tercihiniz ne olursa olsun size avantaj sağlar.

    Bilgisayar mühendisliği diplomasına sahip olmak, hangi alanda çalışacak olursanız olun, size geniş bir bilgi dağarcığı, problem çözme ve mantıksal düşünme yeteneği gibi avantajlar sağlar. Çok sayıda üniversite ve işveren bilgisayar bilimleri dersi ya da alanındaki başarıyı çok yönlülüğün göstergesi olarak görmektedir.

    Bilgisayar bilimleri yaratıcılık ve yenilikçilik olanakları verir.

    Yüksek kalitede bilgisayar çözümleri oluşturmak en üst seviyede yaratıcılık isteyen ve pek çok farklı alanda yaratıcı işleri destekleyen çözümler ortaya çıkarmayı gerektirir.

    Bu alan, sırada neyin olduğunu tahmin etmenin imkansız olduğun alanlardan biridir. Bu yüzden bilgisayar bilimleri alanında çalışmanın ve alana katkıda bulunmanın yolları sayısızdır, ve bu yapacağınız işi etkileyici ve heyecan verici kılar.

    Bilgisayar çok geniş bir insan topluluğuna, ilgi alanlarından bağımsız olarak, ödüllendirici ve ilgi çekici olanaklar sunar. Bilgisayar bilimleri, çözülmesi hayal gücü ve farkındalık gerektiren derin ve çok boyutlu problemleri çözebilme yeteneği gerektirir ve bu yeteneğin gelişiminde yardımcı olur.

    Bilgisayar alanı hem ekip çalışması, hem de bireysel çalışma seçeneklerine sahiptir.

    Bu alanda çoğu zaman farklı konularda yetenekleri olan insanların oluşturduğu bir ekibin parçası olmak gerekse de, bireysel kabiliyet ve hayal gücü oldukça önemli bir yere sahiptir.

  • Bilgisayar Mühendisliği Çalışma Alanları Nelerdir?

    Bilgisayar Mühendisliği Çalışma Alanları Nelerdir?

    Bu yazımda, Bir Bilgisayar Mühendisinin faaliyet gösterdiği alanlara değineceğiz. Bilgisayar Mühendisliği bölümünden mezun olmuş bir kişi hangi meslekleri yapar, hangi alanlarda çalışır kısaca özetleyeceğim. Hem Bilgisayar Mühendisliği mesleğine yeni başlamış arkadaşlar için bir yol haritası olmak hem de gerek eğitim hayatına devam eden ve üniversite sınavına hazırlanıp da bilgisayar mühendisliği okumak isteyen arkadaşlar için iş hayatında hangi alanda çalışmak istedikleri hakkında fikir verecektir.
     
    Bilgisayar Mühendisliği bilim dalı kendi alanıyla ilgili temel bilgileri size vererek sizi mezun eder. Hangi alanda kendinizi geliştirmek istediğiniz veya hangi alanda uzman olacağınız size bağlıdır. Çalışırken sizi mutlu edecek kısım hangisi ise mezun olduktan sonra sizin o alana yönelmeniz lazım. Bu seçim için ise kısa bilgilerle alanları size aşağıda bahsedeceğim.
     
     
    Adli Bilişim (Computer Forensics)
     
    Adli bilişim, elektromanyetik ve elektrooptik ortamlarda muhafaza edilen veya bu ortamlarca iletilen ses, görüntü, veri, bilgi veya bunların birleşiminden oluşan her türlü bilişim nesnesinin, mahkemede sayısal delil niteliği taşıyacak şekilde tanımlanması, elde edilmesi, saklanması, incelenmesi ve mahkemeye sunulması çalışmaları bütünüdür. Yani Maddi gerçeğe uygun olarak delil elde edilebilmesi için, olay yerinden toplanan materyallerin incelemesini yapacak ve bunun sonucu bir sonuç üretecek şekille adli bilişimde kullanılmak üzere üretilmiş programlardır. 


    Biyoenformatik (Bioinformatics)

    Aşağıdaki şekilde görüldüğü gibi Bilgisayar Bilimleri, İstatistik, Kimya, Biyoloji, Mühendislik, Biyokimya gibi birçok farklı disiplinin yer aldığı bir alandır. Tabi ki bütün bu bilim dalllarının hepsine hakim olmak mümkün değildir, o alanın uzmanları ile bilgisyar mühendisleri birlikte çalışırlar. Biyolojik bilgilerin saklanması için veritabanlarının oluşturulması, gerekli sorgulama ve analizlerin yapılabilmesi için gerekli altyapının oluşturuması sürecini kapsar. Nükleotit Dizi Veritabanlarının Kullanılması, Protein ve Özelleştirilmiş Sıra Veritabanlarının Kullanılması, DNA Dizisi ile Çalışma, Tek Protein Dizisi ile Çalışma, Dizi Veritabanları üzerinde benzerlik çalışmalari, İki Diziyi Karşılaştırma, Üç boyutlu Protein Yapıları ile Çalışma, RNA ile Çalışma, Pilogenetik Ağaçlar Oluşturma gibi konular sayılabilir. 

    Biyometri (Biometric)

    Biyometri insanlarım fiziksel ve davranışsal özelliklerini inceleyerek kimlik saptama üzerine yazılımların geliştirilmesi ve tanışma işlemi yapılması ile ilgilenen bilim dalıdır. Örneğin Ülkemizde kullanılmaya başlanan yeni nesil kimlik kartlarımızda biyometrik fotoğraflar bulunmaktadır. Bunun amacı ise devlet kurumlarının datalarında kişisel bilgilerin erişimin kolaylaştırılması ve suç oranlarının azaltılması düşünülerek yapılmıştır. Çalışma sistemi ise kart üzerinde bulunan çip kısmında kişisel bilgilerin depolanması ve biyometrik fotoğraf ile tanıma işlemi yapılarak bu bilgilere ulaşılıyor olmasıdır. Bu kartlar sayesinde iş yerlerinde personellerin eskisi gibi imza atmadan giriş yapmaları ve iş giriş çıkış takipleri de yapılabilmektedir. Yani kısacası eskiden bilim kurgu filmlerinde izlediğimiz birçok olay artık gerçek hayatta karşımıza çıkmaya başlamıştır.

    Bulanık Mantık (Fuzzy Logic)

     Azerbeycanlı bilim adamı Prof. Dr. Lütfi Zadeh tarafından geliştirilen bilim dalı. Klasik mantıkta, 1 ve 0 vardır, yani ya doğrudur(1) ya yanlış(0). Örneğin bir çamaşır ya kirlidir(0), ya temiz(1). Bulanık mantıkta ise 1 ve 0 arasındaki sayılar da vardır. Yani bir çamaşır 0.7 oranında temiz, 0.3 oranında kirli olabilir. Bu bilgiye göre hareket eden bulanık mantık kullanan çamaşır makinesi, ne kadar deterjan, ne kadar sıcak su kullanacağına ve çamaşırın temiz olması için ne kadar çalışması gerektiğine karar verebilir.

    Bulut Bilişim (Cloud Computing) 

    Bulut bilişim (İngilizce: Cloud computing), bilgisayarlar ve diğer cihazlar için, istendiği zaman kullanılabilen ve kullanıcılar arasında paylaşılan bilgisayar kaynakları sağlayan, internet tabanlı bilişim hizmetlerinin genel adıdır. Bulut bilişim bu yönüyle bir ürün değil, hizmettir; temel kaynaktaki yazılım ve bilgilerin paylaşımı sağlanarak, mevcut bilişim hizmetinin; bilgisayarlar ve diğer aygıtlardan elektrik dağıtıcılarına benzer bir biçimde bilişim ağı (tipik olarak İnternet’ten) üzerinden kullanılmasıdır.

    Büyük Data (Big Data)

    İnsanoğlunun ürettiği veri yıldan yıla artıyor. Günlük hayatta insanlar sosyal medyadaki paylaşımları ile bile byük hacimlerde veriler üretiyorlar. İşte bu büyük hacimde verinin saklanarak analiz edilmesi, sonuçlar türetilmesi meydana gelebilecek olaylar ve sonuçları altında daha fazla kontrol sağlamaktadır. Örneğin sosyal medya paylaşımlarından bir ülkedeki insanların hangi yemeklerden hoşlandıkları, hangi ülkeleri sevdikleri, siyasi eğilimleri vb. birçok bilgiye ulaşılabilir. Diğer bir örnek olarak bir marketin satış veritabanı incelenerek, o bölgedeki müşterilerin alış veriş sepeti eğilimleri analiz edilebilir. 

    Veriyi bilgiye dönüştürmek ve bu bilgiyi depolayarak analiz etmek, devletlerin, şirketlerin karar verme süreçlerini bile etkilemektedir. Bir veritabanı yönetim sisteminde ilişkisel veritabanı üzerinde raporlar alarak istenilen sonuçları üretmek mümkündür, fakat büyük veri ile analiz edilerek öngörülmeyen başka ilişkiler de görülebilir. Büyük veride 5V’den bahsedilir. 

    Canlandırma Animasyon (Animations)

    Animasyon, herhangi bir nesneye hareket verme anlamına gelir. Bilgisayar yardımıyla animasyon ve bilgisayar tarafından üretilmiş animasyon olmak üzere animasyon iki farklı kategoriye ayrılır. Film veya video şeklinde sunulabilir. Animasyonun arkasında yatan temel fikir, daha önce kaydedilmiş resimleri birbiri ardına belli bir hızda geçirerek, insan gözünün bunları sürekli bir harekrtmiş gibi yorumlamasıdır. Amimasyon ile ölmüş resimler canlandırılır. Animasyonun birçok uygulama alanı vardır, bilgisayar destekli tasarım, Eğelence, Reklam, Oyunlar, Eğitim, E-ticaret, Bilimsel Görselleştirme gibi. Örneğin bugün birçok TV kanalında gördüğümüz reklamlar animasyonu 3D-Max, Cinema 4D gibi programlar ile hazırlanmaktadır. Yine filmlerde gördüğümüz arabaların patlama, yanma sahneleri animasyonla yapılmaktadır.

    Dil İşleyiciler (Natural Language Processing)

    Doğal Dil İşleme, yaygın olarak NLP (Natural Language Processing) olarak bilinen yapay zekâ ve dilbilim alt kategorisidir. Türkçe, İngilizce, Almanca, Fransızca gibi doğal dillerin işlenmesi ve kullanılması amacı ile araştırma yapan bilim dalıdır.

    Gömülü Sistemler (Embedded Systems)

    Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

    Gömülü bir sistemin çekirdeğini, belirli bir sayıda görevi yerine getirmek için programlanan mikroişlemciler ya da mikrodenetleyiciler oluşturur. Kullanıcıların üzerinde istediği yazılımları çalıştırabildiği genel maksatlı bilgisayarlardan farklı olarak, gömülü sistemlerdeki yazılımlar yarı kalıcıdırlar ve firmware ismiyle anılırlar.

    Görüntü İşleme (Image Processing)

    İşleme , dijital form oluşturmak ve bazı gösterimler için geliştirilmiş, spesifik görüntü büyük ondan küçük bilgiler için kullanılmak için kullanılacak bir kişi. Bu, video karesi veya fotoğraf gibi girdinin görüntü olduğu ve çıktının da görüntü veya o görüntüyle ilişkili özellikler olabileceği bir tür sinyal dağıtımıdır. Bu yöntem girisi video kesiti ve ya fotoğraf gibi birdir. İstenilen ya da dikkate alınmaması gereken paraya gelir. Eğitim İşleme sistemi, sinyal işleme süreci( Signal Processing ) hedefini uygularken iki boyutlu sinyaller olarak ele alır.

    Teknolojik teknolojiyle çalışan teknoloji sistemlerini geliştiren teknolojiler arasında yer alır. Mühendislik ve bilimleri disiplinlerinde temel eğitim hakkında bilgi sahibi olmak.

    Görüntü işleme temel olarak üç onay içerir.
    · Görüntünün optik tarayıcı ile veya dijital fotoğraflarla ayarları.
    · Veri sıkıştırma, görüntü iyileştirme ve uydu fotoğrafları gibi insan gözü lekelenmelerini içeren analiz etme-kullanma.
    · Görüntün analiz etmekle ilgili olarak, hazır hale getirme.

    Karar Destek Sistemleri (Decision Support Systems)

    Karar Destek Sistemleri karar vericilere yardımcı olmak amacıyla veri, belge, bilgi ve iletişim teknolojilerini ve/veya
    modelleri kullanarak problemleri tanımlamayı ve çözmeyi, karar verme sürecini tamamlamak ve karar vermeyi sağlayan interaktif bilgisayar sistemleridir.

    Programlama Dilleri (Programming Languages)

    Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tektipleştirilmiş yoludur. Programlama dilleri, yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.

    Şu ana kadar 250’den fazla programlama dili yapılmıştır. Bunlardan bazıları Pascal, Basic, C, C#, C++, Java, JavaScript, Cobol, Perl, PHP, Python, Ada, Fortran, Delphi ve Swift’tir.

    Robotik (Robotics)

    Robot terimi, emek veya angarya anlamında olan Slavca “robota” kelimesinden gelir. İnsansı makineler için terim olarak kullanılan “robot” ilk olarak Çek yazar Karel Čapek’in (1890–1938) Rossums Universal Robots adlı oyununda ortaya çıktı. Bir bilim kurgu yazarı olan Isaac Asimov, robotlardan ilk olarak 1942’de, “Runaround” adlı kısa öyküsünde bahsetmiştir. Bununla birlikte, otomatik makineler üretme arzusu ve fikri çok daha eskilere dayanmaktadır. Leonardo Da Vinci, robot yapımı için eskizler ve planlar yapmıştır. İnsanlar, görevleri yerine getirebilen veya onlarla etkileşim kurabilen makineler yaratmaktan her zaman etkilenmişlerdir.

    Thomas Christaller’e göre robotlar, “insan kapasitesini genişletmeyi sağlayan, sensör motorlu makinelerdir”. Robotlar, mekatronik bileşenlerden, sensörlerden ve bilgisayar tabanlı kontrol işlevlerinden oluşurlar. Robotik ise robotların tasarımı, üretimi ve kullanımı ile ilgilenen çok disiplinli bir bilim dalıdır.

    Robotların birçok farklı durumda kullanılması amaçlansa da, günümüzde daha çok tehlikeli görevlerde, insanoğlunun yaşayamadığı uzay, sualtı, yüksek sıcaklık ve radyasyonlu ortamlarda kullanılmaktadır. Robotlar her biçimde yapılabilmektedir ve bazı robotlar insana benzer olarak yapılmaktadır. Bunun, robotların insanlar tarafından kabulünü kolaylaştıracağı düşünülmektedir.


    Sanal Gerçeklik (Virtual Reality)

    Sanal gerçeklik, teknoloji kullanılarak oluşturulan kurgular ile gerçek ve hayalin birleştirilmesidir. Sanal öğrenme ortamları, gelişen teknolojinin eğitim-öğretim ortamlarına dahil edilmesiyle birlikte öğrencilerin öğrenme deneyimlerini zenginleştirmek için tasarlanmış platformlardır. Sanal gerçeklik hayatımızda giyilebilir teknolojik ürünlerle karşımıza çıkmaktadır. Sanal gerçeklik gözlükleri vb. ürünlerle hayatımızda yer almaktadır.

    Sonlu Elemanlar Analizi (Finite Element Analysis)
     
    Sonlu Elemanlar Metodu adı verilen nümerik analiz tekniği kullanılarak fiziksel olguların simülasyonunun gerçekleştirilmesidir. Örneğin bir uçak yapılmadan önce bilgisayar ortamında tüm kanat yapısı, gövdesi, motoru, her bir parçası bilgisayar üzerinde tasarlanır ve analizler yapılır. Mühendisler böylelikle fiziksel prototiplerin sayısını azaltarak, tasarımdaki bileşenleri optimize edip, tecrübelenerek ürünleri daha hızlı geliştirmek için bu bilim dalını kullanır.
    Matematiği detaylı olarak bilmek, fiziksel olguları iyi incelemek, örneğin bir sıvının akışını, ısısal geçişi, dalga yayılımını, biyolojik hücrelerin büyümesini modelleyebilmek bu bilim dalı ile yapılan çalışmalara örnek verilebilir. Kısmı Diferansiyel Denklemler gibi sayısal kullanarak bu işlemlerin hepsi modellenebilir, bu işlemi de bilgisayarlara yaptırırız. Eskiden bu karmaşık hesapları elle yaparlardı, artık endüstri, bilgisayar teknolojisini kullanarak kolayca yapabiliyor.
     
    Veri Madenciliği (Data Mining) 
    Veri madenciliği, büyük ölçekli veriler arasından faydalı bilgiye ulaşma, bilgiyi madenleme işidir. Büyük veri yığınları içerisinden gelecekle ilgili tahminde bulunabilmemizi sağlayabilecek bağıntıların bilgisayar programı kullanarak aranması olarak da tanımlanabilir.
    Veritabanları (Database)
     
    veri tabanları yapılandırılmış bilgi veya verilerin depolandığı alanlardır. Bilgi artışıyla birlikte bilgisayarda bilgi depolama ve bilgiye erişim konularında yeni yöntemlere ihtiyaç duyulmuştur. Veri tabanları; büyük miktardaki bilgileri depolamada geleneksel yöntem olan ‘‘dosya-işlem sistemine’’ alternatif olarak geliştirilmiştir. Telefonlarımızdaki kişi rehberi günlük hayatımızda çok basit bir şekilde kullandığımız veri tabanı örneği olarak kabul edilebilir. Bunların dışında internet sitelerindeki üyelik sistemleri, akademik dergilerin ve üniversitelerin tez yönetim sistemleri de veri tabanı kullanımına örnektir. Veri tabanları sayesinde bilgilere ulaşır ve onları düzenleyebiliriz. Veri tabanları genellikle bireysel olarak satın alınamayacak kadar yüksek meblağlara sahip olmasına karşın; ücretsiz kullanıma açılan akademik veri tabanları da bulunmaktadır. Akademik veri tabanları aracılığıyla bazen bibliyografik bilgi bazen de tam metinlere erişmek mümkündür. Veri tabanları, veri tabanı yönetim sistemleri aracılığıyla oluşturulur ve yönetilir. Bu sistemlere; Microsoft Access, MySQL, IBM DB2, Informix, Interbase, Microsoft SQL Server, PostgreSQL, Oracle ve Sysbase örnek olarak verilebilir.

    Yapay Öğrenme (Artificial Learning) 

     
    Yapay öğrenme, bir bilgisayarın veya bilgisayar kontrolündeki bir robotun çeşitli faaliyetleri öğrenebilen canlılara benzer şekilde yerine getirme kabiliyeti ve insan öğrenmesine özgü olan, algılama, öğrenme, çoğul kavramları bağlama, düşünme, sorun çözme, iletişim kurma, çıkarım yapma ve karar verme gibi yüksek bilişsel fonksiyonları veya otonom davranışları sergilemesi beklenen yapay bir işletim sistemidir. İngilizce Artificial Intelligence kavramının kısaltması olan “AI” sözcüğü de bilişimde sıklıkla kullanılır.

    Yapay öğrenme” kavramının düşünce babası, “Makineler düşünebilir mi?” sorununu ortaya atarak makine öğrenmesini tartışmaya açan Alan Mathison Turing’dir. 1943 yılında II. Dünya Savaşı esnasında Kripto analizi yani mesajların deşifre edilmesi ihtiyacıyla üretilen cihazlar sayesinde de yapay öğrenme kavramı ortaya çıkmıştır.

    Yapay Zeka (Arificial Intelligence) 

    Yapay zeka, bilgisayarın veya bilgisayar kontrolündeki bir robotun çeşitli faaliyetleri zeki canlılara benzer şekilde yerine getirme kabiliyetidir. Yapay zekanın geçmişi 1940’lara kadar gidiyor. Turing machine’lerine kadar gidiyor. Yapay zeka çalışmaları genellikle insanın düşünme yöntemlerini analiz ederek, bunların benzeri yapay yönergeleri geliştirmesine yöneliktir. Yani bilgisayarın, insanlar tarafından gerçekleştirilen görevleri yerine getirmesini sağlar. Başka bir deyişle, Yapay zeka bilgisayarın insanlar gibi düşünmesini sağlar. Makinelerin karmaşık sorunları insana benzer şekilde çözmesine yardımcı olur. Zeka ve akıl gerektiren sorunlar artık bilgisayar yardımıyla etkili bir şekilde çözülebilir.

  • Mobil Programlama

    Mobil Programlama

    Mobil uygulama türleri nelerdir?

    Mobil uygulama geliştirmenin dört farklı yaklaşımı vardır.

    *Yerel Mobil Uygulamalar
    *Platformlar arası Yerel Mobil Uygulamalar
    *Hibrit (Karma) Mobil Uygulamalar
    *Aşamalı Web Uygulamaları

    Bu yaklaşımlar arası seçim yaparken, her yaklaşımın avantaj ve dezavantajları olduğunu hesaba katmak gerekir.  

    Geliştiriciler; Projeler için doğru geliştirme yaklaşımlarını seçerken, kullanıcı deneyimini, uygulama için gerekli bilgi işlem kaynaklarını, bütçeyi, zaman kriterlerini ve uygulamayı korumak için mevcut kaynakları göz önünde bulundururlar.

    1-Yerel Mobil Uygulamalar  

    Android ve IOS gibi cihazın işletim sisteminde doğrudan çalışabilir.  Platform sahibinin sağladığı programlama dilinde ve normlarında yazılır.

    Avantajları;

    En iyi çalışma zamanı performansı verir.
    Cihaz API’lerine doğrudan erişim sağlanır.

    Dezavantajları;

    Maliyeti Yüksek
    Her platform için birden fazla kod tabanı gerekir.

    2-Platformlar Arası Uygulamalar

    Cihazın işletim sisteminde çalışan yerel bir uygulamada derlenir. Farklı norm ve programlama dillerinde yazılabilir.

    Avantajları;

    Birden çok platform için tek kod tabanı yeterlidir.
    Uygulamayı oluşturmak ve korumak kolaydır.

    Dezavantajları;

    Yerel cihaz özellikleri için köprülere ve kütüphanelere ihtiyaç duyar.
    Köprüleme ihtiyacından dolayı performansı sınırlar.

    3-Karma Mobil Uygulamalar

    JavaScriptCSS ve HTML5 gibi standart web teknolojileriyle oluşturulur ve uygulama yükleme paketleri olarak yazılır. Yerel uygulamaların aksine, Apache Cordova aracılığıyla yerel cihaz API’leri için bir tarayıcı ve köprü sağlayan bir web kapsayıcısı üzerine çalışır.

    Avantajları;

    Web ve mobil uygulamalar arasında kod tabanı paylaşılabilir.
    Web geliştirme setleri kullanımını destekler.

    Dezavantajları;

    Yerel uygulamalara göre daha düşük performans gösterir.
    Yerel cihaz özellikleri için sınırlı desteğe sahiptir.

    4-Aşamalı Web Uygulamaları

    Geleneksel mobil uygulama geliştirmeye alternatif bir yaklaşım sunar. PWA’lar (ileri web uygulaması) uygulama benzeri bir kullanıcı deneyimi sağlamak için çevrimdışı çalışabilir. Arka plan işlemleri, cihaz ana ekranına bağlantı ekleme ve tarayıcı özelliğini kullanan web uygulamalarıdır.  

    Avantajları;

    Uygulama hem web hem mobil cihazda kullanılabilir.
    URL ile erişim imkanına sahiptir, kurulum gerektirmez.

    Dezavantajları;

    Yerel cihaz özellikleri için sınırlı desteğe sahiptir.
    Uygulama özellikleri kullanılan tarayıcıya bağlıdır.

    Mobil uygulama geliştirme için hangi programlama dili kullanılır?

    Son yıllarda inanılmaz bir artış gösteren mobil uygulama geliştirme endüstrisi, dünya çapında bir ilgi ve büyümeye imza attı. Hangi mobil uygulama geliştirme yaklaşımını seçmek gerektiği ve stratejiler göz önünde bulundurulduğunda, bir programlama dili seçme zamanı da gelmiştir. Bu programlama dilini seçerken bazı kriterleri de göz önünde bulundurmak gerekir.

    En sık kullanılan programlama dilleri ve hangi işleve göre seçmek gerektiğinden biraz bahsedelim.

    HTML5: Mobil cihaz için Web tabanlı bir uygulama geliştirmek için idealdir.
    Birçok farklı tarayıcı tarafından farklı şekillerde desteklenir ve uygun maliyetlidir.

    Objective-CApple tarafından seçilen Objective-C, sağlam ve ölçeklenebilir uygulamalar için idealdir. Kullanımı kolay ve C++ ile birlikte kullanılabilir. IOS uygulamaları için birincil programlama dilidir ve bu yüzden tüm IOS ve MacOS çerçeveleri ile entegre edilmiştir.

    SwiftApple Inc. Tarafından IOS ve Linux için, Apple ekosistemine giren en yeni programlama dilidir. Objective-C ile birlikte çalışabilir, basitleştirilmiş bir sürümü gibidir. IOS geliştirme için kullanılan birincil dildir.

    C++: Android ve Windows için en uygun ve sağlam programlama dilidir. Temel olarak düşük seviyeli programlama da tercih edilir. Finans, üretim ve bankacılığa kadar sektörlerde kullanılan her zaman talebi olan bir dildir. Tarihi akıllı telefonların öncesine dayanan ve güçlü bir programlama dili olan C++; mobil uygulamaların mevcut her platformlarında her amaç için geliştirilmesine olanak tanır. Platformlar arası mobil uygulama geliştirmede iyi performans göstermektedir.

    C#C Sharp olarak bilinen bu dil Windows Phone uygulama geliştirmeleri için sevilen ve bu uygulamalar için mükemmel bir programlama dilidir. Microsoft tarafından geliştirilmiştir ve genel amaçlı kullanılabilir. Güvenli ve basit bir dildir ve .NET çerçevesine erişim sağlayabilir.  Visual Studio, AutoCad, Office 365 vb. C# dili ile oluşturulmuş yazılımlardan bazılarıdır.

    JavaAndroid uygulama geliştirme söz konusu olduğunda en çok tercih edilen dillerden biridir çünkü, Android İşletim Sistemi Java ile yazılmıştır.  Sun Microsystems’de geliştirilmiş olan nesne tabanlı bir programlama dilidir. Java, tarayıcı penceresi veya sanal bir makinede olmak üzere iki farklı şekilde çalıştırılabilir.
    Bu esneklik, kodun yeniden yazılması veya güncellenmesi söz konusu olduğunda avantajlar yaratır. Özellikle platformlar arası mobil uygulama geliştirme söz konusu olduğunda tercih edilir. Entegrasyonu kolaylaştıran API’leri destekler ve yüzlerce açık kaynak kütüphanesi bulunur.

    PythonWeb ve uygulama geliştirme, sayısal verileri analiz ve hesaplama, masaüstü GUI oluşturma ve yazılım geliştirme için yaygın kullanılan üst düzey ve popüler programlama dilidir. WindowsMacUnix ve Linux da çalışan, etkileşimli ve öğrenmesi kolay olan Python dilinde geliştirilen uygulama örneklerinden bazıları; Instagram, Spotify, Youtube, BitTorrent vb.

    BuildFire.js: Yaygın ticari kullanımların %70’inin kapsayan eklentilere sahip olan bu dil, BuildFire SDK ve JavaScript’ten yararlanarak hızlı mobil uygulama geliştirmeye olanak tanır.
    Her şeyi sıfırdan oluşturmak yerine, müşterinin istekleri üzerine belirli işlevleri geliştirme gerektirir.

    PHP: (Hypertext Preprocessor) Web tabanlı, genel ve çok geniş kullanımlı, içerisine HTML gömülebilen betik ve programlama dilidir.  Öncelikli olarak dinamik web siteleri oluşturmak için kullanılır. Sunucu uyumlu ve platformdan bağımsızdır.

    Yazar: Başak Akbaş

  • Veri Tabanı Modelleme

    Veri Tabanı Modelleme

    Veri Modelleme

    • Veri modeli; bir bilgi sisteminde kullanılacak verilerin farklı seviyelerde (kavramsal, mantıksal ve fiziksel) tanımlanmasına imkân sağlayan modeldir.
    • Veri modelleme dört aşamada meydana gelir:

    –Gereksinimlerin belirlenmesi

    –Kavramsal model

    –Mantıksal (ilişkisel model)

    –Fiziksel model

    Gereksinimlerin Belirlenmesi

    • Gereksinim belirleme çalışmasının amacı;

    –Geliştirilecek sistemin fonksiyonlarını ortaya çıkarmak,

    –Sistemde tutulması gereken verileri belirlemek,

    –Veriler arasındaki bağlantıları tanımlamak ve

    –İhtiyaç duyulan kullanıcı işlemlerinin ortaya çıkarılmasıdır.

    • Gereksinim belirleme sonrasında;

    –İşleve dayalı gereksinimler ve

    –Veriye dayalı gereksinimler ortaya çıkarılır.

    Veriye Dayalı Gereksinimler

    • Nitelikler
    • Nitelik grupları (varlıklar)
    • Verilere ait kurallar (kısıtlar)
    • Veri işlemleri belirlenir.

    Kavramsal Model

    • Gereksinimler toplanıp analiz edildikten sonra;

    –Birbiriyle ilişkili veriler varlıklar şeklinde gruplanır ve

    –Varlıklar arasında bağıntılar kurulur

    • Bu çalışmalar grafiksel olarak varlık ilişki diyagramları (entity relationship diagrams) ile gösterilir.
    • Kavramsal model hem kullanıcılara hem de yazılım geliştiricilere hitap eden ortak bir modeldir.

    Varlık İlişki Modeli

    • Varlık-İlişki (ER) Modeli, gerçek dünya varlıkları ve onlar arasındaki ilişkilere dayalı olarak sunulur.
    • ER Modeli; varlık, ilişki, nitelikler ve kısıtlamalar gibi kavramlarla modellemeye imkan sağlar.
    • ER Modeli bir veri tabanının kavramsal tasarımı için kullanılır.
    • ER Modelinin temelinde şunlar bulunur –

    –Varlıklar ve nitelikleri,

    –Varlıklar arasındaki ilişkiler.

    veri modelleme

    Mantıksal Model (ilişkisel model)

    • Kavramsal modelin ilişkisel modele dönüşümünü mantıksal model sağlar.
    • Mantıksal model çalışması sonunda;

    –Veri tabanında hangi tabloların bulunacağı,

    –Bu tablolarda hangi bilgilerin tutulacağı ve

    –Tablolar arası bağıntıların neler olacağı belirlenir.  (ilişki derecesi ve türü)

    İlişkisel Model

    • DBMS’deki en popüler veri modeli, İlişkisel Modeldir. Diğerlerinden daha bilimsel bir modeldir. Bu model, birinci dereceden yüklem mantığına dayanır ve bir tabloyu bir n-ary ilişkisi olarak tanımlar.
    veri modelleme
    • Bu modelin ana özellikleri –

    –Veriler ilişki adı verilen tablolarda saklanır.

    –İlişkiler normalleştirilebilir.

    –Normalize ilişkilerde, kaydedilen değerler atomik değerlerdir.

    –Bir ilişkideki her satır benzersiz bir değer içerir.

    –Bir ilişkideki her sütun aynı türdeki değerleri içerir.

    Fiziksel Model

    • Mantıksal modelde ayrıntıları ortaya çıkan tabloların SQL imkanları ile bilgisayar ortamında oluşturulmasıdır.
    • Verilerin nasıl oluşturulacağı ve nasıl indeksleneceği ile ilgilidir.
    • Fiziksel model verilerin bilgisayar ortamında nasıl organize edildiğine dair bilgiler de içerir.

    OLTP (OnLine Transaction Processing)

    • Veritabanı sistemleri genellikle çevrimiçi hareket işleme (OLTP) olanaklarına uygun olarak çalışan sistemlerdir.
    • Veri ekleme, düzeltme ve veri silme gibi her an değişim gösteren bir yapıda çalışan veritabanları OLTP veritabanları olarak bilinir.

    Veri Modeli Operasyonları

    • Veri modeli operasyonları veritabanından veri çekme ve veriler üzerinde güncellemeler yapmayı sağlayan işlemlerdir.
    • Bu işlemler;

    –yeni veri girişi (INSERT),

    –var olan verinin güncellenmesi (UPDATE),

    –verinin silinmesi (DELETE) ve

    –verinin sorgulanması (RETRIEVE) olarak bilinir.

    Veritabanı Anlık Durumu

    • Veri tabanında herhangi bir anda tablolarda bulunan verilere veri tabanı anlık durumu adı verilir.
    • Veri tabanı yedeklemesi yapıldığında elde edilen Database Instant sadece yedeklemenin yapıldığı ana aittir.

    Tablo

    • İlişkisel veri tabanlarında aynı veri yapısına sahip verilerin saklandığı yapılara tablo (table) adı verilir.
    • Tablolar ilişkisel veri tabanlarında ham veri tutarlar.

    Kayıt ve Nitelik

    • Tablolarda yer alan her bir satıra kayıt (record, row, tuple) denir.
    • Bir kaydı tanımlayan her bir veri alanına nitelik adı verilir. Nitelik değerleri sütunlarda yer alır. Niteliklerin değer aldığı veri havuzlarına domain adı verilir.

    Anahtar Nitelik ve Türleri

    • Anahtar nitelik: Bir tabloda bir kaydı diğerlerinden eşsiz olarak ayıran niteliğe anahtar nitelik adı verilir.

    Birleşik anahtar nitelik: Bir tabloda kayıtları birbirinden ayırmada tek bir nitelik yeterli gelmediğinde birden fazla niteliği anahtar olarak kullanmak gerekir. Birden fazla nitelikten meydana gelen anahtara birleşik anahtar nitelik adı verilir.

    Süper anahtar nitelik: Bir tabloya ait kayıtların tek olarak tanımlanmasını sağlayan her bir nitelik süper anahtar olarak bilinir. Bir tabloda kimlik numarası da anahtar olabilir, öğrenci numarası da. Bu ikisine de süper anahtar adını vereceğiz.

    Aday anahtar nitelik: Bir tabloda anahtar olabilecek her niteliğe aday anahtar nitelik adı verilir.

    Birincil anahtar nitelik: Anahtar niteliklerden seçileni birincil anahtar nitelik adı verilir.

    Yabancı anahtar nitelik: İki tablo ilişkilendirildiğinde ana tablodan diğer tabloya bağ kurmada kullanılan niteliğe yabancı anahtar nitelik adı verilir. Yabancı anahtar nitelik yabancı tablonun birincil anahtarı olarak da görülebilir.

    Veri Tabanı Şeması

    • Bir veri tabanı şeması, tüm veri tabanının mantıksal görünümünü temsil eden iskelet yapısıdır.

    –Verilerin nasıl organize edildiğini ve aralarındaki ilişkileri tanımlar. Verilere uygulanacak tüm kısıtlamaları formüle eder.

    • Bir veri tabanı şeması varlıklarını ve aralarındaki ilişkiyi tanımlar. Şema diyagramları ile betimlenen veri tabanının tanımlayıcı bir detayını içerir.
    veri modelleme
    • Bir veri tabanı şeması, genel olarak iki kategoriye ayrılabilir –
    • Fiziksel Veri Tabanı Şeması – Bu şema, verilerin gerçek depolanmasıyla ve dosyalar, indeksler vb. depolama biçimleriyle ilgilidir. Verilerin ikincil bir depolama biriminde nasıl depolanacağını tanımlar.
    • Mantıksal Veri tabanı Şeması – Bu şema, saklanan verilere uygulanması gereken tüm mantıksal kısıtlamaları tanımlar. Tabloları, görünümleri ve bütünlük kısıtlarını içerir.