COMP 110 bilgisayar programlamada ilk derstir. Dersin amacı özellikle bilimsel hesaplama ve veri işleme üzerinde durularak, Matlab ile bilgisayar programlama ve algoritma geliştirme prensiplerinin tanıtılması. Başlıca konular, bilgisayar bilgileri ve düzenlenmesi, bileşenleri, işleticileri, ifadeleri, veri tipleri, diziler, matrisler; şartlı ve tekrarlı kontrol cümleleri; modüler programlama, yerleşik ve kullanıcı tanımlı fonksiyonlar; sözce (dizi) işlemeleri; metin ve ikili dosya işleme; yapılar; hata taramaları; verilerin çizimi ve görsel yapılar; grafik kullanıcı ara yüzleri.
Bu ders, Java programlama dili ile programlamaya giriş dersidir. Bu derste Java"nın yapısal programlama dili olma özelliği üzerinde durulmakta ve nesneye dayalı yönü üzerine ağırlık verilmemektedir. İkinci yönüne, sadece öğrencilerin standart Java kütüphanelerini genel işlemelerde kullanılabilecekleri kadar değinilmektedir. Bu dersi başarıyla tamamlayan öğrenciler algoritmik düşünce ve yapısal programlamada sağlam bir temel edinecek ve temel, genel hesaplamalı işlemleri kolaylıkla ve etkili bir şekilde uygulayabileceklerdir.
Bu ders, Java programlama dili ile programlamaya giriş dersidir. Bu derste Java"nın yapısal programlama dili olma özelliği üzerinde durulmakta ve nesneye dayalı yönü üzerine ağırlık verilmemektedir. İkinci yönüne, sadece öğrencilerin standart Java kütüphanelerini genel işlemelerde kullanılabilecekleri kadar değinilmektedir. Bu dersi başarıyla tamamlayan öğrenciler algoritmik düşünce ve yapısal programlamada sağlam bir temel edinecek ve temel, genel hesaplamalı işlemleri kolaylıkla ve etkili bir şekilde uygulayabileceklerdir.
Bilgisayarlar, programlama, algoritmalar ve programlama dillerine genel bakış. Python ile programlama: Veri tipleri, değişkenler, operatörler. Kontrol Bilgisayarlar, programlama, algoritmalar ve programlama dillerine genel bakış. Python ile programlama: Veri tipleri, değişkenler, operatörler. Denetim deyimleri: şartlar, döngüler, yineleme. Dize düzenleme. Fonksiyonlar, özyineleme, ayrışma ve soyutlama. Demet, liste, sözlükler. Örtüşme, değişebilirlik, klonlama. Dosyalar. Nesneye yönelik programlama, sınıflar, kalıtım. Test, hata ayıklama, istisna yönetimi, program verimliliği.
Dersin amacı nitelikli mühendislik öğrencilerine lisans eğitimlerinin bir parçası olarak kendilerinin eğitim vereceği bir deneyim kazandırmaktır. Dersin öğrencileri COMP130 Programlamaya Giriş dersinin “section”larında öğretmenlik yapmaktadırlar. Öğrenciler Java programlama dili kullanarak; fonksiyonel ayrıştırma, kontrol komutları, metotlar, özyineleme, dizgiler, dizilimler, soyut veri tipleri, kural dışı durumlar ve görsel kullanıcı ara yüzleri gibi modern programlamanın temel konularını öğretirler.
Temel yazılım kavramlarına giriş. Büyük yazılım sistemlerindeki karmaşıklığın kontrol edilmesi. İşlem ve veriler üzerine soyutlamalar. Birimsellik, nesneler ve durumlar. Makine modelleri, derleyiciler ve yorumlayıcılar. Haftalık yüklü yazılım ödevleri bu dersin önemli bir parçasıdır. Eşzamanlılık.
Programlama dilleri kavramları. Fonksiyonel programlama, soyut temsil, kapsülleme, tip sistemleri, değişken değeri, parametre geçirme, veri saklama, çalışma-zamanı depolama, bellek, yığıt, yığın, yorumlayıcılar. Yorumlayıcı gerçekleme. Veri temsilleri, kümeler, sözdizimi, anlam, davranış tanımlama ve gerçekleme.
Yazılım geliştirmede kullanılan metodların ve araçların gözden geçirilmesi. Nesneye yönelik tasarım ve açık yazılım mimarileri. Gereksinim analizi, tasarım, gerçekleştirim, sınama, bakım ve yönetim. Mühendislik uygulamaları.
Bilgisayarların donanım yapısı. Bilgisayarı oluşturan bileşenler ve işlevleri. Komut setleri, komut formatları, adres tipleri. Ardışık düzen yapısı ve hataları. Komut düzeyinde paralellik. Makina kodları. Veri yolları ve mikro-programlanmış kontrol. Bilgisayar aritmetiği. Bellek hiyerarşisi, ön bellek organizasyonu, sanal bellek. Paralel mimariler.
Mikro-işlemci yapı ve işleyiş temelleri; veriyolu organizasyonu; komut kümesi; adresleme yöntemleri; saat ve zamanlama analizleri; iş kesme altprogramları; bellek (RAM ve ROM); DMA, seri ve parallel giriş/çıkış; çevirici dili ile programlama.
Bu ders, mobil cihazlar uzerinde yazilim ortamlari ve dillerini kapsamaktadır. Mobil cihaz mimarisi ve yazılım geliştirme ortamları, MIDP Uygulama Modeli, Kullanıcı Arayüzü Kütüphaneleri, Yüksek Seviye Kullanıcı Arayüzü Bileşenleri, Alçak Seviye Kullanıcı Arayüzü Kütüphaneleri, MIDP veritabanı kütüphaneleri. Mobil cihaz işletim sistemi ortamları ve IOS, IPHONE derste işlenmektedir.
Yapay zeka kavramlarını tanıtma; etmen tabanlı düşünme; bilgili ve bilgisiz arama; kısıt sağlanma problemleri; bilgi temsili; mantık; makina öğrenmesi tanımı ve yapay zeka ile bağlantıları; belirsizliği temsil etme; markov karar süreçleri; görüntü işleme, robotik, dil ve oyunlardan örnekler
Bilgisayar sistemlerinde hesaba dayalı görsel algılama modelleri ve bunların gerçekleştirimi. İmge oluşumu; kenar, köşe ve sınır çıkarımı; bölütleme, eşleştirme, örüntü tanıma ve sınıflandırma teknikleri; üç boyutlu görme: izdüşüm geometrisi, kamera kalibrasyonu, stereo/silüet/tonlama bilgisinden şekil, model tabanlı 3B nesne tanıma; renk, doku, radyometri ve BDRF; devinim analizi.
Bilgisayar ağları ve ağ protokollerinin temelleri; uygulama, aktarım, ağ ve bağlantı katmanları odaklı İnternet protokol yığını; istemci/sunucu ve görevdeş modeller; yönlendirme algoritmaları; güvenilir veri aktarımı; akış ve tıkanıklık denetimi; protokol tasarımı ve analizi; ağ başarım ölçütleri; yazılım tanımlı ağlar; ağ programlama ve dağıtık uygulamalar.
Regresyon, sınıflandırma, öbekleme ve boyut azaltma yöntemleri ile yapay öğrenmeye giriş; gözetimli ve gözetimsiz modeller; doğrusal ve doğrusal olmayan modeller; parametrik ve parametrik olmayan modeller; modellerin birleştirilmesi; modellerin karşılaştırılması ve model seçimi.
Kriptolojik sistemlere giriş. Simetrik şifreleme, açık anahtar mucizesi, tek-yönlü fonksiyonlar, kıyım fonksiyonları, rastgele sayılar, sayısal imzalar, sıfır-bilgi ile kanıtlama, çağdaş kriptosistemler, çok-ortaklı hesaplama. Kriptoloji uygulamaları, internette alışveriş, BitTorrent görevdeş dosya paylaşım sistemi, bazı eski şifreleme algoritmalarını kırılması.
Öğrencilerin fen ve mühendislik bilgilerini bir bilgisayar mühendisliği projesinde uyguladıkları bir tasarım dersi. Gerçekçi koşullar ve kısıtlar altında bir grup projesinin geliştirilmesi, tasarımı, uygulaması ve yönetimi. İletişim, takım çalışması ve sunum becerilerine de ağırlık verilir.
Bilgisayar sistemlerinde hesaba dayalı görsel algılama modelleri ve bunların gerçekleştirimi. İmge oluşumu; kenar, köşe ve sınır çıkarımı; bölütleme, eşleştirme, örüntü tanıma ve sınıflandırma teknikleri; üç boyutlu görme: izdüşüm geometrisi, kamera kalibrasyonu, stereo/silüet/tonlama bilgisinden şekil, model tabanlı 3B nesne tanıma; renk, doku, radyometri ve BDRF; devinim analizi.
Kriptolojik sistemlere giriş. Simetrik şifreleme, açık anahtar mucizesi, tek-yönlü fonksiyonlar, kıyım fonksiyonları, rastgele sayılar, sayısal imzalar, sıfır-bilgi ile kanıtlama, çağdaş kriptosistemler, çok-ortaklı hesaplama. Kriptoloji uygulamaları, internette alışveriş, BitTorrent görevdeş dosya paylaşım sistemi, bazı eski şifreleme algoritmalarını kırılması.
Veri yapıları, algoritmalar ve ilgili hesaplama karmaşıklıkları.Sönüşür (asimtotik) karmaşıklık ölçütleri. Çizge gösterimleri ve algoritmaları. Çizgelerde dolaşma ve arama. Yönlü çizgeler ve topolojik sıra. Ormanlar ve ağaçlar. Minimum kapsayan ağaç. İki-kısımlı uydurma. Birleşim-aramalı veri yapıları. Yığıtlar. Kıyım algoritmaları. Amortize edilmiş karmaşıklık analizi. Eniyileme algoritmaları. Dinamik programlama. Fırsatçı algoritmalar. En kısa yol algoritmaları. Ağ akışı. Rasgele algoritmalar. Doğrusal programlamaya giriş. NP-completeness kavramına giriş. Karar-verme problemleri. Doğal NP-complete problemler ve yaklaşım algoritmaları. Matris gösterimleri ve algoritmaları.