Yazılım Mühendisliği (İngilizce) | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu: | COE011 | ||||
Ders İsmi: | Paralel Hesaplama | ||||
Ders Yarıyılı: |
Güz Bahar |
||||
Ders Kredileri: |
|
||||
Öğretim Dili: | İngilizce | ||||
Ders Koşulu: | |||||
Ders İş Deneyimini Gerektiriyor mu?: | Hayır | ||||
Dersin Türü: | Bölüm/Program Seçmeli | ||||
Dersin Seviyesi: |
|
||||
Dersin Veriliş Şekli: | Yüz yüze | ||||
Dersin Koordinatörü: | Doç. Dr. AMIR SEYYEDABBASI | ||||
Dersi Veren(ler): | Dr. Öğr. Üyesi Amir Seyyedabbasi | ||||
Dersin Yardımcıları: |
Dersin Amacı: | Paralel Hesaplama kavramları, Paralel Programlama Becerileri, Paralel Algoritmalar ve Veri Yapıları, Paralel Hesaplama Mimarileri hakkında genel bir bakış sunmayı amaçlamaktadır. |
Dersin İçeriği: | Dersin içeriği, paralel hesaplamanın temel kavram ve ilkelerinden, paralel programlama dillerinin (OpenMP,MPI, CUDA) kazanılmasından, paralel programların performansını optimize etme tekniklerinden, yaygın hesaplama problemlerini çözmek için paralel algoritmaların tasarımı ve analizinden oluşur. |
Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Paralel performans, hızlanma ve verimlilik kavramlarını kullanabilirler. 2) Temel Paralel Algoritmaları analiz edebilirler, programlama amacıyla kullanabilirler. 3) MPI kullanarak Dağıtık Bellek Programları yazabilirler. 4) OpenMP ve Pthreads kullanarak Paylaşımlı Bellek Programları yazabilirler. 5) CUDA kullanarak GPU tabanlı paralel programlar yazabilirler. |
Hafta | Konu | Ön Hazırlık |
1) | Paralel hesaplamaya giriş, genel ilkeler, taksonomi | |
2) | Paralel Hesaplama Mimarileri, Donanım ve Yazılım 1 | |
3) | Paralel Hesaplama Mimarileri, Donanım ve Yazılım 2 | |
4) | MPI ile Dağıtılmış Bellekli Programlama (1) | |
5) | MPI ile Dağıtılmış Bellekli Programlama (2) | |
6) | Paralel Bölümleme Stratejileri | |
7) | Yük Dengeleme | |
8) | Ara Sınav | |
9) | Pthreads ile Paylaşılan Bellek Programlama | |
10) | Paylaşılan bellek programlama -1 (OpenMP) | |
11) | Paylaşılan bellek programlama -2 (OpenMP) | |
12) | CUDA ile GPU programlama | |
13) | CUDA ile GPU programlama | |
14) | Dönem Projesi Sunumları |
Ders Notları / Kitaplar: | An Introduction to Parallel Programming 2nd Edition. Peter S. Pacheco, Matthew Malensek Introduction to Parallel Computing, A. Grama, A. Gupta, G.Karypis, V. Kumar, Addison Wesley. |
Diğer Kaynaklar: | Parallel Computing, Theory and practice, M.J.Quinn, McGraw Hill. Parallel programming with MPI, P.S. Pacheco.Morgan Kaufmann. GPU Gems 1&2, Nvidia. |
Course Learning Outcomes | 1 |
2 |
3 |
4 |
5 |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Program Kazanımları | |||||||||||
1) Matematik, fen bilimleri ve yazılım mühendisliğine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisi. | |||||||||||
2) Karmaşık yazılım mühendisliği problemlerini tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi. | |||||||||||
3) Karmaşık bir yazılım sistemini, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama, gerçekleştirme, sınama, doğrulama, ölçme ve bakımını yapma becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi. | 2 | 2 | 2 | 2 | |||||||
4) Yazılım mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi. | 2 | 3 | 3 | 3 | 3 | ||||||
5) Karmaşık mühendislik problemlerinin veya yazılım mühendisliği araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi. | |||||||||||
6) Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi. | |||||||||||
7) Sözlü ve yazılı etkin iletişim kurma becerisi; en az bir yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, tasarım ve üretim raporları hazırlayabilme, etkin sunum yapabilme, açık ve anlaşılır talimat verme ve alma becerisi. | |||||||||||
8) Yaşam boyu öğrenmenin gerekliliği konusunda farkındalık; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisi. | |||||||||||
9) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk ve yazılım mühendisliği uygulamalarında kullanılan standartlar hakkında bilgi. | |||||||||||
10) Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi. | |||||||||||
11) Yazılım mühendisliği uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın yazılım mühendisliği alanına yansıyan sorunları hakkında bilgi; yazılım mühendisliği çözümlerinin hukuksal sonuçları konusunda farkındalık. |
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 yazılım mühendisliğine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisi. | |
2) | Karmaşık yazılım mühendisliği problemlerini tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi. | |
3) | Karmaşık bir yazılım sistemini, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama, gerçekleştirme, sınama, doğrulama, ölçme ve bakımını yapma becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi. | 2 |
4) | Yazılım mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi. | 3 |
5) | Karmaşık mühendislik problemlerinin veya yazılım mühendisliği araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi. | |
6) | Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi. | |
7) | Sözlü ve yazılı etkin iletişim kurma becerisi; en az bir yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, tasarım ve üretim raporları hazırlayabilme, etkin sunum yapabilme, açık ve anlaşılır talimat verme ve alma becerisi. | |
8) | Yaşam boyu öğrenmenin gerekliliği konusunda farkındalık; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisi. | |
9) | Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk ve yazılım mühendisliği uygulamalarında kullanılan standartlar hakkında bilgi. | |
10) | Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi. | |
11) | Yazılım mühendisliği uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın yazılım mühendisliği alanına yansıyan sorunları hakkında bilgi; yazılım mühendisliği çözümlerinin hukuksal sonuçları konusunda farkındalık. |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Projeler | 1 | % 30 |
Ara Sınavlar | 1 | % 30 |
Final | 1 | % 40 |
Toplam | % 100 | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 60 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % 40 | |
Toplam | % 100 |
Aktiviteler | Aktivite Sayısı | Aktiviteye Hazırlık | Aktivitede Harçanan Süre | Aktivite Gereksinimi İçin Süre | İş Yükü | ||
Ders Saati | 13 | 0 | 2 | 26 | |||
Laboratuvar | 13 | 0 | 2 | 26 | |||
Sınıf Dışı Ders Çalışması | 13 | 2 | 26 | ||||
Proje | 1 | 25 | 1 | 26 | |||
Ara Sınavlar | 1 | 10 | 2 | 12 | |||
Final | 1 | 10 | 2 | 12 | |||
Toplam İş Yükü | 128 |