T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI 2011-12 Bahar Yarıyılı ALGORİTMA VE PROGRAMLAMA BİL 133 5 AKTS Kredisi 1. yıl 1. yarıyıl Lisans Zorunlu 4 saat/hafta Ders: 2 saat/hafta Pratik: 2 saat/hafta Dersin Koordinatörü, İletişim Bilgileri ve Görüşme Saatleri: Doç. Dr. Oruç Raif Önvural Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü, Ofis:101-E, Tel: 0216 626 10 50 (Pbx: 2362), e-posta: onvural@maltepe.edu.tr Pts, Salı, Carş., Perş., Cuma 09:00-11:00 Dersi Veren Öğretim Elemanı, İletişim Bilgileri ve Görüşme Saatleri: Öğr. Gör. Okan Vardarlı, Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü, Ofis:209, Tel: 0216 626 10 50 (Pbx: 2386), e-posta: okanvardarli@maltepe.edu.tr Salı: 10:00-12:00, Çarşamba: 10:00-12:00, Perşembe: 10:00-12:00 Dersin ya da öğretim elemanının web sayfasının adresi: http://akademik.maltepe.edu.tr/~okanvardarli/ Dersin Genel Amacı: Dersin iki temel hedefi vardır: öğrencinin bilgisayar programlamayı C programlama dilini kullanarak öğrenmesini ve program çözümleri tasarımlanırken problem çözüm yöntemleri ve yazılım mühendisliği metotlarının izlenmesinin önemini anlamasını sağlamaktır. Derste, öğrenciler, işlemsel (procedural) programlama, veri tipleri, kontrol yapıları, fonksiyonlar, veri temsil biçimleri gibi ilkelerle tanışacaktır. Diğer konu başlıkları arasında, dosya erişim yöntemleri, diziler, karakter dizileri, pointer kavramı ve modüler programlama bulunmaktadır. Algoritma tasarım ve geliştirme akış diyagramları ve sözde kod (pseudo - code) teknikleri ile gerçekleştirilecektir. Planlanan Öğrenme Çıktıları ve Alt Beceriler: 1. Öğrenciler bilgisayar donanımı, yazılımının ne olduğunu tanımlayabilecek ve Yazılım Geliştirme Yöntemini anlayıp uygulayabilecektir. 2. Öğrenciler C programlama dilinin faklı programlama yapı taşlarını (ardıl, seçim, döngü ifadeleri) listeleyip, kullanabilecektir. 3. Öğrenciler etkileşimli ve yığınsal (batch) modda programları çalıştırabilecektir. 4. Öğrenciler problemleri bilgisayar programları yazarak çözmeye başlamadan önce problem çözüm stratejileri (algoritmaları) oluşturabilecektir. 5. Öğrenciler algoritmaları sözde kod ve akış diyagramları ile temsil edebilecektir. 6. Öğrenciler bilgisayar programlarını analiz edebilecek, tasarımlayabilecek, belgelendirebilecek ve test edebilecektir. 7. Öğrenciler matematiksel problemlere bilgisayar program çözümleri oluşturabilmek için temel matematik bilgilerini kullanabilecektir. 8. Öğrenciler farklı veri tiplerini (tam sayı, kayan -nokta, karakter, katar, dizi, adres gösterici) ayırt edebilecektir. 9. Öğrenciler bilgisayar programlarını Tümleşik Geliştirme Araçları (derleyici içeren) kullanarak çalıştırabilecektir. 10. Öğrenciler bir bilgisayar programında hataları bulup ayıklayabilecek ve ortaya doğru çalışan yazılımlar çıkarabilecektir. Genel Yeterlilikler: 1. Öğrenme ve anlama (temel program yapılarının, arama ve sıraya sokma algoritmalarının, tipik bir C dili benzeri program ortamının öğrenilmesi ve anlaşılması). 2. Bilişsel/zihinsel beceriler (düşünme ve analiz etme, herhangi bir problemi anlayıp analiz edebilme ve çözümünü bulabilme, algoritma geliştirebilme). 3. İletişim becerileri (takım çalışmaları yürütebilme). 4. Pratik ve konuya özel beceriler (arama ve sıralama algoritmaları dahil, C benzeri diller kullanarak program yazabilme, bilgisayar programları yazarak matematiksel problemlere çözüm bulabilme). Sayfa 1
Öğretim Yöntem ve Teknikleri: Anlatım, soru-yanıt, uygulama gösterme, laboratuar uygulamaları. Dersin veriliş şekli: Yüz yüze. Varsa, Uygulamanın (staj) yapıldığı yer: Önkoşul: Eş dönemli koşul: Önerilen ilave dersler: Yok. Ders İçeriği: Yazılım, donanım ve algoritma tanımları, algoritmanın özellikleri, algoritmanın yazım kuralları, akış şemaları, C dilinde temel elemanlar, girdi/çıktı, kontrol yapısı, fonksiyonlar, basit veri tipleri ve diziler. Ders kategorisi: (Yalnızca bir kategori işaretlenecektir.) 1. Temel meslek dersleri 2. Uzmanlık/alan dersleri 3. Destek dersleri 4. Aktarılabilir beceri dersleri 5. Beşeri, İletişim ve Yönetim Becerileri Dersleri Ders Kitabı: Hanly J. R., Koffman E. B. 2010. Problem Solving and Program Design in C. Sixth Edition. Pearson. ISBN-13: 978-0-321-60151-3, ISBN-10: 0-321-60151-3. Yardımcı Okumalar: 1. Deitel & Associates. C How to Program. 5th Edition. ISBN: 0132404168 2007, Pearson (Türkçesi Sistem Yayınları) 2. Çağıltay N.E., Selbes C.F., Tokdemir G., Turhan Ç. 2010. C Dersi-Programlamaya Giriş. 4. Baskı. Seçkin Yayınevi. ISBN: 978-9944-62-337-7. 3. Çağıltay N.E., Selbes C.F., Tokdemir G., Turhan Ç. 2009. C Dersi-Çözümlü Problem Kitabı. 2. Baskı. Seçkin Yayınevi. ISBN: 978-9944-0380-0-3. Sayfa 2
Haftalık ders konuları: Haftalar Hafta 1 Hafta 2 Hafta 3 Hafta 4 Hafta 5 Hafta 6 Hafta 7 Hafta 8 Hafta 9 Hafta 10 Hafta 11 Hafta 12 Hafta 13 Hafta 14 İşlenecek Konular/Yapılacak Faaliyetler Teori: Bilgisayar ve Programlamaya Genel Bakış Bilgisayar Sistemlerine Genel Bakış Bilgisayar Dilleri Program Geliştirme Yaşam Döngüsü Sözde kod ile algoritma yazma C Dili öğeleri Teori: C Programlama Diline Genel Bakış (dil elemanları, değişken bildirimleri ve veri türleri, çalıştırılabilir ifadeler, bir C programının genel formu, aritmetik ifadeler, program çıktısında sayıları biçimlendirme, etkileşimli mod, yığınsal mod, veri dosyaları) Teori: Problem çözme ve algoritma kavramı (sorunun analiz edilmesi, bir çözüm tasarımı, tasarımın uygulanması, test etme, bakım, algoritmik problem çözmenin temellerine giriş) Teori: Algoritmalar (biçimsel bir algoritma tanımı, algoritmaların soyut doğası, algoritma gösterimi, sözde kod, akış şemaları, algoritma keşfi) Teori: Yukarıdan-aşağıya tasarım fonksiyonları ile (mevcut bilgi ile program oluşturmak, kütüphane işlevleri, yukarıdan aşağıya tasarım ve yapı çizelgeleri) Teori: Basit Veri Tipleri (tamsayı ve karakter değişkenleri ve ifadeleri, ondalıklı sayılar ve değişkenler, tamsayı ve kayan noktalı sayılar arasındaki fark, kayan noktalı aritmetik, üslü gösterim, double türü, biçimlendirilmiş çıktı) Teori: Seçme yapıları (kontrol yapıları, koşullar, if cümlesi ve bileşik ifadeler, algoritmalardaki karar adımları) Teori: Seçme yapıları (iç içe if cümleleri ve birden fazla alternatif seçim kararları, switch cümlesi) Teori: Tekrar ve döngü yapıları (programlarda tekrar, sayılı döngüler ve while cümlesi, for döngüsü, koşullu döngüler) Teori: Tekrar ve döngü yapıları (özel değerle kontrollü döngüler, dosya-sonu kontrollü döngüler, döngü tasarımı, iç içe döngüler, do-while cümlesi ve bayrak kontrollü döngüler) Teori: Modüler programlama (basit çıktı parametreli fonksiyonlar, I/O parametreli fonksiyonları birden çok kere çağırma, değişkenlerin kapsam alanı, formal parametrelerin gerçek argüman olarak kullanılışı) Teori: İşaretçi kavramına giriş (değer gönderme, adres gönderme, I/O parametreli fonksiyonlar) Teori: Diziler (dizileri tanımlama ve referans etme, dizi indisleri, sıralı erişim için for döngüsü kullanımı) Diziler (dizilerin fonksiyon argümanı olarak kullanımı, çok boyutlu diziler) Teori: Algoritma Analizi ve Verimlilik (sıralı arama algoritması, döngü kontrolü, ekleme sıralama algoritması, algoritma verimliliği, yazılım doğrulama) Sayfa 3
DEĞERLENDİRME SİSTEMİ Yarıyıl içi Çalışmaları Sayısı Katkı Payı Devam - - Laboratuar/Quiz 14 20 Uygulama - - Alan Çalışması - - Derse Özgü Staj (Varsa) - - Ödev - - Sunum - - Projeler - - Seminer - - Ara Sınavlar 2 40 Final 1 40 Toplam 100 Yarıyıl İçi Çalışmalarının Başarı Notuna Katkısı 60 Yarıyıl Sonu Sınavının Başarı Notuna Katkısı 40 Toplam 100 AKTS (Öğrenci İş Yükü Tablosu) Etkinlikler Sayısı Süresi (Saat) Toplam İş Yükü Ders Süresi (Sınav haftası dahildir: 14x haftalık ders saati) 14 2 28 Laboratuar 14 2 28 Uygulama - - - Derse Özgü Staj (varsa) - - - Alan Çalışması - - - Sınıf Dışı Ders Çalışma Süresi (Ön çalışma, pekiştirme, vb) 14 4 56 Sunum / Seminer Hazırlama - - - Proje - - - Ödevler - - - Ara sınavlar 2 10 20 Yarıyıl Sonu Sınavı 1 20 20 Toplam 152 Sayfa 4
Dersin Öğrenim Çıktılarının Program Yeterlilikleri ile İlişkisi Katkı Düzeyi No Program Yeterlikleri/Çıktıları 1 2 3 4 5 1 Bilgisayar mühendisliği problemlerinin çözümünde matematik, fen ve mühendislik bilgilerini uygular. 2 Bilgisayar Mühendisliği alanında karşılaşılabilecek sorunları tanımlar, uygun çözümleme ve modelleme yöntemlerini kullanır ve çözer. 3 İhtiyaç duyulan gereksinimleri karşılayabilecek Bilgisayar Mühendisliği problemlerini tasarlar ve çözümleyebilme becerisine sahiptir. 4 Bilgisayar Mühendisliği araç ve yazılımlarını etkin şekilde kullanır. 5 Veri toplama, sonuçları analiz etme, yorumlama ve paylaşabilme becerisine sahiptir. 6 Teknolojik yenilikleri izleme yeteneği ve yaşam boyu öğrenme bilincindedir 7 Takım çalışmasında ve disiplinlerarası çalışma gruplarında etkin görev alır ve liderlik edebilir 8 Sözlü ve yazılı etkin iletişim kurar 9 Alanı ile ilgili konularda dış kaynaklı yayınları takip eder ve kullanır. 10 Mesleki ve etik sorumlulukların bilincindedir. 11 İş hayatındaki uygulamalara yönelik farkındalık sahibidir. 12 Mühendislik uygulamalarının ulusal ve evrensel düzeydeki, hukuksal, toplumsal, kültürel ve çevresel etkilerini kavrar. Sayfa 5