Dersin Amacı: |
Paralel programlama, bilgisini artırmak, mantığını kavramak ve becerilerini geliştirmek amacıyla çeşitli paralel programlama teknikleri ve konseptleri üzerine odaklanan bir öğrenme sürecidir. Bu alanda edinilen bilgi, paralel programlama paradigmalarını anlama ve uygulama yeteneğini geliştirmeyi hedefler. Aynı zamanda, çoklu işlemlerin ve iş parçacıklarının etkili bir şekilde yönetilmesi, kaynakların verimli bir şekilde kullanılması ve paralel hesaplama modellerinin anlaşılması gibi konular üzerine odaklanarak, paralel programlama becerilerini artırmayı amaçlar. |
Dersin İçeriği: |
C programlama dili kullanılarak, bilgisayar programcılığında belirli bir deneyime sahip olan öğrencilere, paralel programlama temelleri ile düşünmeye ve bunun yanı sıra paralel kod yazma becerisi geliştirebilmelerini hedefleyen bir derstir. Derste MPI, OpenMP gibi paralel programlama kütüphanelerinden yararlanılıp, etkin kullanımları uygulamalı olarak öğretilecektir. Dersler interaktif bir şekilde, sınıf içi alıştırmalarla desteklenerek ve öğretim elemanının aktif destekleriyle işlenecektir. |
Hafta |
Konu |
Ön Hazırlık |
1) |
Dersin tanıtımı, Paralel Programlama temel kavramlar. |
|
2) |
Paralel programlama terminolojisi, von Neumann mimarisi, Flynn's Taksonomi
kavramları. |
|
3) |
Donanım ve Yazılım seviyesinde paralel yapılar. Ortak bellek (OpenMP) ve dağıtık
bellek (MPI) kavramları. |
|
4) |
MPI’a giriş. Printf “Hello World, ben processor 0” “Hello World, ben processor 1” |
|
5) |
MPI’ Point to Point iletişim. Send Recv uygulamaları.
|
|
6) |
MPI uygulamaları. Kollektif iletişim Bcast Reduce uygulamaları.
|
|
7) |
MPI uygulamaları. Kollektif iletişim Scatter Gather uygulamaları.
|
|
8) |
MPI Uygulama Projesi
|
|
9) |
OpenMP’ye giriş. Directive formatları. Paralel bölge açma.
|
|
10) |
OpenMP uygulamaları. İki array toplama ekrana yazdırma.
|
|
11) |
OpenMP uygulamaları. Farklı iş parçacıkları tarafından farklı çalışma bloklarının yapılacağını gösteren basit bir program.
|
|
12) |
OpenMP Uygulama Projesi
|
|
13) |
GPU programlama temelleri.
|
|
14) |
Proje Sunumları.
|
|
15) |
Final sınav |
|
|
Dersin Program Kazanımlarına Etkisi |
Katkı Payı |
1) |
Problem çözme ve analitik düşünme yeteneklerini kazanır. |
3 |
2) |
Bilgisayar programlama, donanım ve yazılım temellerini, temel bilgisayar kavramlarını öğrenir. |
3 |
3) |
Problemlere göre algoritmalar geliştirir, temel algoritmalardan problemine uygun olanları ayırt etme becerisi kazanır. |
3 |
4) |
Nesneye yönelik programlama konseptini ve web programlamayı kavrar. |
3 |
5) |
Sayı tabanı sistemleri, temel elektronik ve bilgisayar donanımı bilgisini öğrenir. |
3 |
6) |
Mobil programlama becerisi edinir, mobil platformlar için uygulamalar geliştirir. |
3 |
7) |
Veritabanı tasarım ve kodlamasını yapar. |
3 |
8) |
Bilgisayar ağları, açık kaynak kodlu işletim sistemleri programlamayı ve kullanmayı öğrenir. |
3 |
9) |
İngilizce dilini etkin bir biçimde kullanır. |
3 |
10) |
Programlamanın ihtiyaçlarına göre uygun veri yapıları kullanmayı öğrenir. |
3 |
11) |
Bireysel ya da takım olarak yazılım geliştirir. |
3 |
12) |
Alanındaki gelişmeleri, son teknoloji araçlarını/uygulamalarını takip eder. |
3 |
13) |
Mesleki ve etik sorumluluk bilinci kazanır, meslek etiği farkındalığına sahiptir. |
3 |