| 
                
             | 
            
                 
                
    | COM3000 | System Programming | 3+0+0 | AKTS:5 |  | Yıl / Yarıyıl | Bahar Dönemi |  | Ders Duzeyi | Lisans |  | Yazılım Şekli | Zorunlu |  | Bölümü | BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ |  | Ön Koşul | COM1002-Programming - II, COM1000-Introduction to Computer Programming veya COM2001-Object Oriented Programming |  | Eğitim Sistemi | Yüz yüze  |  | Dersin Süresi | 14 hafta - haftada 3 saat teorik |  | Öğretim Üyesi | Doç. Dr. Hüseyin PEHLİVAN |  | Diğer Öğretim Üyesi | Yok |  | Öğretim Dili | İngilizce |  | Staj | Yok |  |   |   | Dersin Amacı: |  | Unix pencere sistemi, düzenli ifadeler, kullanıcı çevre yapılandırması, shell betikleri yazımı, çeşitli system programlama araçları (gcc, gdb, make, sed ve awk gibi) , işletim sistemi yapıları, dosya sistemi işlemleri, system çağrıları ve kütüphaneleri, süreç haberleşmesi, pipe'lar ve sinyaller başta olmak üzere Unix çevrelerinde betik ve system programlama dillerine bir giriş yapmaktır. |  
 | Öğrenim Kazanımları | PÖKK | ÖY |  | Bu dersi başarı ile tamamlayan öğrenciler  : |   |    |  | ÖK - 1 :  | komut satırından shell çevrelerini yönetebilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 2 :  | shell ve sistem komutları ile nasıl ilgilenildiğini açıklayabilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 3 :  | çeşitli sistem görevleri için shell betikleri yazabilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 4 :  | düzenli ifadeleri kullanarak herhangi bir metin dosyası verisini işleyebilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 5 :  | yüksek seviyeli programlama dillerinde programlar yazmak için yazılım geliştirme araçlarını kullanabilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 6 :  | C yada C++ programları içerisinden system çağrısı arayüzünü kullanabilir. | 1.2 - 1.3 - 2.1 | 1 |  | ÖK - 7 :  | sistem çağrıları yardımıyla dosya ve süreç alt sistemlerini yönetebilir. | 1.2 - 1.3 - 2.1 | 1 |  |  PÖKK :Program öğrenim kazanımlarına katkı, ÖY : Ölçme ve değerlendirme yöntemi (1: Yazılı Sınav, 2: Sözlü Sınav, 3: Ev Ödevi, 4: Laboratuvar Çalışması/Sınavı, 5: Seminer / Sunum, 6: Dönem Ödevi / Proje),ÖK : Öğrenim Kazanımı   |  |   |    
			 | Unix sistemleri: Unix sürümleri, katmanlar, sistem girişi, komut çalıştırma. Unix dosya sistemleri: Çalışma dizini, dosya hiyerarşisi, sistem yolları, standart dizinler, dosya tipleri, dosya işleme, dosya izinleri, dosya ismi yerdeğiştirme, dosya sistemleri. Shell işleçleri: Standard dosyalar, dosya tanımlayıcılar, G/Ç yönlendirme, pipe'lar, süreçler, süzgeçler, haberleşme. Düzenli ifadeler (RE) : RE'leri kullanan komutlar, egrep komutu, meta karakterler. Pencere sistemi: X pencereleri, X sunucusu, pencere yöneticileri, masaüstü çevresi. Shell çevreleri: Komut satırı ayrıştırma, metne bağlı tamamlama, takma isimler, komut satırını düzenleme, komut geçmişi. Shell programlama: Shell değişkenleri, tamsayı aritmetiği, değişken yerdeğiştirme, komut satırı argümanları, komut yerdeğiştirme, control yapıları, fonksiyon tanımlama ve çağırma, giriş betikleri, shell betikleri. Program geliştirme araçları: Kaynak dosyaların oluşturulması, ayrık derleme, koşma ve test, gcc ve make komutları. Sistem programlama: Dosyalar, dizinler, süreçler, saklamalı G/Ç, standart G/Ç, standart kanallar, system çağrısı arayüzü. Dosya işlemleri: Temel dosya G/Ç, dosya tanımlayıcıları, dosyaları oluşturma ve açma, dosyaları okuma ve yazma, dosya araştırma, çekirdek işlemler, dosya kontrolü, aygıt dosyaları. Süreç işlemleri: Süreçler oluşturma, programları çalıştırma, çıkış durumu, sahipsiz süreçler, pipe sistem çağrısı, sinyaller. |  
			 |   |   
 | Haftalık Detaylı Ders Planı |  |  Hafta | Detaylı İçerik | Önerilen Kaynak |  |  Hafta 1 | UNIX Sistemlerine Giriş |  |  |  Hafta 2 | Unix Dosya Sistemleri |  |  |  Hafta 3 | Metin Düzenleyiciler ve Komut Yorumlayıcı İşleçleri |  |  |  Hafta 4 | Düzenli İfadeler ve Unix Pencere Sistemi |  |  |  Hafta 5 | Unix Yorumlayıcı Çevreleri ve Script Kavramı |  |  |  Hafta 6 | Betik Programlama - I |  |  |  Hafta 7 | Betik Programlama - II |  |  |  Hafta 8 | Program Geliştirme Araçları (gcc, make, gdb) ve Diğer Araçlar (sed, awk, perl) |  |  |  Hafta 9 | Arasınav |  |  |  Hafta 10 | Dosya Yönetimi - I (open, creat, read, write, lseek) |  |  |  Hafta 11 | Dosya Yönetimi - II (chmod, chdir, link, fcntl, ioctl) |  |  |  Hafta 12 | Süreç Yönetimi - I (fork, exec, wait) |  |  |  Hafta 13 | Süreç Yönetimi - II (pipe, dup, close) |  |  |  Hafta 14 | Soketler |  |  |  Hafta 15 | Temel Unix Sistem Yönetimi |  |  |  Hafta 16 | Dönem sonu sınavı |  |  |   |   
 | 1 | Kochan, S. G., Wood, P., 2016, Shell Programming in Unix, Linux and OS X, 4th ed., Addison-Wesley Professional, 416 p. |  |  | 2 | Palakollu, S. M., 2021, Practical System Programming with C - Pragmatic Example Applications in Linux and Unix-Based Operating Systems, Apress, 286 p. |  |  |   |   
 | 1 | Wang, K. C., 2018, Systems Programming in Unix/Linux, Springer,  468 p. |  |  | 2 | Harwani, B. M., 2013, Unix  and Shell Programming, Oxford University Press, 734 p. |  |  |   |   
 |  Ölçme Yöntemi   |  | Yöntem | Hafta | Tarih | Süre (Saat) | Katkı (%) |  |  Arasınav |  9 |  21/04/2024 |  2 |  50 |  |  Dönem sonu sınavı |  16 |  04/06/2024 |  2 |  50 |  |   |   
 |  Öğrenci Çalışma Yükü  |  | İşlem adı | Haftalık süre (saat) | Hafta sayısı | Dönem toplamı |  |  Yüz yüze eğitim |  3 |  14 |  42 |  |  Sınıf dışı çalışma |  5 |  14 |  70 |  |  Arasınav için hazırlık |  15 |  1 |  15 |  |  Arasınav  |  2 |  1 |  2 |  |  Dönem sonu sınavı için hazırlık |  20 |  1 |  20 |  |  Dönem sonu sınavı |  2 |  1 |  2 |  | Toplam Çalışma Yükü |  |  | 151 |  
  
                 
             |