BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERSLERİ

BG-121 PROGRAMLAMA (2+2+0) 3

Üst seviye programlama dili C kullanılarak problem çözümü ve yapısal programlama tekniklerinin öğretilmesi, öğrencilerin araştırma yollarını kavramalarına, pozitif ve bilimsel bir görüş ve düşünüşe sahip olmalarına imkan ve zemin hazırlamak, olayları derinliğine ve detaylı düşünebilmeleri için yardımcı olmak amaçlanmaktadır. Bu derste programlamanın temelleri, temel konseptleri, fonksiyon tanımlaması, dosya işlemleri, dizinler, ve arama / sıralama algoritmaları işlenmektedir. Bilgisayar ve çevre donanımları hakkında bilgi vermek, programlama kavramları, çok amaçlı, üst seviye programlama dili olan C kullanılarak problem çözümü ve yapısal programlama tekniklerini öğretmek. Öğrencilere, bir programlama dili kullanarak problem çözme teknikleri öğretmek ve öğrendikleri teorik bilgileri kullanarak uygulama programları yazma becerisi kazandırmaktır.

BG-211 İLERİ PROGRAMLAMA (2+0+2) 3

C veya başka bir programlama dilinde tecrübeli olan öğrenciler için giriş seviyesinde bir C++ programlama dili dersidir. C++ diline ait konular hem uygulama hem de teorik açıdan ayrıntılarıyla ele alınmaktadır. İşlenen konular temel olarak yapısal programlama teknikleri, nesne tabanlı programlama, nesneye yönelik programlama ve soysal (generic) programlama teknikleridir. Derste once C dilinin sahip olduğu yapısal programlamaya ilişkin hususlar anlatılmakta ve C++ dilinin bu alanda C diline göre sahip olduğu ekstra özellikler anlatılmaktadır. Ardından C++ dilinin sahip olduğu abstract data types, classes, objects, encapsulation, information hiding, member access control, constructors, destructors, software reusability, constant objects and member functions, composition, friendship, dynamic memory allocation, static members, and this pointer gibi nesne tabanlı programlamaya ilişkin özellikleri anlatılmaktadır. Derste ayrıca, inheritance, virtual functions, dynamic binding, polymorphism, abstract-concrete classes, stream I/O, templates and exception handling gibi nesneye yönelik programlama kavramlarının C++ dilindeki kullanışları açıklanmakta ve bu kavramlar ayrıntılı olarak anlatılmaktadır.

BG-212 AYRIK MATEMATİK (1+1+0) 1,5

Bilgisayar matematiği, ayrık matematiğin tanımı, kümeler, algoritmalar, tamsayılar, matrisler, ispat yöntemleri, tümevarım, özyineleme, doğruluk analizi, sayma yöntemleri, güvercin yuvası prensibi, permütasyon, kombinasyon, sayma yöntemleri, olasılık teorisi, ayrık olasılık, gelişmiş sayma teknikleri, rekürans bağıntısı, bağıntılar, bağıntılar ve özellikleri, bağıntıların gösterimi, çizgeler, çizge çeşitleri, çizge bağlılığı, çizgelerde yollar, euler ve hamilton yolları, en kısa yol problemleri, planar çizgeler, ağaçlar, ağaçlar ve özellikleri, ağaçlar, ağaçta sıralama, ağaçta arama, mantıksal cebir, mantık fonksiyonları ve gösterimi, mantıksal devre tasarımı, mantıksal devrelerin indirgenmesi, işlem modelleme, diller ve gramer, sonlu-durum makineleri, işlem modelleme, diller ve gramer, sonlu-durum makineleri, dil tanıma, turing makineleri konuları anlatılmaktadır.

BG-213 PROGRAMLAMA DİLLERİ (3+0+0) 3

Dil dizaynı, derleme, veri tipleri, sıra kontrolu, alt program kontrolu ile programlama dillerinin türleri ve diller arasındaki farklar anlatılmaktadır.

BG-221 VERİ YAPILARI VE ALGORİTMALAR-I (3+1+0) 3.5

