Sistem Programlama ve İleri C Uygulamaları (I)


Giriş ve Temel Kavramlar

  • Sistem Programlama Nedir?
  • İşletim Sistemlerinin Tarihsel Gelişimi
  • Orijinal Kod Temeline Sahip Olan ve Olmayan İşletim Sistemleri
  • Dağıtım (Distribution) Kavramı ve İşletim Sistemlerinin Dağıtımları
  • Programlamadaki Katmanlı Yapılar
  • API Kavramı
  • Kütüphane ve Framework Kavramları
  • CPU, Mikroişlemci, Mikrodenetleyici SOC (System on Chip) ve SBC (Single-Board Computer) Kavramları
  • C’de Tanımsız Davranış, Derleyiciye Bağlı Davranış ve Belirsiz Davranış Kavramları
  • C Derleyicilerinin Hata Mesajları ve Standartlara Uyum
  • Kursta Kullanılacak Olan Nispeten Az Bilinen Bazı Standart C Fonksiyonları
  • Geçici Dosya Kavramı ve Geçici Dosyaların Oluşturulması
  • Windows, UNIX/Linux ve Mac OS X Sistemlerinde C Programlarının Derlenerek Çalıştırılması
  • GNU Tarzı Komut Satırı Argümanları
  • Komut Satırı Argümanlarının Ayrıştırılması
  • İşletim Sistemlerinin Sistem Fonksiyonları, POSIX Fonksiyonları ve Windows API Fonksiyonları
  • Proses Kavramı
  • Değişkenlerin Harflandirilmesi
  • Macar Notasyonu ve Windows API Fonksiyonlarında Kullanılan typedef Tür İsimleri
  • Fonksiyonlarda Hata Kontrolleri
  • Windows API Fonksiyonlarının Başarısızlık Nedenlerinin Elde Edilmesi ve Rapor Edilmesi
  • UNIX/Linux Sistemlerindeki POSIX Fonksiyonlarının Başarısızlık Nedenlerinin Elde Edilmesi ve Rapor Edilmesi
  • C Programlarında Dosya Organizasyonu
  • Handle Kavramı ve Handle Sistemleri
  • Windows ve UNIX/Linux Sistemlerinde Fonksiyon Çağırma Biçimleri (Calling Conventions)
  • C’de Fonksiyon Göstericilerinin Kullanımı
  • Türden Bağımsız İşlem Yapabilen Fonksiyonların Tasarımı
  • Göstericiyi Gösteren Göstericiler
  • Dizi Göstericileri
  • Göstericilere İlişkin Karmaşık Bildirimler
  • Referans Yerelliği (Locality of Reference) Kavramı ve Programlamadaki Önemi

İşletim Sistemlerinin Dosya Sistemleri

  • İşletim Sistemlerinin Dosya İşlemlerini Yapan Sistem Fonksiyonları
  • Windows Sistemlerinde Temel Dosya İşlemlerini Yapan API Fonksiyonları
  • UNIX/Linux Sistemlerinde Temel Dosya İşlemlerini Yapan POSIX Fonksiyonları
  • Windows Sistemlerinde Dosya Özellikleri
  • UNIX/Linux Sistemlerinde Dosya Özellikleri
  • Windows Sistemlerinde Dosya Nesneleri ve Proseslerin Handle Tabloları
  • UNIX/Linux Sistemlerinde Dosya Nesneleri ve Dosya Betimleyicilerin Anlamı
  • Windows Sistemlerinde Dosya Sistemi İle İlgili Yardımcı API Fonksiyonları
  • UNIX/Linux Sistemlerinde Dosya Sistemi İle İlgili Yardımcı POSIX Fonksiyonları
  • Windows Sistemlerinde Dizin İçerisindeki Dosyaların Elde Edilmesi
  • UNIX/Linux Sistemlerinde Dizin İçerisindeki Dosyaların Elde Edilmesi
  • Dizin Değişiklerinin Otomatik Olarak İzlenmesi

Özyinelemeli İşlemler

  • Özyineleme Kavramı
  • Özyinelemeli Fonksiyonlar
  • Özyinelemeli Fonksiyonlara İlişkin Örnekler
  • Dizin Ağacının Özyinelemeli Biçimde Dolaşılması

Proseslerin Bellek Alanları

  • Prosesin İşletim Sistemi Tarafından Yüklenmesi
  • Stack Kavramı
  • Proseslerin (Thread’lerin) Stack’leri
  • Data ve BSS Bölümleri
  • Kod (Text) Bölümleri
  • Heap Kavramı ve Proseslerin Heap Organizasyonları
  • Windows Sistemlerinde Heap Organizasyonı
  • UNIX/Linux Sistemlerinde Heap Organizasyonu

Bellek Sistemleri

  • Birincil ve İkincil Bellekler
  • RAM ve ROM Kavramları
  • RAM ve ROM çeşitleri
  • Hard Disklerin Genel Yapısı
  • SSD Disklerin Genel Yapısı
  • İkincil Belleklerden Veri Transferi
  • Önbellek (Cache) Sistemleri
  • Önbellek Terminolojisi
  • Çok Karşılaşılan Önbellek Sistemleri
  • Önbellek Sistemlerinin Tasarımı
  • C’nin Standart Dosya Fonksiyonlarınının Kullandığı Tampon (Önbellek) Mekanizması
  • stdin, stdout ve stderr Dosyalarının Tamponlama Mekanizmaları

İşlemcilerin Koruma ve Sayfalama Mekanizmaları ve Sanal Bellek Kullanımı

  • İşlemcilerin Koruma Mekanizmasının Anlamı
  • İşlemcilerin Bellek ve Komut Koruması
  • Proseslerin Çekirdek Moduna Geçmesi ve Geri Dönmesi
  • Çekirdek Modülleri ve Ayggıt Sürücülerin Anlamı
  • İşlemcilerin Sayfalama Mekanizmasının Anlamı
  • Sanal Bellek Kullanımı
  • Proseslerarası Geçiş

Giriş Çıkış Yönlendirmeleri ve Boru İşlemleri

  • Giriş/Çıkış Yönlendirmeleri (IO Redirection)
  • Komut Satırında Boru İşlemleri

Prosesler ve İşletim Sisteminin Proses Yönetimleri

  • Zaman Paylaşımlı Çalışma Modeli -İşletim Sistemlerinin Çizelgeleyici Alt Sistemleri
  • Bloke Kavramı, Processlerin ve Thread’lerin Bloke Olması
  • Çalışma Kuyrukları (Run Queues) ve Bekleme Kuyrukları (Wait Queues)
  • Proseslerin Çevre Değişkenleri
  • IO Yoğun ve CPU Yoğun Prosesler
  • Windows’ta Proseslerin Yaratılması ve Sonlanması
  • UNIX/Linux Sistemlerinde Proseslerin Yaratılması ve Sonlanması (fork ve exec işlemleri)
  • Proseslerarasında Altlık-Üstlük (Parent-Child) İlişkileri
  • Proseslerin Çıkış (Exit) Kodlarının Elde Edilmesi
  • UNIX/Linux Sistemlerinde Hortlak (Zombie) Prosesler
  • Windows ve UNIX/Linux Sistemlerinde Proses Listesinin Elde Edilmesi
  • Proseslerin Kullandığı Kaynaklar

