BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf / Y.Y. ALGORİTMA ANALİZİ VE TASARIMI Ders Saati (T+U+L) Kredi AKTS BG-315 3/1 3+0+0 3+0 5 Dersin Dili : TÜRKÇE Dersin Seviyesi : LİSANS Dersin Önkoşulu : İleri Programlama, Nesneye Yönelik Programlama, Veri Yapıları ve Algoritmalar Dersin Öğretim Elemanları : Bilgisayar Müh.liği Öğretim Üyesi Dersin Amacı : Bu dersin amacı, öğrencilere problemlerin çözümünde algoritmik yaklaşımı, temel algoritmaları, algoritma analiz ve tasarım tekniklerini öğretmektir. Dersin Öğrenim Kazanımları : Bu dersi başarıyla tamamlayabilen öğrenciler; 1 Problemlerin çözümüne algoritmik yaklaşabilir. 2 Temel algoritmaları bilir. 3 Algoritmaları analiz edebilir. 4 Problemleri çözmek için algoritma tasarlayabilir. 5 Hesaplanabilirliği bilir. Dersin İçeriği : Bu derste öncelikle algoritmalara giriş yapılarak temel kavramlar anlatılacak daha sonra algoritmaların yürütme zamanı ve zaman karmaşıklığı hesaplanması işlenecektir. Özyineleme ve özyinelemeli algoritma analizi yöntemleri ile sıralama algoritmalarının karmaşıklık analizi öğretilecektir. Öğrencilerin genel tasarım teknikleri; Böl ve Yönet (Divide and Conquer), Dinamik Programlamai Greedy yaklaşımının kavraması sağlanacaktır. Dizin işleme ve temel çizge algoritmalarının ayrıntılı olarak işlenmesinden sonra NP Completeness teorisi hakkında genel bilgi verilecektir. Değerlendirme : ÖLÇME ARACI ADET TABAN NOTU BAŞARI NOTUNA KATKISI Ara Sınav 1 45 % 24 Bitirme Sınavı 1 45 % 60 Yarıyıl 1 45 % 16 Değerlendirme Bütünleme / NYS 1 45 -- Tek Ders / Ek NYS 1 45 -- Kaynaklar : Introduction to Algorithms, T. H. Cormen, C. E. Leiserson, R. L. Rivest
S. No. Program Yeterlilikleri Dersin Katkı Düzeyi 1 2 3 4 5 1 Matematik, fen ve mühendislik bilgisini uygulayabilme. 2 3 4 5 6 Karşılaşılan problemlerin tanımlanması, çözümü ve analizi esnasında, Temel Bilgisayar Mühendisliği kavramlarını, algoritmalarını, uygulamalarını ve çözümlerini kullanabilme. Deney tasarlama, verileri analiz etme ve yorumlama becerisi. Ekonomik, çevresel, sosyal, politik, etik, sağlıklı ve güvenli, üretilebilir ve devam ettirilebilir gibi gerçekçi kısıtlar altında arzu edilen bir ihtiyacı karşılamak için, bilgisayar alt yapısına dayalı bir sistemi, parçasını veya bir süreci kurmak, yapılandırmak, yönetmek ve işlemek. Bilgi sistemleri ve yazılımları ile ilgili ihtiyaçları, problemlerini tanımlamak, formüle etmek ve çözüm üretmek. Problem çözümü için uygun yöntemi saptamak, ve uygulamak. 7 Bilişim teknolojilerini etkin kullanmak. 8 9 10 Çözümlere özel bilgisayar alt yapısı kurmak ve yazılımlarını geliştirmek. Bilgisayar Mühendisliği problemlerini analiz etmek için, benzetim, bilgisayar mühendisliği için gerekli yöntem ve yazılım paketlerini kullanmasını bilmek. Sözel ve yazılı olarak iş ahlakı içinde takım üyeleri ve müşterilerle etkin iletişim kurmak. 11 Mesleki ve etik sorumluluk bilincine sahip olabilme. 12 13 14 Hayat boyu öğrenmenin önemini kavrayarak, bilim ve teknoloji alanındaki yenilikleri takip ederek kendini geliştirebilme. Bireysel çalışma ve bağımsız karar verme yetisine sahip olarak fikirlerini sözlü ve yazılı olarak açıkça ifade edebilme ve iletişim kurabilme. Atatürk ilke ve inkılapları doğrultusunda demokratik, laik ve sosyal hukuk devleti ilkelerine bağlı hizmet bilincine sahip olabilme. 15 Türkçe yi sözlü ve yazılı ortamlarda etkin kullanabilme. 16 Uluslar arası ortamda alanı ile ilgili kaynakları kullanabilecek, meslektaşları ile iletişim kurabilecek düzeyde bir yabancı dil bilgisine sahip olabilme; ikinci yabancı dili orta düzeyde kullanabilme.
HAFTALIK KONULAR Hafta 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Konular ALGORİTMALAR - Algoritmalara Giriş - Temel Kavramlar - Algoritma Analizi ve Tasarımı ALGORİTMA ANALİZİ - Yürütme Zamanı (Running Time Function) - Algoritmaların Sınıflandırılması - Asimtotik Notasyonlar (O, Θ, Ω Notasyonları) ÖZYİNELEMELİ ALGORİTMA ANALİZİ - Özyineleme Fonksiyonlar ve Yineleme (Iteration) Yöntemi - Yerine Koyma (Substitution) Yöntemi - Master Yöntemi SIRALAMA VE KARMAŞIKLIK ANALİZİ - Heap Sort Algoritması ve Analizi - Quick Sort Algoritması ve Analizi - Rastgele Quick Sort Algoritması ve Analizi DOĞRUSAL ZAMANLI SIRALAMA - Sıralamada Alt Sınır - Karşılaştırmasız Sıralama Counting Sort Radix Sort ve Bucket sort PARÇALA-ÇALIŞTIR (DIVIDE & CONQUER) - PARÇALA-ÇALIŞTIR Elemanları - Max-Min Problemi - Merge Sort SIRA İSTATİSTİKLERİ - Rastgele Parçala Çalıştır - Beklenen Doğrusal Zaman - Analizinde Seçim - En Kötü Doğrusal Zaman Analizinde Seçim GREEDY YAKLAŞIMI - Greedy Yaklaşımı Elemanları - Görev Planlama Problemi (Task Scheduling Problem) - Hufmann Kodlaması ARA SINAV DİNAMİK PROGRAMLAMA YAKLAŞIMI - Dinamik Programlamaya Giriş - Dinamik Programlama Elemanları - 0/1 Knapsack Problemi DİNAMİK PROGRAMLAMA Matris Dizisi Çarpımı Problemi - En Uzun Ortak Altdizin (Longest Common Subsequence) Problemi - Dinamik Programlama ve Greedy Yaklaşımı Mukayesesi AMORTİZE ANALİZ - Dinamik Tablolar ve Toplam (Agregate) Yöntemi - Hesaplama (Accounting) Yöntemi - Potansiyel (Potantial) Yöntemi TEMEL ÇİZGE ALGORİTMALARI - Çizge Sunumu, Depth-First ve Breath-First Araması - En Küçük Yol Ağacı Problemi ve Kuskal Algoritması - En Kısa Yol Problemi ve Dijkstra Algoritması - Tüm İkili En Kısa Yol Problemi ve Bellman-Ford Algoritması ÇİZGE ALGORİTMALARI - Floyd-Warshal Algoritması - Johnson Algoritması - Gezgin Satıcı Problemi ve Şebeke Akış Problemi DİZİN EŞLEŞTİRME - Basit Dizin Eşleştirme Algoritması - Rabin-Karp Algoritması
- Knuth-Morris-Pratt Algoritması 16 NP-COMPLETENESS TEORİSİ - Polinom Zamanlı Problemler - NP Karmaşıklık Sınıfı - NP-Completeness ve İndirgeme (Reducibility) FAALİYETLER AKTS KREDİSİ / İŞ YÜKÜ TABLOSU SAYI SÜRE (Saat) TOPLAM İŞ YÜKÜ (Saat) Teorik Ders Teorik Anlatım 15 3 45 Rehberli Problem Çözme Genel Laboratuar Uygulaması - - - Sınıf Çalışması Bireysel veya Grup Halinde Çalışma 15 3 45 Ödev Problemlerinin Çözülmesi ve Rapor Olarak Teslimi - 5 4 Dönem Projesi - - - Sunumu / Seminer Hazırlama - - - Diğer Çalışmalar - - - Ara Sınav Sınav 1 2 2 Yarıyıl Sonu Sınavı Sınav İçin Bireysel Çalışma 1 14 14 Sınav 1 2 2 Sınav İçin Bireysel Çalışma 1 22 22 TOPLAM İŞ YÜKÜ (Saat) 150 Saat AKTS KREDİSİ Toplam İş Yükü / 30 = 150 / 30 = 5