Veri yapılarının tasarım, uygulama ve analizleri için temel konseptler tanıtılır. Bu konseptlerin problemlerin çözümünde nasıl kullanıldığı gösterilir. Listeler, yığın, kuyruk ve ağaç yapıları ile bu yapılar üzerindeki algoritmalar C programlama dili kullanılarak anlatılır. Ayrıca, sıralama, arama ve temel çizge algoritmaları açıklanır.

BG-222 BİLGİSAYAR MİMARİSİ (3+0+0) 3

Merkezi İşlem Birimi, mikroprogram kontrolü, bit-slice mikroişlemciler, bilgisayar aritmatiği, bellek yapıları ve paralel yönetim işlemleri, pipe-line yapıları ve array-processor'ları anlatılmaktadır. Bilgisayar donanım elemanları, lojik eleman ve devreler, veri tipleri gösterilimi ve aritmetik işlemler öğretilmekte, temel bilgisayar organizasyonu, komut kodları, zamanlama ve kontrol konuları incelenmektedir. Basit bilgisayar tasarımı, temel bilgisayarın programlanması, makine dili, assembly dilinde programlama konuları irdelenmektedir. Mikroprogramlı kontrol, merkezi işlem birimi, komut formatları ve yığın organizasyonu, pipeline yapısı ve dizi işlemcileri incelenen konular arasındadır. Giriş/Çıkış organizasyonu, kesme ve DMA yapıları, bellek organizasyonu ve yönetimi hakkında bilgi verilmektedir.

BG-223 NESNEYE YÖNELİK PROGRAMLAMA (2+1+0) 2.5

JAVA programlama dili kullanılarak, öğrencilerin, nesneye dayalı programlama teknolojisinin ve bu teknolojinin yeni/popüler bir programlama dili olan JAVA dilindeki uygulamalarının öğretilmesi amaçlanmıştır. Başlıca konular; sınıf (class) ve sınıf metodu kavramları, varlık (instance) ve varlık metodu kavramları, polymorphism, inheritance, data hiding, encapsulation gibi nesneye yönelik programlama tekniklerinin temel konuları, applet ile uygulama arasındaki farklılıklar, Java programlama dilinin temel yapı taşları, exceptions, arrays, abstract (soyut) sınıflar, interfaces (arayüzler) konularını içermektedir. Bunlara ek olarak öğrencilerin Java programlama dilini kullanarak, GUİ (Graphical User İnterfaces) içeren uygulamalar geliştirmelerini sağlamak üzere Swing paketi ayrıntılı olarak anlatılmakta, ayrıca dilin bir diğer önemli ve ayırt edici özelliği olan network programlama için içerdiği network programlama komponentleri, sağladıkları kolaylıklar ve etkinlikleri ile birlikte anlatılmaktadır.

BG-224 GRAFİK (2+1+0) 2.5

Bilgisayar tarafından görüntü üretiminde kullanılan donanım ve yazılım prensipleri, uygulamalar ile birlikte anlatılmaktadır. İki ve üç boyutlu dönüşümler, öteleme ve döndürme, aynalama ve ölçekleme, perspektif ve izdüşüm geometrisi, pencereleme, kırpma usulleri öğretilmekte, daire, parabol, düzlem eğrileri ve yüzey oluşturma metodları ile ilgili algoritmalar incelenmektedir. Derste öğrenilen algoritmalara yönelik projeler verilerek uygulama yapılmaktadır. Derste öğretilen konular, openGL grafik kütüphanesindeki uygulamaları gösterilerek anlatılmaktadır. Yaptırılan uygulamalar, openGL kullanılarak yapılmakta ve bu sayede öğrencilerin yaygın kullanım alanı bulunan bir grafik kütüphanesini tanımaları ve kullanmayı öğrenmeleri amaçlanmaktadır.

BG-311 BİLGİSAYAR AĞLARINA GİRİŞ (3+0+0) 3