Proseslerarası Haberleşme (Interprocess Communication)

  • Proseslerarası Haberleşmenin Anlamı
  • Aynı Makinenin Prosesleri Arasındaki Haberleşmelerde ve Farklı Makinelerin Prosesleri Arasındaki Haberleşmelerde Kullanılan Yöntemler
  • Windows’ta Borular Yoluyla Proseslerarası Haberleşme
  • UNIX/Linux Sistemlerinde Borular Yoluyla Proseslerarası Haberleşmeler
  • İsimsiz ve İsimli Borular
  • Windows Sistemlerinde Paylaşılan Bellek Alanları
  • UNIX/Linux Sistemlerinde Paylaşılan Bellek Alanları
  • Windows Sistemlerinde Bellek Tabanlı Dosyalar
  • UNIX/Linux Sistemlerinde Bellek Tabanlk Dosyalar
  • UNIX/Linux Sistemlerinde Mesaj Kuyrukları

Thread’lerle İşlemler

  • Thread Kavramı
  • Thread’lerin Stack’leri
  • Thread’lerin Birbirleriyle Haberleşme Biçimleri
  • Windows Sistemlerinde Thread’lerin Yaratılması ve Sonlanması
  • UNIX/Linux Sistemlerinde Thread’lerin Yaratılması ve Sonlanması
  • Thread Senkronizasyonu
  • Kritik Kod Blokları
  • Windows Sistemlerinde CriticalSection Nesneleri İle Kritik Kodların Oluşturulması
  • Windows Sistemlerinde Mutex Nesnelerinin Kullanımı
  • UNIX/Linux Sistemlerinde Mutex Nesnelerinin Kullanımı
  • Windows Sistemlerinde Semaphore Nesneleri
  • UNIX/Linux Sistemlerinde Semaphore Nesneleri
  • Üretici-Tüketici Probleminin Windows ve UNIX/Linux Sistemlerinde Çözümü
  • Windows’ta Event Senkronizasyon Nesneleri
  • UNIX/Linux Sistemlerinde Koşul Değişkenleri
  • Windows Sistemlerinde Okuma/Yazma Kilitleri
  • UNIX/Linux Sistemlerinde Okuma/Yazma Kilitleri
  • Örnek Senkronizasyon Problemleri: Uyuyan Berber Problemi, Yemek Yiyen Filozoflar Problemi vs.
  • Windows’ta Atomik İşlemler ve InterLocked Fonksiyonları
  • UNIX/Linux Sistemlerinde Atomik İşlemler
  • C ve C++’ta Atomik İşlemler
  • Fonksiyonların Thread Güvenliliği
  • Windows’ta Thread Local Storage Kullanımı
  • UNIX/Linux Sistemlerinde Thread Specific Data Kullanımı
  • Thread Havuzları
  • Windows Sistemlerinde Thread’lerin Çizelgelenmesi
  • UNIX/Linux Sistemlerinde Thread’lerin Çizelgelenmesi

Veri Yapıları ve Algoritmalar

  • Algoritma Kavramı
  • Algoritmanın Karmaşıklığı
  • Algoritma Karmaşıklığının Hesaplama Yöntemleri
  • Asimtotik Notasyonlar
  • Big O Notasyonu
  • Algoritmaların Sınıflandırılması
  • Sayılar Teorisine Yönelik Algoritmalar
  • Algoritmik Bulmacalar
  • Veri Yapısı Kavramı ve Temel Veri Yapıları
  • Dinamik Diziler, Kullanım Alanları ve Gerçekleştirimleri
  • Bağlı Listeler, Kullanım Alanları ve Gerçekleştirimleri
  • Kuyruk Veri Yapısı, Kullanım Alanları ve Gerçekleştirimleri
  • Stack Veri Yapısı, Kullanım Alanları ve Gerçekleştirimleri
  • Çift Yönlü Dinamik Diziler (Deque), Kullanım Alanları ve Gerçekleştirimleri
  • Sıralama Algoritmaları
  • Arama (Seraching) İşlemleri, İçsel ve Dışsal Arama Kavramları
  • İkili Aramalar
  • Üstel Aramalar
  • Hash Tabloları, Kullanım Alanları, Varyasyonları ve Gerçekleştirimleri
  • Tahsisat Algoritmaları Kullanım Alanları ve Gerçekleştirimleri
  • Çöp Toplayıcı (Garbage Collector) Kavramı, Kullanım Alanları ve Gerçekleştirimleri
  • Ağaç Kavramı, Özellikleri
  • İkili Ağaçlar
  • Ağaçlarda Dolaşım İşlemleri
  • Arama Ağaçları
  • İkili Arama Ağaçları, Kullanım Alanları ve Gerçekleştirimleri
  • İkili Arama Ağaçlarında Dengeleme
  • Heap Ağaçları, Heap Veri Yapısı ve Gerçekleştirimleri
  • Heap Veri Yapısıyla Öncelik Kuyrukları
  • Heap Sort Yöntemi
  • Dışsal (External) Aramalar
  • B-Tree ve B+Tree Ağaçları ve Gerçekleştirimleri
  • Veri Yapılarının Genelleştirilmeleri (Türden Bağımsız Veri Yapılarının Oluşturulması)
  • Graf Veri Yapısı
  • Graf Veri Yapısının Gerçekleştirimleri
  • Graf Veri Yapısında Dolaşım İşlemleri
  • Bazı Tipik Graf Problemlerinin Çözümüne İlişkin Algoritmalar

TCP/IP Protokol Ailesi İle Proseslerarası Haberleşme

  • Protokol Kavramı
  • OSI Katmanlarının Anlamı
  • IP Protokol Ailesine Genel Bakış
  • IP Protokolü
  • TCP ve UDP Protokolleri
  • TCP Protokolü ile Client/Server Haberleşme
  • Soket Kavramı BSD Soket Sistemi
  • Windows Soket API’leri
  • TCP Server Programlarının Yazımı
  • TCP Client Programlarının Yazımı
  • Client ile Server Arasında Haberleşme Teknikleri
  • Çok Client’lı Server Uygulamaları
  • IP Ailesinin Uygulama Katmanına İlişkin Protokoller (POP3, TELNET, HTTP, SSH Protokolleri)
  • UDP Haberleşmesi
  • UDP Client ve Server Programları

Kütüphanelerin Yaratılması ve Kullanılması

  • Windows Sistemlerinde Statik Kütüphanelerin Yaratılması ve Kullanımı
  • UNIX/Linux Sistemlerinde Statik Kütüphanelerin Yaratılması ve Kullanımı
  • Windows Sistemlerinde Dinamik Kütüphanelerin Yaratılması ve Kullanımı
  • UNIX/Linux Sistemlerinde Dinamik Kütüphanelerin Yaratılması ve Kullanımı
  • Windows Sistemlerinde Dinamik Kütüphanelerim Dinamik Yüklenmesi
  • UNIX/Linux Sistyemlerinde Dinamik Kütüphanelerin Dinamik Yüklenmesi

Yazılımsal Araçların Kullanımı

  • Versiyon Takip Sistemleri
  • Git Aracının Kullanılması
  • Github Kullanımı
  • GNU Make, CMake ve QMake Build Araçlarının Kullanımı
  • Valgrind ve Cppcheck Araçlarının Kullanımı
  • Profiler’lar ve GNU gprof Araçlarının Kullanımı
  • Visual Studio Debugger Kullanımı
  • GDB Kullanımı

