Dersin Amacı: |
Bu dersin amacı diziler, kayıtlar, karakter dizileri, bağlı listeler, yığıtlar, kuyruklar ve ağaçlar gibi soyut veri yapılarına giriş yapmaktır. Bunların yanında temel hesaplama algoritmalarını (arama ve sıralama) ve soyut veri yapılarını program tasarımındaki hesaplama problemlerini çözmek için uygulama anlatılacaktır.
|
Dersin İçeriği: |
Algoritma analizi; dizi yığıtları, kuyruklar, bağlı listeler, ağaçlar, sıralama, hesaba dayalı adresleme ve arama yapıları; algoritma karmaşıklığı ve paralel algoritmalar; dosya örgütleşimi.
Bu derste proje odaklı öğrenme yaklaşımı kullanılmaktadır. Bu çerçevede dersin geleneksel yapıdaki içeriği yanında proje odaklı öğrenme bileşeni bulunmaktadır. Proje odaklı öğrenme bileşeni dersin amaçlarına ve öğrenme çıktılarına uygun olarak öğrenciler tarafından bireysel olarak veya proje takımları halinde belirli adımlardan geçilerek ve belirli ara çıktıların ve son çıktıların üretilmesini amaçlayan bir veya daha fazla sayıda projenin öğrenme amaçlı proje yapılmasını içermektedir. Dersin proje odaklı öğrenme bileşeni ağırlıklı olarak proje çıktılarının ve proje çalışmalarının dersi veren öğretim elemanı ve/veya jüri tarafından değerlendirilmektedir. |
Ders Öğrenme Çıktıları (DÖÇ), dersi başarı ile tamamlayan öğrencilerin kendilerinden sahip olmaları beklenen bilgi, beceri ve yetkinlikleri ifade eder. Bu bağlamda, bu ders için tanımlanmış olan Ders Öğrenme Çıktıları aşağıda verilmektedir.
|
|
Bilgi
(Kuramsal ve/veya olgusal bilgi olarak tanımlanmıştır.)
|
1) Algoritmik sorunları etkin biçimde çözmek için gerekli temel soyut veri türlerini (hash tabloları, ikili arama ağaçları ve çizgeler) bilir ve kullanır.
|
Beceriler
(Bilişsel ve/veya uygulama becerileri olarak tanımlanmıştır.)
|
1) Belli türlerde bilgiyi göstermek için veri yapılarını (diziler, karakter dizileri, bağlı listeler, yığıtlar, kuyruklar, ve hash tabloları) kullanan programları belirler, yazar ve bu veri yapılarının bellekte nasıl depolandığı bilir.
|
2) Algoritmaların zaman ve bellek kullanımı karmaşıklığını belirler.
|
3) Etkin arama ve sıralama algoritmalarını kullanarak yaygın programlama sorunlarını çözer.
|
4) Algoritma çözümlemesinde kullanılan matematiksel simgeleri bilir ve bu simgeleri temel algoritma analizinde kullanır.
|
Yetkinlikler
("Bağımsız Çalışabilme", "Sorumluluk Alabilme", "Öğrenme", "İletişim ve Sosyal" ve "Alana Özgü" yetkinlikler olarak tanımlanmıştır.)
|
Hafta |
Konu |
Materyal Paylaşımı * |
|
Ön Hazırlık |
Pekiştirme |
1) |
|
|
|
1) |
Giriş
Algoritma analizi
|
|
|
2) |
Projelerin belirlenmesi |
|
|
3) |
Listeler, yığıtlar, kuyruklar |
|
|
4) |
Ağaçlar |
|
|
5) |
Hesaba dayalı adresleme |
|
|
6) |
Öncelik kuyrukları (Yığınlar)
Sıralama
|
|
|
7) |
Projenin ilk tesliminin yapılması |
|
|
8) |
Ara sınav |
|
|
9) |
Ayrık küme sınıfları
Çizge algoritmaları |
|
|
10) |
Algoritma tasarım teknikleri - I |
|
|
11) |
Algoritma tasarım teknikleri - II |
|
|
12) |
Projenin ikinci tesliminin yapılması |
|
|
13) |
Amorti edilmiş analiz |
|
|
14) |
İleri veri yapıları ve gerçekleştirimler |
|
|
15) |
Projenin son tesliminin ve sunumunun yapılması |
|
|
|
Program Öğrenme Çıktıları |
Katkı Oranı (1-5) |
1) |
Matematik, fen bilimleri, bilgisayar bilimleri ve yazılım mühendisliği ile ilgili mühendislik konularında yeterli bilgi birikimine sahiptir; bu alanlardaki kuramsal ve uygulamalı bilgileri yazılım mühendisliği problemlerinin çözümü için birlikte kullanır ve uygular. |
5 |
2) |
Alanı ile ilgili temel bilim konularındaki kuramsal ve uygulamalı bilgileri yazılım mühendisliği problemlerinin çözümü için birlikte kullanır ve uygular. |
|
3) |
Yazılım mühendisliği uygulamalarını analiz eder, modeller, gerçekçi kısıtlar ve koşullar altında belirli gereksinimleri karşılayacak şekilde tasarlar ve geliştirir; bu amaçla uygun yöntemleri, araçları ve teknolojileri seçer ve kullanır. |
|
4) |
Karmaşık yazılım mühendisliği problemlerini saptar, tanımlar, formüle eder ve çözer; bu amaçla uygun analitik yöntemler ile modelleme yöntemlerini seçer ve uygular. |
5 |
5) |
Bilgisayar bilimleri ve yazılım mühendisliği uygulamaları için gerekli olan modern teknik ve araçları ve bilişim teknolojilerini seçer ve etkin bir şekilde kullanır. |
4 |
6) |
Bilgisayar ve yazılım tabanlı karmaşık bir sistemi, süreci, cihazı veya ürünü ekonomi, çevre sorunları, sürdürülebilirlik, üretilebilirlik, etik, sağlık, güvenlik, sosyal ve politik sorunlar gibi öğeler dahil gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlar; bu amaçla modern tasarım yöntemlerini uygular. |
4 |
7) |
Sorumluluk aldığı çalışmalarda var olan normları ve standartları eleştirel bakış açısıyla değerlendir. |
|
8) |
Sürekli gelişen yazılım mühendisliği alanının ve küresel rekabet ortamının gerektirdiği yetkinliklere sahiptir. |
|
9) |
Türkçe sözlü ve yazılı olarak etkili iletişim kurar ve B2 düzeyinde Yabancı Dilde (İngilizce) iletişim kurma yetkinliğine sahiptir. |
|
ÖĞRENME VE ÖĞRETME ETKİNLİKLERİ İŞ YÜKÜ |
Öğrenme ve Öğretme Etkinlikleri |
Etkinlik Sayısı/Yarıyıl |
Süresi (saat) |
Toplam İş Yükü |
Ders |
14 |
2 |
28 |
Laboratuvar |
0 |
0 |
0 |
Uygulama |
14 |
2 |
28 |
Derse Özgü Staj |
0 |
0 |
0 |
Arazi Çalışması |
0 |
0 |
0 |
Sınıf Dışı Ders Çalışması |
14 |
2 |
28 |
Sunum / Seminer |
4 |
1 |
4 |
Proje |
4 |
5 |
20 |
Ödevler |
0 |
0 |
0 |
Öğrenme ve Öğretme Etkinlikleri Toplam İş Yükü |
- |
- |
108 |
ÖLÇME VE DEĞERLENDİRME ETKİNLİKLERİ İŞ YÜKÜ |
Ölçme ve Değerlendirme Etkinlikleri |
Etkinlik Sayısı/Yarıyıl |
Süresi (saat) |
Toplam İş Yükü |
Kısa Sınav |
3 |
2 |
6 |
Ara Sınavlar |
1 |
6 |
6 |
Yarıyıl Sonu Sınavı |
1 |
12 |
12 |
Ölçme ve Değerlendirme Etkinlikleri Toplam İş Yükü |
- |
- |
24 |
TOPLAM İŞ YÜKÜ (Öğrenme ve Öğretme + Ölçme ve Değerlendirme Etkinlikleri) |
132 |
DERSİN AKTS KREDİSİ (Toplam İş Yükü/25.5 Saat) |
5 |