Bilgisayar Ağlarının yapısı ve özellikleri anlatılmaktadır. Bilgisayar ağlarında karşılaşılan sorunlar ve giderme yöntemleri öğretilmektedir. Geçmişte ve günümüzde kullanılan bilgisayar ağları ile gelişmekte olan yeni bilgisayar ağları ve bu ağların uygulama alanları öğretilmektedir. Öğrencilere, ödevler ve projeler verilmekte, ağ ve ağ tasarımı ile ilgili yazılım projeleri geliştirmektedirler.Bilgisayar ağlarında iletişim, iletişim protokollerinin yapısı, mevcut protokoller, OSI - TCP iletişim protokolleri ve katmanları, hata denetimi ve hata giderme, çevrim-anahtarlamalı ağlar ve paket-anahtarlamalı ağların yapısı ve özellikleri, X.25, ATM, Frame Relay, bilgisayar ağlarında tıkanıklık ve tıkanıklık giderme konuları anlatılmaktadır.

BG-312 İŞLETİM SİSTEMLERİ (2+2+0) 3

Zaman paylaşımlı sistemler, paralel sistemler, dağıtık sistemler, i/o yapısı, bellek yapısı, bellek hiyerarşisi, genel sistem mimarisi, işletim sistemi servisleri, sistem programları, sistem dizaynı ve implementasyonu, proses zamanlama algoritmaları, proses işlemleri, prosesler arası iletişim, cpu zamanlama kriterleri, cpu zamanlama algoritmaları, algortimaların değerlendirilmesi, proseslerin eşzamanlamasi, semaforlar, senkronizasyon problemleri, monitörler, kilitlenmeler, kilitlenmenin tespiti, kilitlenmeden kurtulma, bellek yönetimi, mantıksal/fiziksel adres alanı, sayfalama, segmentasyon, sanal bellek yönetimi, demand paging, sayfa değiştirme, thrashing, dosya sistemi arayüzü, dosya kavramı, dizin yapısı, koruma ve güvenlik, dosya sistemi implementasyonu, tahsis metotları, serbest alan yönetimi, kurtarma ve etkinlik, i/o sistemleri, i/o donanımı, uygulama ile i/o ilişkisi, performans, ikincil bellek yapisi , diskin yapısı, disk yönetimi, disk güvenirliliği, üçüncül bellek yapisi, üçüncül bellek cihazları, karşılaşılan sorunlar, performans hususları konuları anlatılmaktadır.

BG-313 VERİTABANINA GİRİŞ (3+0+0) 3

Veritabanı kavramı, veritabanı mimarisi, çeşitli veri modellerinin tasarımı anlatılmakta ve uygulama yapılmaktadır. Konular, veritabanı ve veritabanı kullanıcıları, veritabanı sistemi konsepti ve mimarisi, veritabanı modeli kurulumunda ER diyagramı, ilişkisel veritabanı modeli, ilişkisel işlemler kayıt depolama ve temel dosya organizasyonları, dosyalar için indeks yapıları, şebeke veritabanı modeli, hiyerarşik veritabanı modeli ile ilişkisel veritabanı dili SQL'dir. Ayrıca dersteki bazı konuların daha iyi anlaşılması için, her bir öğrenci kendi seçtiği bir konuda MS SQL Server, Oracle vs. gibi ilişkisel bir veritabanı yönetim sistemini kullanılarak veritabanı projesi geliştirmektedir.

BG-321 BİLGİSAYAR AĞLARI (3+0+0) 3

Bilgisayar Ağlarının tasarım konuları anlatılmaktadır. Yerel Alan Ağ (LAN) konuları ve ağlar arasındaki iletişim, prensipleri ve protokoller, IP, routing protokolleri, TCP, transport protokolleri, ağ güvenliğinin sağlanması öğretilmektedir. Geçmişte ve günümüzde kullanılan bilgisayar ağları ile gelişmekte olan yeni bilgisayar ağları ve bu ağların uygulama alanları öğretilmektedir. Öğrencilere, ödevler ve projeler verilmekte, ağ ve ağ tasarımı ile ilgili yazılım projeleri geliştirmektedirler. Local Area Networks (LAN), LAN mimarileri ve uygulamaları, LAN topolojileri, bridges, LAN sistemleri, Ethernet, Token Ring, FFDI, ATM LAN, Wireless LAN, ağlararası iletişim, bağlantılı ve bağlantısız iletişim, IP, IPv6, ağ işlemleri, routing protokolleri, Autonomous Systems, BGP, OSPF, Integrated Services, RSVP, Differentiated Services, Transport Protokolleri, TCP, TCP’de tıkanıklık kontrolü, UDP, bilgisayar ağlarının güvenliğinin sağlanması konuları anlatılmaktadır.