Veritabanı İşlemleri

  • Veritabanı Yönetim Sistemlerinin Genel Yapısı
  • Gömülü Veritabanı Yönetim Sistemleri
  • C’de Sqlite Kullanımı
  • C’de MySql Kullanımı

Yazılımlarda Test Süreci

  • Genel Olarak Test Süreci
  • Test Yöntemleri
  • Test Otomasyon Araçları Hakkında Genel Bilgiler
  • C’de Birim Testleri

Aşağı Seviyeli Disk İşlemleri

  • Hard Disklerin, DVD ROM’ların, SSD Disklerin ve Flash Disklerin Genel Yapısı
  • Windows’ta Aşağı Seviyeli Disk İşlemleri
  • UNIX/Linux Sistemlerinde Aşağı Seviyeli Disk İşlemleri
  • Windows FAT Dosya Sistemlerinin Disk Organizasyonları
  • Ext2 ve Ext3 Dosya Sistemlerinin Disk Organizasyonları
  • Disk Bölümleme Tabloları
  • Klasik ve UEFI Boot Süreci

Kesme Mekanizması

  • Kesme Kavramı
  • Yazılım ve Donanım Kesmeleri
  • PC Mimarisinde Temel Kesmeler ve İşlevleri
  • Kesmelerin Ele Alınması

Ve diğerleri….

Ön koşul: C Programlama Dilini bilmek veya C Programlama Dili kursunu tamamlamış olmak.

* Ücreti sorunuz.

İleri C++ Advanced C++


Açıklama : Bu kurs C++ dilinde kod yazan ya da C++ dili hakkında temel düzeyde bilgi sahibi olan programcılara ve geliştiricilere yönelik. Kurs katılımcılarının derneğimizde verilen C++ Programlama Dili kursunu tamamlamış olmaları ya da C++ diline temel düzeyde hakim olmaları gerekiyor.

Kursun kapsamı bir hayli geniş. Hem temel C++ kursunda sınırlı süre nedeniyle göremediğimiz Modern C++’a ilişkin önemli araçlar hem de C++11, C++14 ve C++17 standartları ile dile eklenen önemli kütüphane öğeleri anlatılacak. Kursta ayrıca nesne yönelimli programlamaya ilişkin temel kavramlar, SOLID ilkeleri ve tasarım örüntüleri (design patterns) ve bu örüntülerin C++ dilinde kodlanması ayrıntılı olarak işlenecek.

Ön Koşul: C Programlama Dili ve C++ Programlama Dili kurslarını başarıyla bitirmiş olmak ya da kursun gerektirdiği düzeyde bilgi ve deneyime sahip olmak.

* Ücreti sorunuz.

C++ Programcıları için Java


Açıklama : Bu kurs C++ Programcılarının Java Programlama Dilinde uygulama geliştirmelerini sağlamayı amaçlıyor. C++ Java’ya göre daha aşağı seviyeli, daha güçlü, daha ayrıntılı bir semantik yapıya sahiptir. Kursta JAVA Programlama Dili C++ bakış açısıyla ele alınarak açıklanacaktır.

Kurs konularından bazıları aşağıdadır;
•C++ ile Java’nın genel farklılıkları
•Java veri türleri ve operatörlerinin incelenmesi ve C++’tan farklılıkları
•C++ bakış açısıyla Java’da referans kullanımı
•Java deyimlerindeki farklılıklar
•Java sınıflarının genel yapısı
•Java sınıflarının şematik organizasiyonu
•Sınıflarla ilgili işlemler
•Java’da türetme ve polymorphism
•Java sınıflarının kullanımı
•Java’da olmayan C++ özellikleri

Önkoşul: C++ Programlama Dilinde uygulamalı çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C++ ve Nesne Yönelimli Programlamaya Giriş kursuna katılmış olmak.

* Ücreti sorunuz.

C/C++ ile Proje Geliştirme


Bu kurs proje geliştirme süreci üzerinde deneyim kazandırmayı hedefleyen bir uygulama kursudur. Kursta çeşitli pilot projeler sıfırdan ürün haline getirilene kadar tüm adımlardan geçerek gerçekleştirilmektedir. Ayrıca katılımcılara bireysel projeler verilmekte ve bu projeler danışman eşliğinde ortak çalışmalarla yürütülmektedir. Bu kursumuza katılacak adayların aranılan ön koşullar dışında proje geliştirme faaliyetlerine zaman ayırabilmesi kesinlikle istenmektedir. Yeterli zamanı ayıramayacak adayların kurstan elde edebilecekleri kazanımların belirgin olarak düşeceği unutulmamalıdır.

Önkoşul:
Kursa katılacak adayların iyi derecede C/C++ bilgisine sahip olması, Windows ya da Unix/Linux sistemlerinde uygulamalı çalışma yapmış olması ve temel sistem programlama bilgilerine sahip olması gerekmektedir. Tüm katılımcı adaylarıyla öngörüşme yapılmakta ve adaylar yeterlilik bakımından değelendirilmektedir.

* Ücreti sorunuz.

Windows Altında Visual C++ ile Programlama


Bu kurs 32 bit Windows sistemlerinde MFC sınıf sistemini kullanarak uygulama geliştirmek isteyen programcılara yöneliktir.

Kurs konularından bazıları aşağıdadır:
MFC ve API ilişkisi
MFC yardımcı sınıflarının kullanımı
Pencere işlemlerine ilişkin sınıfların kullanımı
Dialog pencereleri ile işlemler
Basit ve karmaşık kontrollerin kullanımı
Grafik uygulamaları
Veritabanı uygulamaları
SDI ve MDI sihirbazlarının kullanımı
Document /View Mimarisinin kullanımı

Önkoşul: C++ Programlama Dilini bilmek ve Windows API Programlama konusunda uygulamalı çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C++ ve Nesne Yönelimli Programlamaya Giriş ve Windows API Programlama kurslarını başarıyla bitirmiş olmak.

* Ücreti sorunuz.

C++ Programcıları için C# ve Visual C++ ile .NET Ortamında Uygulama Geliştirme


Açıklama : Bu kurs C++ programcılarının Windows altında .NET ortamında uygulama geliştirmesini sağlamaya yöneliktir. C# Programlama Dili C++ bilinç düzeyi ile ele alınıp açıklanmaktadır. .NET ortamında uygulama geliştirmeye yönelik tüm konular uygulamalı olarak ele alınacaktır.

Kurs konularından bazıları aşağıdadır:
Microsoft .Net ortamın genel yapısı
C# Programlama Dili
Sınıf yapısı ve Çokbiçimlilik
.NET sınıf sisteminin kullanımı
XML
Web Servisler
Uygulama örnekler

Önkoşul: C++ Programlama Dilini bilmek ve Windows Programlama konusunda uygulamalı çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C++ ve Nesne Yönelimli Programlamaya Giriş kursunu başarıyla bitirmiş olmak.

Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

C++ Programlama Dili


