Yazılım Mühendisliği
Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: YAZ104
Ders İsmi: Temel Programlama 2 (Python)
Ders Yarıyılı: Bahar
Ders Kredileri:
AKTS
6
Öğretim Dili: Turkish
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: Hayır
Dersin Türü: Zorunlu
Dersin Seviyesi:
Lisans TYYÇ:6. Düzey QF-EHEA:1. Düzey EQF-LLL:6. Düzey
Dersin Veriliş Şekli: Yüz yüze
Dersin Koordinatörü: Araş. Gör. ZEHRA TÜFEKÇİ
Dersi Veren(ler):
Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Bu dersin amacı, Python programlama dili ve araçlarını ileri düzeyde kullanarak gelişmiş programlama yaparken öğrencilere uygulamalı beceriler kazandırmaktır. Öncelikle Python ile programlama ve yazılım geliştirmede ileri düzey kavramlar (sınıflar, nesneler, metodlar, kalıtım, jeneratörler ve lambda ifadeleri vs.) aktarılacaktır. Daha sonra da, geniş bir kullanım alanına sahip problem çözme tekniklerinin gerçek hayat problemleri üzerine uygulanması üzerinde durularak, öğrencilerin kullanıcısına katma değer sağlayabilecek mini uygulama projeleri geliştirmeleri sağlanacaktır. Dersin ana hedefi, bölüm müfredatındaki üst düzey derslere hazırlıklı olma anlamında bilgisayar bilimcisi/yazılım mühendisi zihniyetini oluşturmaktır.
Dersin İçeriği: Python ile programlama ve yazılım geliştirmede ileri düzey kavramlar (sınıflar, nesneler, metotlar, kalıtım, iteratörler, jeneratörler, lambda ifadeleri, Unicode vs.) İnteraktif sınıf içi tartışmalar, haftalık alıştırmalar ve dersin öğretim elemanlarından yakın destek. Öğrencilerin en fazla ikişerli gruplar halinde bir dizi mini projeler yaparak derslerde öğrendiklerini gerçek boyutlardakilere yakın ve kullanıcısına katma değer sağlayabilecek kollektif zeka projelerinde uygulamalı olarak pekiştirmeleri beklenir. Dersle ilgili bütün iletişim ve etkileşimler "Piazza" ortamından gerçekleştirilir.

Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
1) İleri düzey Python kavramlarına aşinalık.
2) İşbirlikçi filtreleme ve temel kümeleme teknikleri.
3) Arama motorlarının çalışma prensipleri hakkında bilgi.
4) Proje geliştirme kültürüne giriş.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Dersin tanıtımı. İleri düzey Python kavramları: list comprehension, kümeler, defaultdict. I - Bölüm 19
2) İleri düzey Python kavramları: iteratörler, jeneratörler, dekoratörler. I - Bölüm 19
3) İleri düzey Python kavramları: lambda ifadeler, map-filter-reduce. I - Bölüm 19
4) İleri düzey Python kavramları: fonksiyon argümanlarının bir araya toplanması, shelve, Unicode işleme. I - Bölüm 19
5) İleri düzey Python kavramları: istisnalar, veritabanı modülleri: shelve, dbm. I - Bölüm 19
6) Kollektif zeka ve makine öğrenmesine giriş. İşbirlikçi filtreleme. II - Bölüm 1
7) Vaka çalışması : Öneri motorları II - Bölüm 2
8) Verilerde grupları keşfetme ve kümeleme/öbekleme (clustering). II - Bölüm 3
9) Verilerde grupları keşfetme ve kümeleme (devam) II - Bölüm 3
10) Düzenli ifadeler ve basit veri madenciliği. Web’de emekleme ve tırmalama. II - Bölüm 4
11) Vaka çalışması: arama motorları: endeksleme ve sorgulama. II - Bölüm 4
12) Vaka çalışması (devam): arama motorları; sıraya koyma. II - Bölüm 4
13) Sınıflandırma, bir sınıflandırıcı inşa etme ve eğitme. II - Bölüm 6
14) Vaka çalışması: Sınıflandırıcı kullanarak doküman ayrıştırma ve filtreleme. II - Bölüm 6

Kaynaklar

Ders Notları / Kitaplar: 1.Think Python, 2nd Edition, How to Think Like a Computer Scientist, Allen Downey, Green Tea Press (2015).
https://greenteapress.com/wp/think-python-2e/
2. Programming Collective Intelligence by Toby Segaran. O’Reilly Press (2007, 1st edition).
Diğer Kaynaklar:

Ders - Program Öğrenme Kazanım İlişkisi

Course Learning Outcomes

1

2

3

4