BG-322 MİKROİŞLEMCİLER (3+0+0) 3

Mikroişlemci talimat setleri, mikroişlemci assemblerleri, mikrobilgisayar bellek, giriş-çıkış ünitesi, interrupt sistemleri, DMA konuları işlenmektedir. Mikrobilgisayarlarda kullanılan yarı iletken tümleşik devreler, mikrobilgisayar uygulama alanları anlatılmakta, registerler, aritmetik birimler, talimatların işlem alanları, yığınlar hakkında bilgi verilmektedir. Bilgisayar talimat formatları, adresleme metodları, mikro işlemci talimat setleri örnekleriyle işlenmektedir. Assembler özellikleri ve örnekleri anlatılarak assebly lisanı ile programlama yapılmaktadır. Diziler, aritmetik işlem programları, karakter işlemleri, alt programlar üzerinde çalışılan konular arasındadadır. Bellek bağlantısı genel özellikleri, çeşitli mikrobilgisayar bellek birimleri, giriş/çıkış donanımları, cihazları ve tasarım konusu, interupt sistemlerinin karakteristikleri, ve direkt bellek girişi konuları incelenmektedir. Derste anlatılan konular, İntel 8085A mikroişlemcisi üzerinden anlatılmakta olup, öğrencilerin derste gördükleri teorik konuların uygulamalarını gerçek bir mikroişlemci üzerinde görerek bilgilerini pekiştirmeleri amaçlanmaktadır.

BG-323 VERİTABANI (3+0+0) 3

İkincil depolama ortamları, kayıt dosyalarının diskte yerleşimi, dosyalar üzerindeki işlemler, sırasız kayıtlardan oluşan dosyalar, sıralı kayıtlardan oluşan dosyalar, hashing teknikleri, dosyalar için indeks yapıları, tek ve çok seviyeli indeksler, bir ilişkisel veritabanı örneği (Oracle, MS SQL vs.), nesne tabanlı veritabanları, fonksiyonel bağımlılıklar ve normalizasyon, sorgu işleme ve optimizasyon, sorgu maliyet ölçümü, transaction yönetimi, eşzamanlı çalışma kontrolü, yedekleme ve kurtarma teknikleri, veritabanı güvenliği, istemci-sunucu mimari yapıları konuları öğretilmektedir. Ayrıca dersteki bazı konuların daha iyi anlaşılması için, her bir öğrenci ayrı bir konuda, MS SQL Server, Oracle vs. gibi ilişkisel bir veritabanı yönetim sistemi ve java, MS Visual Basic, Delphi uygulama geliştirme aracı kullanarak görsel arabirimi olan bir veritabanı projesi yapmaktadır.

BG-324 BİLGİSAYAR MÜHENDİSLİĞİNDE SAYISAL YÖNTEMLER (2+1+0) 2,5