C++ PROGRAMLAMA DİLİ

  • Bu kurs katılımcıların öncelikle C++ programlama dilini çok iyi öğrenmelerini ve yazılım üretiminde profesyonel düzeyde bu dili kullanma becerisi edinmelerini hedeflemektedir.
  • C++ programlama dilinin temel sentaksı ve semantik yapısı ayrıntılı olarak öğretilmektedir.
  • Kursta Modern C++ anlatılmaktadır.C++11, C++14 ve C++17 standartları ile dile eklenen sentaks öğeleri ve standart kütüphane bileşenleri eğitimde ayrıntılı olarak ele alınmaktadır.
  • C++ dilinin standart kütüphanesi ve bu kütüphanenin en önemli bileşeni olan STL (Standard Template Library) ayrıntılı bir şekilde ele alınmaktadır.
  • Nesne Yönelimli Programlama (Object Oriented Programming) konusunda temel bilgiler verilmektedir.
  • Türden Bağımsız Programlama (Generic Programming) konusunda temel bilgiler verilmektedir.
  • Eğitim programı yalnızca C++ dilini öğretmeyi değil, tüm programlama ortamları için iyi, temiz ve etkin kod yazma alışkanlığı kazandırmayı da amaçlamaktadır.
  • Bazı derslerde konuların daha iyi anlaşılmasını sağlamak için veri yapılarına ve algoritmalara (Data structures & algorithms) ilişkin temel kavramlar da anlatılmaktadır.

ÖN KOŞUL

Bu kursta C++ dilinin C dilinden aldığı temel sentaks ve araçlar anlatılmadığından bu programa katılabilmek için belirli seviyede C bilmeniz gerekmektedir.