Program Kazanımları
1) Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimine; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinde kullanabilme becerisine sahiptir. 2 2 2 3
2) Bir sistemi, süreci veya ürünü ekonomik, çevre, sosyo-politik, etik, sağlık, güvenlik, üretilebilirlik ve sürdürülebilirlik ile ilişkili gerçekçi koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisine sahiptir. 3 2 2 3
3) Mühendislik problemlerini tanımlama, formüle etme ve çözme; çözüm için gerekli yöntemi seçme ve uygulama becerisine sahiptir. 3 2 3 2
4) Mühendislik uygulamalarında karşılaşılan problemlerin analizi ve çözümü için gerekli olan modern teknikleri geliştirme, seçme ve kullanma; bilişim teknolojilerini etkin bir şekilde kullanma becerisine sahiptir. 3 3 3 3
5) Mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisine sahiptir. 3 2 2 3
6) Çok disiplinli takımlarda etkin biçimde çalışabilme becerisine sahiptir. 2 2 2 3
7) Sözlü ve yazılı etkin iletişim kurma becerisi ile etkin rapor yazma ve yazılı raporları anlama, etkin sunum yapabilme becerisine sahiptir. 2 2 2 3
8) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgiye sahiptir. 1 2 2 2
9) Bir yabancı dili Avrupa Dil Portföyü kriteri açısından en az B1 düzeyinde kullanabilme becerisine sahiptir.
10) Yaşam boyu öğrenmenin gerekliliği bilincine sahiptir; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisine sahiptir. 3 1 1 3
11) Bilgisayar yazılımı ile birlikte bilişim ve iletişim teknolojilerini Avrupa Bilgisayar Kullanma Lisansı İleri düzeyinde kullanabilme becerisine sahiptir. 3 3 3 3
12) Proje yönetimi ve risk yönetimi uygulamaları hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgiye sahiptir. 1 1 1 3
13) Mühendislik uygulamalarının evrensel ölçekte çevre, sağlık ve güvenlik üzerindeki etkileri ve hukuksal sonuçları hakkında bilgi ve farkındalığa sahiptir. 1 1 1 1
14) Yazılım alternatiflerini irdeleyerek bilgisayar tabanlı sistemlerin modellenmesi ve tasarımında, algoritma prensiplerini, matematiksel temelleri ve bilgisayar bilimleri teorisini uygulama becerisine sahiptir. 3 2 2 3
15) Türevsel denklemler, integral hesapları, doğrusal cebir, mantık ve ayrık matematik içerecek şekilde ileri matematik eğitimi ile birlikte yazılım mühendisliğinde veri yapıları ve algoritmalar, programlama dilleri, işletim sistemleri, bilgisayar güvenliği, bilgisayar teorisi, ağ programlama ve makine öğrenmesi alanlarını kapsayan mühendislik eğitimine sahiptir. 1 2 2 1

Ders - Öğrenme Kazanımı İlişkisi

Etkisi Yok 1 En Düşük 2 Orta 3 En Yüksek
       
Dersin Program Kazanımlarına Etkisi Katkı Payı
1) Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimine; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinde kullanabilme becerisine sahiptir. 2
2) Bir sistemi, süreci veya ürünü ekonomik, çevre, sosyo-politik, etik, sağlık, güvenlik, üretilebilirlik ve sürdürülebilirlik ile ilişkili gerçekçi koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisine sahiptir. 3
3) Mühendislik problemlerini tanımlama, formüle etme ve çözme; çözüm için gerekli yöntemi seçme ve uygulama becerisine sahiptir. 3
4) Mühendislik uygulamalarında karşılaşılan problemlerin analizi ve çözümü için gerekli olan modern teknikleri geliştirme, seçme ve kullanma; bilişim teknolojilerini etkin bir şekilde kullanma becerisine sahiptir. 3
5) Mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisine sahiptir. 3
6) Çok disiplinli takımlarda etkin biçimde çalışabilme becerisine sahiptir. 2
7) Sözlü ve yazılı etkin iletişim kurma becerisi ile etkin rapor yazma ve yazılı raporları anlama, etkin sunum yapabilme becerisine sahiptir. 2
8) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgiye sahiptir. 2
9) Bir yabancı dili Avrupa Dil Portföyü kriteri açısından en az B1 düzeyinde kullanabilme becerisine sahiptir.
10) Yaşam boyu öğrenmenin gerekliliği bilincine sahiptir; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisine sahiptir. 2
11) Bilgisayar yazılımı ile birlikte bilişim ve iletişim teknolojilerini Avrupa Bilgisayar Kullanma Lisansı İleri düzeyinde kullanabilme becerisine sahiptir. 3
12) Proje yönetimi ve risk yönetimi uygulamaları hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgiye sahiptir. 2
13) Mühendislik uygulamalarının evrensel ölçekte çevre, sağlık ve güvenlik üzerindeki etkileri ve hukuksal sonuçları hakkında bilgi ve farkındalığa sahiptir. 1
14) Yazılım alternatiflerini irdeleyerek bilgisayar tabanlı sistemlerin modellenmesi ve tasarımında, algoritma prensiplerini, matematiksel temelleri ve bilgisayar bilimleri teorisini uygulama becerisine sahiptir. 3
15) Türevsel denklemler, integral hesapları, doğrusal cebir, mantık ve ayrık matematik içerecek şekilde ileri matematik eğitimi ile birlikte yazılım mühendisliğinde veri yapıları ve algoritmalar, programlama dilleri, işletim sistemleri, bilgisayar güvenliği, bilgisayar teorisi, ağ programlama ve makine öğrenmesi alanlarını kapsayan mühendislik eğitimine sahiptir. 1

Ölçme ve Değerlendirme

Yarıyıl İçi Çalışmaları Aktivite Sayısı Katkı Payı
Laboratuvar 6 % 30
Projeler 4 % 40
Final 1 % 30
Toplam % 100
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI % 70
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI % 30
Toplam % 100

İş Yükü ve AKTS Kredisi Hesaplaması

Aktiviteler Aktivite Sayısı İş Yükü
Ders Saati 16 48
Laboratuvar 16 32
Sınıf Dışı Ders Çalışması 16 48
Proje 7 14
Final 2 6
Toplam İş Yükü 148