Sayısal analize giriş, hata türleri, hata analizi, kök bulma yöntemleri, basit grafik yöntemi, aralık yarılama yöntemi, lineer interpolasyon yöntemi, kök bulma yöntemleri, sekant yöntemi, Newton-raphson yön., basit iterasyon yön., denklem takimlari ve interpolasyon yöntemleri, lineer olmayan denklem takımları, interpolasyon yöntemlerine giriş, interpolasyon yöntemleri, newton polinomları, lagrange polinomları, regresyon yöntemleri, en küçük kareler yön., lineer regresyon, polinom regresyonu, spline interpolasyonu ve trigonometrik regresyon yöntemleri, spline interpolasyonu, trigonometrik regresyon, sayisal türev yöntemleri, sayısal türev, fark formülleri, sayisal integrasyon, yöntemleri, trapez yöntemi, simpson 1/3 yöntemi, simpson 3/8 yöntemi, integrasyon yöntemleri, romberg yöntemi, gauss yöntemi, diferansiyel denklem çözüm yöntemleri, euler yöntemi, heun yöntemi, düzeltilmiş euler yön., diferansiyel denklem çözüm yöntemleri, rungekutta yön., eliptik sistemler, laplace denklemi, özdeğer problemleri, iterasyon yöntemleri, özdeğer problemleri, iterasyon yöntemi anlatılmaktadır.

BG-411 MİKROİŞLEMCİLER LABORATUVARI (0+0+2) 1

Mikroişlemciler konusuna ait yazılım ve donanıma ilişkin laboratuvar uygulamaları yapılmaktadır. Aritmetik programlar, giriş ve çıkış portları, bellek ve interrupt devreleri incelenmektedir. Göstergeye ait programlar, monitör alt programları, tuş takımı programları incelenmekte, toplama, çarpma gibi temel aritmetik problemler çözümlenmektedir. Blok aktarma ve blok açma, alt program yazılması, yığın kullanarak programlama, yeni bellek ekleme, paralel ve seri harebrleşme, kesme kullanılarak çevre birimi ile haberleşme, doğrudan bellek erişimi programlarının yazılması işlemleri gerçekleştirilmektedir. Laboratuvar uygulamaları, mikroişlemci seti ve mikroişlemci simülatörleri vasıtasıyla yapılmaktadır.

BG-412 ALGORİTMA ANALİZİ VE TASARIMI (2+1+0) 2.5

Algoritmaların karmaşıklığı, alt ve üst sınır teorileri anlatılır. Böl-Yönet, Açgözlü yaklaşım, dinamik programlama, geri takip, dallandır ve buda algoritma tekniklerinin tasarımı açıklanır. NP-Complete ve NP-Hard problemler tanıtılır.

BG-413 KRİPTOGRAFİ (3+0+0) 3

Kriptografinin ve kriptoanalistlerin temel konseptleri anlatılmaktadır. Klasik şifreleme ve modern şifreleme teknikleri, DES, AES ve diğer şifreleme teknikleri anlatılmakta ve analizleri yapılmaktadır. Sayılar Teoremine giriş yapılarak, açık anahtar şifreleme teknikleri, RSA, El-Gamal ve diğer şifreleme algoritmaları anlatılmakta ve karmaşıklıkları incelenmektedir. Hash fonksiyonları, sayısal imza ve anahtar dağıtım yöntemleri incelenmektedir.

BG-414 YAZILIM MÜHENDİSLİĞİ  (3+0+0) 3

Yazılım üretim teknikleri ve prensipleri incelenmektedir. Waterfall modeli kapsamında sistem analizi, ihtiyaç analizi, başlangıç tasarımı, son tasarım, program üretimi, test, kullanım ve bakım tutum işlemleri safha safha anlatılmaktadır. Prototip ve spiral yazılım geliştirme teknikleri açıklanmaktadır. Her safhada uygulanması gerekecek işlemler, prensipler ve dökümantasyon konuları detaylı olarak irdelenmektedir. Anlatılan konular mevcut tekniklerden örnekler verilerek açıklanmaktadır. tüm konular bir proje üzerinde pratiğe dönüştürülmektedir. Ayrıca yazılım mühendisliği konusundaki modern case toollar ile UML gibi yeni teknolojiler anlatılmaktadır.

BG-421 INTERNET TEKNOLOJİLERİ  (2+1+0) 2.5