KURS PROGRAMI

  • C++ Dilinin Genel Tanıtımı
    • C++ dilinin tarihçesi
    • C++ dili ve programlama paradigmaları
    • C++ dili standartları
      • C++98 – 03
      • C++11
      • C++14
      • C++17
      • C++20
    • eski C++ ve modern C++
  • C Dili ve C++ İçindeki C Dili 
    • C dilinden C++ diline geçiş
    • işlev bildirimleri ve tanımlamalarına ilişkin farklılıklar
    • türlere ve tür dönüşümlerine ilişkin farklılıklar
    • C’de geçerli C++’da geçersiz durumlar
    • C99 ve C++
  • Temel Kavramlar
    • tamamlanmış ve eksik türler (complete & incomplete types)
    • ifadelerin değer kategorileri (value categories)
    • tanımsız davranış (undefined behavior)
    • derleyiciye bağlı davranışlar. (implementation defined & implementaion specified)
    • derleyici eklentileri (compiler extensions)
    • kapsam (scope) ve isim arama (name lookup)
    • erişim kontrolü (access control)
    • çift anlamlılık hatası (ambiguity)
  • İlk Değer Verme (Initialization)
    • eş biçimli ilk değer verme (uniform initialization)
      • daraltıcı dönüşümler (narrowing conversions)
      • most vexing parse
    • doğrudan ilk değer verme (direct intialization)
    • kopyalama ile ilk değer verme (copy initialization)
    • varsayılan ilk değer verme (default initialization)
    • bileşiklere ilk değer verme (aggregate initialization)
  • Tür Çıkarımı (Type Deduction)
    • auto belirteci ile tür çıkarımı (auto type deduction)
    • decltype belirteci ile tür çıkarımı
    • sonradan gelen geri dönüş türü (trailing  return type)
    • auto geri dönüş değeri türü (auto return type)
  • enum Sınıfları (enum Classes)
    • geleneksel enum türleri
    • baz tür seçimi (underlying type)
    • tür dönüşümleri (type conversions)
    • enum sınıfları ve kapsam (scope)
  • Sabit İfadeleri (Constant Expressions)
    • const anahtar sözcüğü ve const semantiği
    • const nesneler
    • constexpr anahtar sözcüğü
    • constexpr işlevler
  • İşlevlerin Varsayılan Argüman Alması (Default Arguments)
  • Referans Semantiği
    • sol taraf referansları (L value references)
    • sağ taraf referansları (R value references)
    • referanslar ve const semantiği (references & const semantics)
    • referanslar ile göstericilerin (pointer) karşılaştırılması
    • parametresi referans olan işlevler
    • referans döndüren işlevler
  • İşlev Yüklemesi (Function Overloading)
    • genel kurallar
    • yüklenmiş işlev çözümlenmesi (function overload resolution)
    • const yüklemesi (const overloading)
    • extern “C” bildirimi
    • işlev yüklemesinde dikkat edilmesi gereken durumlar
  • Tür Dönüştürme Operatörleri (Type-cast Operators)
    • static_cast<> operatörü
    • const_cast<> operatörü
    • reinterpret_cast<> operatörü
    • dynamic_cast<> operatörü
  • Sınıflara giriş
    • class scope kavramı
    • sınıflar ve isim arama (name lookup)
    • erişim kontrolü (access control) ve veri gizleme (data hiding)
      • public öğeler
      • private öğeler
      • protected öğeler
    • sınıfların öğeleri (class members)
      • sınıfların veri öğeleri (data members)
        • non-static veri öğeleri
          • mutable veri öğeleri
        • static veri öğeleri
      • sınıfların üye işlevleri
        • non-static üye işlevler
          • const üye işlevler
        • static üye işlevler
      • sınıfların tür öğeleri (type members)
    • sınıfların kurucu işlevleri (constructors)
      • kurucu işlev ilk değer verme listesi (constructor initializer list)
      • delege eden kurucu işlevler (delegating constructors)
    • sınıfların sonlandırıcı işlevleri (destructors)
    • üye işlevlerin çağrılması
    • sınıflar ve const semantiği
      • const sınıf nesneleri
    • geçici sınıf nesneleri (temporary objects)
      • otomatik (implicit) tür dönüşümleri
      • explicit kurucu işlevler
    • mutable anahtar sözcüğü
    • friend bildirimi
      • global işlevlere friend bildirimi
      • sınıfların üye işlevlerine friend bildirimi
      • sınıflara friend bildirimi
      • attorney client idiyomu
  • Sınıfların Özel Üye İşlevleri ve Kopyalama İşlemleri (Special Member Functions & Copy Control)
    • default constructor
    • destructor
    • copy constructor
    • move constructor
    • copy assignment
    • move assignment
    • özel işlevlerin default edilmesi
    • özel işlevlerin delete edilmesi
    • sınıflar ve taşıma semantiği (move semantics)
    • rule of zero
    • rule of five
    • kopyala takas et idiyomu (copy & swap idiom)
    • kopyalamanın eliminasyonu (copy elimination)
  • Operatör Yüklemesi (Operator Overloading)
    • operatör yüklemesine ilişkin genel kurallar
    • üye operatör fonksiyonları
    • global operatör fonksiyonları
    • aritmetik operatörlerin yüklenmesi
    • karşılaştırma operatörlerinin yüklenmesi
    • ++ ve — operatörlerinin yüklenmesi
    • ok operatörü ve içerik operatörlerinin yüklenmesi
    • [] operatörünün yüklenmesi
    • fonksiyon çağrı operatörünün yüklenmesi
    • tür dönüştürme operatör fonksiyonlarının yüklenmesi
  • Dinamik Ömürlü Nesneler
    • new ve delete ifadeleri
    • new[] ve delete [] ifadeleri
    • operator new işlevleri
    • operator delete işlevleri
    • operator new ve operator delete işlevlerinin yüklenmesi
    • std::bad_alloc
    • std::set_new_handler ve std::get_new_handler
    • placement new operatörleri
    • nothrow new
  • Tür Eş İsimleri (Type Alias)
    • typedef bildirimleri
    • using bildirimleri
  • İsim Alanları (Namespaces)
    • isim alanlarının oluşturulması
    • isim alanları ve isim arama
      • çözünürlük operatörü ve isim alanları
    • using bildirimi (using declaration)
    • using namespace direktifi
    • argümana bağlı isim arama (argument dependent lookup)
    • isimsiz isim alanı (unnamed namespace)
    • içsel isim alanları (nested namespace)
    • inline isim alanları (inline namespaces)
    • isim alanı eş ismi (namespace alias)
    • işlev yüklemesi ve isim alanları
  • Sınıflar ve Kalıtım
    • nesne yönelimli programlama ve kalıtım (oop & inheritance)
    • public kalıtımı (public inheritance)
    • çalışma zamanı çok biçimliliği (runtime polymorphism)
      • sanal işlevler (virtual function)
      • saf sanal işlevler (pure virtual function)
      • sanal sonlandırıcı işlev (virtual destructor)
      • sanal kurucu işlev idiyomu (virtual constructor idiom)
      • override bağlamsal anahtar sözcüğü
      • nesne dilimlenmesi (object slicing)
    • final bağlamsal anahtar sözcüğü
      • final sınıflar (final classes)
      • final override
    • çoklu kalıtım (multiple inheritance)
      • çoklu kalıtımda kapsam ve isim arama
      • çoklu kalıtımda kurucu ve sonlandırıcı işlevler
      • elmas formasyonu (diamond formation)
      • sanal kalıtım (virtual inheritance)
      • çoklu kalıtım ve kalıtımla alınan kurucu işlevler
      • çoklu kalıtımda kopyalama ve taşıma işlemleri
    • private kalıtımı (private inheritance)
    • protected kalıtımı (protected inheritance)
    • sınıf içi using bildirimi
    • kalıtımla alınan kurucu işlev (inherited constructor)
    • sanal olmayan arayüz idiyomu (non-virtual interface idiom)
  • Olağan Dışı Durumların İşlenmesi (Exception Handling)
    • exception güvenliği (exception safety) 
    • hata nesnelerinin gönderilmesi
      • throw deyimi (throw statement)
      • rethrow deyimi (rethrow statement)
    • try blokları
    • catch blokları
      • catch all
    • yakalanamayan hata nesnesi (uncaught exception)
      • std::terminate
      • std::set_terminate
    • hata nesnesinin yeniden gönderilmesi (rethrow statement)
    • yığının geri sarımı (stack unwinding)
    • kurucu işlevlerden exception gönderimi
    • sonlandırıcı işlevler ve hata gönderimi
    • exception handling ve kalıtım
    • exception handling ve dinamik ömürlü sınıf nesneleri
      • exception  güvenliği için akıllı göstericilerin kullanımı
    • işlev try blokları (function try block)
    • noexcept belirleyicisi
      • beklenmeyen hata nesnesi
      • std::unexpected_exception
    • std::exception sınıfı ve hiyerarşisi
      • std::exception sınıfı ve what sanal fonksiyonu
      • std::logic_error
        • std::invalid_argument
        • std:.domain_error
        • std::length_error
        • std::out_of_range
        • std::future_error
      • std::runtime_error
        • std::range_error
        • std::overflow_error
        • std::underflow_error
        • std::system_error
        • std::regex_error
      • std::bad_alloc
      • std::bad_typeid
      • std::bad_cast
      • std::bad_exception
      • std::bad_weak_ptr
      • std::bad_function_call
    • kendi hata sınıflarımızı oluşturmak
    • basic exception guarantee
    • strong exception gurantee
    • no exception gurantee
    • std::current_exception
    • std::exception_ptr
    • std::rethrow_exception
  • Çalışma Zamanında Tür Belirlenmesi (RTTI)
    • dynamic_cast operatörü
    • typeid operatörü
    • std::typeinfo sınıfı
  • std::string sınıfı
    • genel kavramlar
    • arama işlevleri
    • set işlemleri
    • erişim işlemleri
    • karşılaştırma işlevleri
    • sayısal dönüşüm işlevleri
  • Bileşik Nesneler (composition)
    • öğe olan nesneler ve özel işlevler, kopyalama kontrolü.
    • öğe olan nesneler ve erişim kontrolü
    • bileşik nesnelerin kullanıldığı temalar
  • İçsel türler (Type Members)
    • sınıf içinde yapılan eş isim bildirimleri
    • içsel sınıflar (nested classes)
    • pimpl idiyomu
  • Şablonlar (Templates)
    • şablon tür parametreleri (template type parameters)
    • şablon sabit parametreleri (template non-type parameters)
    • şablon şablon parametreleri (template template parameters)
    • şablon argümanları (template arguments)
    • şablonlardan kod üretimi (template instantiation)
    • fonksiyon şablonları (function templates)
      • fonksiyon şablonlarında tür çıkarımı (function template argument deduction)
      • fonksiyon şablonlarının yüklenmesi (function template overloading)
    • sınıf şablonları (class templates)
      • kurucu işlev ile tür çıkarımı (CTAD)
      • üye şablonlar (member templates)
    • şablonların özelleştirilmesi (template specialization)
      • tam özelleştirme (full specialization)
      • kısmi özelleştirme (partial specialization)
    • sfinae
    • değişken sayıda parametreli şablonlar (variadic templates)
    • mükemmel gönderim (perfect forwarding)
    • katlama ifadeleri (fold expressions)
    • if constexpr
    • değişken şablonları (variable templates)
    • eş isim şablonları (alias templates)
  • İteratörler (iterators)
    • aralık (range) kavramı
    • iteratörlerin kategorileri
    • kapların begin ve end işlevleri
    • global begin ve end işlevleri
    • iterator işlevleri
      • std::next
      • std::prev
      • std::iter_swap
      • std::advance
      • std::distance
    • iterator uyumlandırıcıları (iterator adaptors)
      • akım iteratörleri (stream iterators)
        • istream_iterator
        • ostream_iterator
        • istreambuf_iterator
        • ostreambuf_iterator
      • reverse_iterators
      • move_iterator
      • insert_iterator
      • back_insert _iterator
      • front_insert_iterator
  • Kaplar(Containers)
    • STL kapları ve veri yapıları (STL containers & data structures) 
    • sıralı kaplar (sequence containers)
      • std::vector
      • std::deque
      • std::string
      • std:.array
      • std::list
      • std::forward_list
    • ilişkisel kaplar (associative containers)
      • std::set
      • std::multiset
      • std::map
      • std::multimap
    • sırasız ilişkisel kaplar (unordered containers)
      • std::unordered_set
      • std::unordered_multiset
      • std::unordered_map
      • std::unordered_multimap
    • kapların tür öğeleri (type members of containers)
    • kapların emplace işlevleri
  • Kap Uyumlandırıcıları (Container Adaptors)
    • stack
    • queue
    • priority_queue
  • Algoritmalar (Algorithms)
    • algoritmaların temel özellikleri ve genel ilkeler
    • salt okuyan algoritmalar (non-modifying algorithms)
    • kap öğelerini değiştiren algoritmalar (modifying algorithms)
    • kap öğelerini konumlandıran algoritmalar (mutating algorithms)
    • sıralama ile ilgili algoritmalar (sorting algorithms)
    • sıralanmış aralıklar üzerinde koşturulan algoritmalar (sorted range algorithms)
    • nümerik algoritmalar (numeric algorithms)
    • algoritmaların lambda ifadelerini kullanması
  • lambda ifadeleri
    • kapanış türleri ve kapanış nesneleri (closure types and closure objects)
    • lambda ifadeleri ve tür çıkarımı (lambda expressions and type deduction)
    • lambda yakalama ifadeleri (lambda captures)
    • lambda init capture
    • capture this 
    • capture *this
    • mutable lambdalar
    • trailing return type
    • genelleştirilmiş lambda ifadeleri (generalized lambda expressions)
    • algoritmalarda lambda ifadelerinin kullanımı
  • Akıllı Gösterici Sınıfları (Standard Smart Pointer Classes)
    • unique_ptr sınıfı
      • std::make_unique
      • std::default_delete ve custom deleters
      • tipik hatalar
    • shared_ptr sınıfı
      • referans sayımı (reference counting)
      • std::make_shared
    • weak_ptr sınıfı
  • Standart Giriş Çıkış Kütüphanesi
    • giriş çıkış akımlarına ilişkin standart sınıflar (standard stream classes)
    • global akım nesneleri
    • formatlı giriş çıkış işlemleri (formatted input output)
    • << ve >> operatörlerinin yüklenmesi (inserter & extractors)
    • formatlama ve formatlama işlemleri (formatting)
    • manipülatörler (manipulators)
    • akımın durumu (condition states)
    • string akımları (stringstreams)
    • dosya işlemleri (file operations)
    • formatsız giriş ve çıkış işlemleri (unformatted input output)
    • bellek üstünde yapılan giriş çıkış işlemleri
  • Bazı önemli STL Öğelerinin Tanıtımı
    • std::pair
    • std::tuple
    • std::initializer_list
    • std::bitset
    • std::regex
    • type_traits kütüphanesi
    • std::allocator
    • std::ratio
    • std::chrono
    • standart random kütüphanesi
    • std::string_view sınıfı
    • std::optional sınıfı
    • std::variant sınıfı
    • std::any sınıfı
    • std::byte
    • std::invoke
  • Tamamlayıcı Araçlar ve Sentaks Öğeleri
    • static_assert 
    • decltype (auto)
    • declval
    • üye fonksiyon göstericileri (member function pointers)
    • ham string sabitleri (raw string literals)
    • ikilik sayı sisteminde yazılan sabitler (binary literals)
    • basamak ayırıcısı (digit seperator)
    • ilk değer vermeli if deyimi (if with initializer)
    • ilk değer vermeli switch  deyimi (if with initializer)
    • alignas belirteci (alignas specifier)
    • alignof operatörü (alignof operator)
    • yapısal bağlama (structural binding)
    • attribute’lar

Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