Öğrencilerin, herhangi bir veritabanı erişimi olan grafiksel arayüzlü dinamik bir WEB sitesinin tasarım ve kodlamasını yapabilecek düzeyde bilgiye sahip olmasını sağlamanın yanı sıra, internet üzerinde çalışan çeşitli servislerin ardındaki teknolojiler ile çeşitli internet servis ve uygulama geliştirme yazılımları hakkında bilgi sahibi olmaları hedeflenmektedir. Bu maksatla derste, WEB sunucu üzerinde çalışan servisler hakkında bilgi verilmekte, WEB siteleri üzerinde çalışan uygulamaların nasıl geliştirebileceğini öğretilmekte, standartlaşan veya yaygın kullanımı olanı olan web programcılığı dillerinden en az biri iyi derecede öğretilmekte, diğer diller ise ana hatlarıyla benzer veya farklılık oluşturan yönleri vurgulanarak anlatılmakta, ve ayrıca dünyada ortaya çıkan yeni konsept ve teknolojiler tanıtılmaktadır. Web sunumcuları, veritabanı örnekleri ve araçları, web uygulaması geliştirme araçları, ASP ile web programcılığı, Javascript, VB Script, XML, PHP, PERL ve CGI, kablosuz internet ve m-business işlenilen konular arasındadır.

BG-422 DAĞITIK SİSTEMLER  (3+0+0) 3

Dağitik sistem (DS) prensipleri ve örnekler, DS’in tanımı, DS gerçekleştirme amaçları, çoklu işlemciler, homojen/heterojen çoklu bilgisayar sistemleri, dağıtık ve ağ işletim sistemleri (DOS, NOS), middleware, istemci-sunumcu modeli, haberleşme, alt, transport ve üst seviyeli protokoller, RMI (uzaktan metod çalıştırma), RPC (uzaktan prosedür çağırma), haberleşme, mesaj tabanlı haberleşme, stream tabanlı haberleşme, prosesler, thread’ler, dağıtık sistemlerde thread kullanımı, çoklu-thread istemci-sunumcular, prosesler, X-windows, kod taşıma, yazılım ajanları, isimlendirme, tanımlayıcılar, adresler, isim çözümleme, isim uzayının gerçekleştirimi, hareketli varlıkların yerini belirleme, basit çözümler, home tabanlı ve hiyerarşik çözümler, referans edilmeyen varlıkların temizlenmesi, senkronizasyon, saat senkronizasyonu ve mantıksal saatler, eleme yöntemleri, dağıtık işlem hareketleri, tutarlilik ve replikasyon, replikasyonun gerekliliği, veri merkezli tutarlılık modelleri, istemci merkezli tutarlılık modelleri, dağıtım protokolleri, tutarlılık protokolleri, hata toleransi, güvenli istemci-sunumcu haberleşmesi, güvenli grup haberleşmesi, dağıtık commit ve kurtarma, güvenlik, güvenli kanallar ve erişim kontrolü, güvenlik yönetimi, örnek uygulamalar : sesame, kerberos, elektronik ödeme sistemleri, dağıtık nesne tabanlı sistemler, dağıtık dosya sistemleri, dağıtık doküman tabanlı sistemler, dağıtık koordinasyon tabanlı sistemler konuları anlatılmaktadır.

BG-423 BİLGİ SİSTEMLERİ GÜVENLİĞİ (3+0+0)

Bilgi sistemlerinin güvenliğinin temelleri, risk analizi, güvenlik politikaları, güvenli iletişim ve bilgi saklama konseptleri anlatılmaktadır. Sayısal imza, asıllama protokolleri, tasarım konuları ve uygulamaları, sertifika oluşturma ve saklama yöntemleri ve Kerberos anlatılmaktadır. Elektronik-posta güvenliği, IPSec, elektronik-ödeme, WEB güvenliği, virüs ve saldırganlar ve bunlara karşı koyma yöntemleri, ateşduvarları ve güvenlik araçları anlatılmaktadır.

BG-424 YAPAY ZEKA (2+1+0) 2.5

Yapay zekanın temel kavramları, yapay zeka problem tipleri ve problemlerin çözüm yöntemleri anlatılır. Bu yöntemlerin PROLOG programlama dili kullanarak uygulaması yapılır. Bilgisayarla görme, robotlar konuları işlenir.