Sistem Programlama ve İleri C Uygulamaları (II)


Kurs konularından bazıları aşağıdadır:

  • Biçimsel diller ve otomatlar
  • Derleyici ve yorumlayıcı tasarımının ilkeleri
  • Parsing algoritmaları
  • Derleyici tasarım araçlarının kullanımı: LEX (Flex), YACC (bison), ANTLR ve LLVM
  • İleri algoritmalar ve veri yapıları (arama ağaçları, dışsal aramalar, graf algoritmaları vs.)
  • Windows ve UNIX/Linux sistemlerinde asenkron IO işlemleri
  • Dosya sistemlerinin tasarımı ve ileri düzey disk uygulamaları
  • Veritabanları ve veritabanı yönetim sistemleriyle işlemler
  • İleri programlama teknikleri
  • Yazılım test süreci ve birim testleri
  • .NET ve Java platformlarında ara kodlu çalışma sistemleri ve JIT (just in time) derlemeleri
  • Bilgisayar Virüsleri
  • Execcutable ve object dosya formatları (Windows COFF, PE ve UNIX/LINUX ELF formatları)
  • Text editörlerin tasarımı ve uygulama
  • PC mimarisindeki yardımcı işlemcilerin programlanması
  • USB portlarının programlanması
  • İleri Düzey TCP/IP uygulamaları
  • Dağıtık sistemlerin temelleri
  • IP ailesinin uygulama katmanına ilişkin bazı protokoller (telnet, sssh, ftp, http, pop3, smtp…)
  • Paralel programlama ve OpenMP kütüphanesinin kullanımı
  • Linux Aygıt sürücülerinin yazımı (temel düzeyde)
  • Windows aygıt sürücülerinin yazımı (temel düzeyde)
  • Algılayıcıların temel kullanımı
  • Gömülü sistemlere ilişkin uygulamalar ve Raspberry Pi mimarisi
  • Linux işletim sistemi çekirdeğinin incelenmesi, değiştirilmesi ve derlenmesi
  • Sanallaştırma ve sanal makine programlarının (Virtual Box, WMware gibi) çalışma prensipleri
  • Şifreleme işlemleri
  • Temel bilgisayar güvenliği
  • Diğer konular…

Ön koşul:

C Programlama Dili ve Sistem Programlama ve İleri C Uygulamaları (I) kurslarını başarıyla bitirmiş olmak ya da kursun gerektirdiği düzeyde bilgi ve deneyime sahip olmak.

Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

C Programlama Dili


KURSUN GENEL TANITIMI

  • Bu kurs, katılımcıların öncelikle C programlama dilini iyi öğrenmelerini ve yazılım üretiminde profesyonel düzeyde dili kullanma becerisi geliştirmelerini hedeflemektedir.
  • Kursta C programlama dilinin tüm sentaksı ve semantik yapısı ve profesyonel düzeyde kullanımı ayrıntılı olarak öğretilmektedir.
  • Eğitimde temel olarak C99 standartları esas alınmaktadır. C99 standartlarıyle dile eklenen tüm sentaks özellikleri ve standart kütüphane öğeleri eğitim kapsamındadır.
  • C dilinin standart kütüphanesi tüm yönleriyle ele alınmaktadır.
  • Kurs yalnızca C dilini öğretmeyi değil, tüm programlama ortamları için iyi, temiz, sürdürülebilir ve etkin kod yazma alışkanlığı kazandırmayı da amaçlamaktadır.
  • Bazı derslerde konuların daha iyi anlaşılmasını sağlamak için veri yapılarına ve algoritmalara (data structures and algorithms) ilişkin temel kavramlar anlatılmaktadır.

Ön Koşul

Bu eğitim programına katılabilmek için öğrencilerin daha önce programlama ile tanışmış olmaları gerekmektedir.

Kurs Süresi

Eğitimin toplam süresi 180 saattir.

Kurs Programı

  • Kursun Tanıtımı
  • C Programlama Dilinin Genel Tanıtımı
      • programlama dillerini birbirinden ayıran kriterler
        • declarative ve imperative diller
        • seviye (level)
        • mülkiyet
        • statik ve dinamik tür kavramları
        • programlama paradigmaları
        • prosedürel programlama ve C dili
      • C dilinin kullanım alanları
      • C dilinin temel özellikleri
      • C dilinin tarihsel gelişimi ve C Standartları
        • Klasik C
        • C89
        • C99
        • C11
      • C ve C++ ilişkisi
  • Temel Kavramlar
    • atom (token) kavramı
      • atom kategorileri
        • anahtar sözcükler (keywords)
        • isimler (identifiers)
        • sabitler (constants – literals)
        • string literalleri (string literals)
        • operatörler (operators)
      • atomlarına ayırma (tokenizing)
      • en uzun atom kuralı (maximum munch)
    • sayı sistemleri
      • işaretli ve işaretsiz ikilik sayı sistemi
      • dönüşümler
      • bire tümleme işlemi
      • ikiye tümleme işlemi
      • onaltılık sayı sistemi
      • sekizlik sayı sistemi
    • nesneler (objects)
      • tür (type) kavramı
      • nesnelerin bellek alanları (storage)
      • temel türler (fundemantal types)
      • programcı tarafından tanımlanan türler (user defined types)
    • ifadeler (expressions)
      • ifade kategorileri (value categories)
        • sol taraf değeri ifadesi (L value expression)
        • sağ taraf değeri ifadesi (R value expression)
      • sabit ifadesi (constant expression)
  • Bir C Programı Oluşturmak
    • metin düzenleyici programlar ve text dosyaları
    • kaynak dosya ve çeviri birimi
    • derleyici program ve derleme süreci
      • derleyici bulgu iletileri
      • tanımsız davranış (undefined behavior)
      • derleyiciye bağlı durumlar (implementation defined behavior)
      • derleyici programların lojik kontrolleri
      • derleyiciler ve kod optimizasyonu
      • derleyici eklentileri (compiler extensions)
    • önişlemci program (preprocessor)
    • bağlayıcı program (linker) bağlama zamanı
    • ide’ler ve yardımcı programlar
      • statik kod analizi yapan programlar
      • hata ayıklayıcı programlar
  • Veri Türleri (Data Types)
    • varsayılan türler (fundemental types)
      • tamsayı türleri (integer types)
      • gerçek sayı türleri (floating types)
    • programcı tarafından oluşturulan türler (user defined types)
  • Bildirim ve Tanımlama (Declarations & Definitions)
    • bildirimler ve deyimler (declarations and statements)
    • ilk değer verme (initialization)
    • bildirim listesi
    • tanımlama (definition)
  • Kapsam ve İsim arama (Scope & Name Lookup)
    • kapsam (scope)
      • kapsam kategorileri
        • block scope
        • file scope
        • function prototype scope
        • function scope
    • isim arama (name lookup)
    • isim çakışmaları (name collision)
  • Ömür Kavramı (Storage Duration)
    • otomatik ömür (automatic storage class)
    • statik ömür (static storage class)
    • dinamik ömür (dynamic storage class)
  • İşlevler (Functions)
    • işlevlerin tanımlanması (function definitions)
      • işlevlerin parametre değişkenleri
      • işlevlerin geri dönüş değerleri
      • değerle çağrı (call by value)
      • referansla çağrılan işlevler (call by reference)
      • void işlevler
    • return deyimi (return statement)
      • ifadeli ve ifadesiz return deyimleri
    • saf (pure) ve saf olmayan (impure) işlevler
    • işlevlerin çağrılması (function calls)
      • işlev çağrılarından elde edilen değerlerin kullanılması
    • inline işlevler (inline functions)
    • işlevlerin bildirilmesi (function declarations)
  • Standart Kütüphane (Standard Library)
    • standart kütüphanenin varlık nedenleri
      • ortak arayüz (common interface) ilkesi
      • taşınabilirlik (portability)
      • kodların tekrar kullanımı (code reuse)
    • standart formatlı giriş çıkış işlevleri
      • standart giriş akımı (standard input stream)
      • standart çıkış akımları (standard output stream)
      • standart hata akımı (standard error stream)
      • akımların yönlendirilmesi (direction of the streams)
      • printf işlevi
      • scanf işlevi
    • standart formatsız giriş ve çıkış işlemleri
      • getchar
      • putchar
    • standart başlık dosyaları
    • standart math kütüphanesi
  • Operatörler (Operators)
    • temel kavramlar
      • operatörlerin değer üretmesi
      • operatör önceliği
      • öncelik yönü (associativity)
      • yan etki (side effect)
      • yan etki noktası (sequence point)
    • aritmetik operatörler
      • toplama, çıkarma, çarpma, bölme ve kalan operatörleri
      • işaret operatörleri (sign operators)
      • artırma ve eksiltme operatörleri (increment & decrement operators)
    • karşılaştırma operatörleri
      • karşılaştırma idiyomları
      • tipik hatalar
    • lojik operatörler
      • lojik yorumlama
      • kısa devre davranışı
      • tipik hatalar
      • lojik ifadeler
      • idiyomlar
    • atama operatörleri
      • atama operatörlerinin değer üretmesi
      • yalın atama operatörü
      • işlemli atama (compound assignment) operatörleri
      • idiyomlar
    • virgül operatörü
    • öncelik operatörü
  • Sabitler (Constants)
    • sabitlerin türleri
      • tamsayı sabitleri (integer constants)
      • gerçek sayı sabitleri (floating constants)
        • üstel (scientific) notasyon
      • karakter sabitleri
        • kaçış sekansları (escape sequences)
  • Kontrol Deyimleri
    • if deyimi
      • genel sentaks
      • else if merdiveni
      • tipik yapılan hatalar
      • test işlevleri
    • döngü deyimleri
      • while döngü deyimi
      • do while döngü deyimi
      • for döngü deyimi
      • break deyimi
      • continue deyimi
      • iç içe döngüler
      • döngü idiyomları
    • switch deyimi
    • goto deyimi
  • Koşul Operatörü (Ternary Operator)
  • Standart ctype Kütüphanesi
    • karakter test işlevleri
      • isupper, islower, isalpha, isdigit, isalnum, isxdigit, isspace, isblank, ispunct, isprint, isgraph, iscntrl
    • karakter dönüşüm işlevleri
      • toupper ve tolower işlevleri
  • İşlev Bildirimleri (Function Declarations)
  • Önişlemci Komutları – 1
    • #include komutu
    • #define komutu ve makrolar
      • sembolik sabitler
      • işlevsel makrolar
    • #undef komutu
    • koşullu derleme işlemleri ve koşullu derleme komutları
      • #if
      • #endif
      • #else
      • #elif
      • #ifdef,
      • #ifndef
    • standart limits kütüphanesi
  • Tür Dönüşümleri (Type Conversions)
    • otomatik tür dönüşümleri (implicit type conversions)
    • tür dönüştürme operatörü (type-cast operator)
    • tür dönüşümleri ve veri kaybı
  • typedef bildirimleri – 1
    • tür eş isimleri (type alias) ve taşınabilirlik
    • standart typedef türleri
      • size_t tür eş ismi
      • ptrdiff_t tür ismi
      • time_t ve clock_t tür isimleri
    • stdint başlık dosyası
    • stdbool başlık dosyası
  • Rastgele Sayı Üretimi ve Programlamadaki Önemi
    • gerçek ve sözde rastgele sayı üretimi
    • rastgele sayı üretim algoritmaları
    • tohum değeri (seed value)
    • standart rand ve srand işlevleri
  • sizeof Operatörü
  • Diziler (arrays)
    • veri yapıları ve algoritmalara giriş
      • veri yapıları
      • algoritmanın karmaşıklığı (complexity of algorithms)
      • big O notasyonu
    • tamsayı ve gerçek sayı dizileri
      • dizilere ilk değer verme
      • designated initializer (C99)
    • yazılar ve yazı tutan char diziler
      • null karakter
      • yazılara ilişkin temel algoritmalar
  • Göstericiler (pointers)
    • temel kavramlar
      • adres ifadeleri
      • gösterici değişkenler
      • göstericiler ve storage
    • adres operatörü
    • içerik (dereferencing) operatörü
    • diziden adrese dönüşüm (aray to pointer conversion)
    • geçerli (valid) ve geçersiz (invalid) göstericiler
    • göstericiler ve const semantiği
      • kendisi const göstericiler
      • okuma amaçlı const göstericiler
    • gösterici aritmetiği
    • indeks operatörü
    • diziler üstünde işlem yapan işlevler
    • göstericiler ve karşılaştırma işlemleri
    • adres döndüren işlevler (function returning pointers)
    • NULL gösterici
    • endiannesslittle endianbig endian kavramları
    • gösterici hataları
  • Standart string Kütüphanesi (string library)
    • strlen, strcpy, strcat, strncpy, strncat işlevleri
    • arama işlevleri: strchr, strnchr, strstr, strpbrk, strspn, strcspn
    • karşılaştırma işlevleri : strcmp, strcoll, stricmp
    • strtok işlevi
    • diğer standart string işlevleri
    • örnek bazı Posix işlevleri
  • Standart stddef Kütüphanesi 
  • String Sabitleri (String Literals)
    • string sabitleri ve const doğruluğu (string literals and const correctness)
    • string sabitleri ve ömür
  • Gösterici Dizileri (Pointer Arrays)
  • Gösterici Gösteren Gösterici (Pointer to pointer)
  • void Göstericiler (void Pointers)
    • türden bağımsız işlevler (generic functions)
    • standart memset, memcpy, memmove, memchr, memcmp işlevleri
    • void ** türü
  • İşlev Göstericileri (Function Pointers)
    • genel sentaks
    • işlevden adrese dönüşüm (function to pointer conversion)
    • işlev göstericileri ve typedef bildirimleri
    • geri çağrı (call-back) işlev yapısı
    • standart qsort ve bsearch işlevleri
    • işlev gösterici dizileri (function pointer arrays)
  • Çok Boyutlu Diziler (Multi-dimensional Arrays)
  • Programların Sonlandırılması
    • normal ve anormal sonlanma (normal & abnormal termination)
    • standart exit, atexit ve abort işlevleri
  • Dinamik Bellek Yönetimi (Dynamic Memory Management)
    • dinamik bellek ihtiyacı ve dinamik ömür kavramı
    • heap alanı ve yönetimi
    • heap’in parçalara ayrılması (fragmentation)
    • standart dinamik bellek yönetimi işlevleri
      • malloc
      • calloc
      • realloc
      • free
    • bellek sızıntısı (memory leak)
    • boşa düşen göstericiler (dangling pointers)
    • dinamik dizi (dynamic array) veri yapısı
  • Yer Belirleyiciler (Storage Class Specifiers) ve Tür Niteleyiciler (Type Modifiers)
    • yer belirleyiciler (storage  class specifiers)
      • auto anahtar sözcüğü
      • register anahtar sözcüğü
      • extern anahtar sözcüğü
      • static anahtar sözcüğü
      • modül ve bağlantı kategorileri
        • iç bağlantı (internal linkage)
        • dış bağlantı (external linkage)
      • global isim alanının kirlenmesi problemi
    • tür niteleyiciler (type modifiers)
      • const anahtar sözcüğü ve const semantiği
      • volatile anahtar sözcükleri
      • restrict anahtar sözcüğü
  • Programların sonlandırılması
    • Normal sonlanma ve standart exit işlevi (normal termination)
      • standart atexit işlevi
    • Anormal sonlanma ve standart abort işlevi (abnormal termination)
  • Yapılar (Structures)
    • genel sentaks
      • yapı öğeleri
      • nokta operatörü
      • ok operatörü
      • yapı nesnelerine ilk değer verilmesi
    • yapı nesneleri ve işlevler
    • tamamlanmış ve eksik türler (complete / incomplete types)
    • içsel türler (nested types)
    • yapı öğesinin kendi türünden gösterici olması
    • düğüm (node) kavramı
    • bağlı liste (linked list) veri yapısı
      • tekli bağlı listeler (singly linked lists)
      • çifte bağlı listeler (double linked lists)
      • döner bağlı isteler (rotating lists)
    • ikili arama ağacı (binary search tree) veri yapısı
    • yapı türlerinden sabitler (compound literals)
    • handle kavramı ve nesne yönelimli C kütüphaneleri
  • Standart time Kütüphanesi (time Library)
    • takvim zamanı ve ayrıştırılmış zaman
      • time_t türü
      • clock_t türü
    • struct tm yapısı
    • time, localtime, gmtime, ctime, asctime, strftime, mktime, clock işlevleri
  • Birlikler (Unions)
    • birliklerin kullanım temaları
    • tagged unions
  • Numaralandırmalar (Enumarations)
    • numaralandırma sabitleri
    • enum idiyomları
  • Bitsel İşlemler (Bitwise Operations)
    • bitsel operatörler
    • bitsel manipülasyon işlemleri
    • yapıların bit alanı öğeleri
    • bitsel işlemler ve birlikler
  • Komut Satırı Argümanları (Command Line Arguments)
  • Dosya İşlemleri (File Operations)
    • dosyaların açılması ve kapatılması
      • dosya açış modları
        • okuma, yazma ve sona ekleme modları
        • text modu ve binary mod
      • fopen, freopen, fclose ve fcloseall işlevleri
    • okuma ve yazma işlemleri
      • formatlı okuma yazma işlemleri
        • fprintf
        • fscanf
        • fputs
        • fgets
      • formatsız okuma yazma işlemleri
        • fgetc
        • fputc
        • fread
        • fwrite
    • standart dosya konum göstericisi işlevleri
      • fseek
      • ftell
      • rewind
      • fsetpos
      • fgetpos
    • feof, ferror, clearerr, fflush işlevleri
    • fsetbuf işlevi
    • ungetc işlevi
    • Diğer dosya işlevleri ve örnek uygulamalar
  • Standart signal kütüphanesi
  • Önişlemci Komutları – 2
    • önişlemci operatörleri
      • # dizge yapma (stringification) operatörü
      • ## atom yapıştırma (token-pasting) operatörü
      • defined operatörü
    • öntanımlı sembolik sabitler (predefined symbolic constants)
    • #line komutu
    • #error komutu
    • #pragma komutu
    • assert makrosu
    • variadic makrolar
  • Değişken Sayıda Argümanla Çağrılabilen İşlevler (Variadic Functions)
  • C99 Standartları ile Eklenen Önemli Öğeler
    • long long veri türü
    • for döngü deyiminde yapılan bildirimler
    • _Bool anahtar sözcüğü ve <stdbool.h> başlık dosaysı
    • <stdint.h> başlık dosyası ve standart tür eş isimleri
    • inline fonksiyonlar (inline functions)
    • değişken boyutlu diziler (variable length arrays)
    • esnek dizi öğeleri (flexible array members)
    • restrict belirteci
    • bileşik sabitler (compound literals)
    • variadic makrolar (variadic macros)
    • C99 standartları ile eklenen diğer standart kütüphane öğeleri

  * Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.