Nest.js ile Sunucu Taraflı Uygulama Geliştirme


BACKEND Eğitimi:

 Nest.js Eğitimi ve Sunucu taraflı uygulama geliştirme (230 saat):

Modül 1: Nest.js Girişi

1.1 Nest.js Nedir?

  • js’in temel prensipleri
  • TypeScript ve Express.js ile ilişkisi

1.2 Kurulum ve Proje Yapısı

  • js projesi oluşturma
  • Temel proje yapısı ve dosya organizasyonu

1.3 Temel Kavramlar

  • Module, Controller, Service
  • Dependency Injection
  • Middleware kullanımı

1.4 RESTful API Temelleri

  • Endpoint tanımlama
  • HTTP metotları ve route parametreleri
  • Request ve response Nesneleri

Modül 2: Veritabanı Entegrasyonu

2.1 TypeORM ve PostgreSQL

  • TypeORM nedir?
  • PostgreSQL ile veritabanı oluşturma ve Veritabanına bağlanılması

2.2 TypeORM ile Modelleme

  • Entity ve Repository kullanımı
  • Veritabanı tablolarının oluşturulması

2.3 CRUD Operasyonları

  • Temel CRUD operasyonlarını gerçekleştirme
  • TypeORM query builder kullanımı

2.4 Validation ve DTOs

  • DTO (Data Transfer Object) kavramı
  • Class-validator ile veri doğrulama

Modül 3: JWT Authentication ve Güvenlik

3.1 Passport.js ve JWT

  • js kullanımı
  • JWT ile kullanıcı doğrulama

3.2 Guard ve Middleware

  • Auth guard ve middleware kullanımı
  • Role-based yetkilendirme

3.3 OAuth ve Social Media Authentication

  • OAuth protokolü
  • Dış servislerle entegrasyon

3.4 Güvenlik Pratikleri

  • SQL Injection, Cross-Site Scripting (XSS) önlemleri
  • HTTPS kullanımı

Modül 4: GraphQL ve Nest.js

4.1 GraphQL Temelleri

  • GraphQL kavramları
  • GraphQL query ve mutationlar

4.2 Nest.js ve GraphQL Entegrasyonu

  • js ile GraphQL servisi oluşturma
  • Resolver ve schema kullanımı

4.3 Apollo Server ve Client

  • Apollo Server kullanımı
  • Frontend ile GraphQL entegrasyonu

Modül 5: Testing ve Hata Ayıklama

5.1 Birim Testleri

  • Jest ve Supertest kullanımı
  • Unit ve integration testler

5.2 Hata Ayıklama (Debugging)

  • js uygulamalarını hata ayıklama
  • Hata ayıklama stratejileri

Modül 6: Mikroservisler ve Nest.js

6.1 Mikro Servis Kavramları

  • Mikro servis mimarisi nedir?
  • Avantajları ve zorlukları

6.2 Nest.js ile Mikro Servis Geliştirme

  • js ile mikro servis oluşturma
  • İletişim ve veri paylaşımı

Modül 7: WebSocket ve Real-Time Uygulamalar

7.1 WebSocket ve Nest.js

  • WebSocket protokolü
  • WebSocket ile iletişim kurma

7.2 Real-Time Uygulama Geliştirme

  • WebSocket ile anlık haberleşme
  • Real-time uygulama senaryoları

Modül 8: Performans ve Optimizasyon

8.1 Performans Analizi

  • Uygulama performansının değerlendirilmesi
  • Optimizasyon stratejileri

8.2 Cache ve CDN

  • Veri önbellekleme stratejileri
  • CDN kullanımı

Modül 9: Docker ve Konteynerizasyon

9.1 Docker Temelleri

  • Docker nedir?
  • Docker konteynerleri ve avantajları

9.2 Nest.js ve Docker Entegrasyonu

  • js uygulamasını Dockerize etme
  • Docker-compose kullanımı

Modül 10: Proje Geliştirme ve Bitirme

10.1 Büyük Ölçekli Bir Proje Geliştirme

– Öğrenilen bilgilerin pratiğe dönüştürülmesi

– Projeyi planlama ve geliştirme

10.2 Bitirme ve Değerlendirme

– Projenin tamamlanması ve sunumu

– Öğrencilerle geri bildirim oturumları düzenleme

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

* Kurs ücretini sorunuz. 

Typescript Programlama Dili


Typescript Programlama Dili  (160 saat)

Modül 1: TypeScript Temelleri

1.1 Giriş

  • TypeScript’in Önemi ve Kullanım Alanları
  • JavaScript ve TypeScript arasındaki temel farklıklar
  • TypeScript’in avantajları ve güçlü yanları

1.2 Kurulum ve Ayarlar

  • js ve npm kurulumu
  • TypeScript kurulumu
  • TypeScript Proje yapılandırması ve “tsconfig.json” dosyası

1.3 İlk TypeScript Uygulaması

  • Bir TypeScript dosyası oluşturma
  • Temel TypeScript sentaksı
  • TypeScript dosyasını derleme ve çalıştırma

1.4 TypeScript Entegrasyonu

  • TypeScript ile yaygın IDE’lerin (VS Code, WebStorm, …) kullanımı
  • TypeScript entegrasyonu için geliştirme araçları

Modül 2: Veri Tipleri ve Değişkenler

2.1 Temel Veri Türleri

  • string, number, boolean, array, object veri türleri
  • Tür çıkarımları ve tür bilgilendirmeleri

2.2 Değişkenler ve Sabitler

  • let, const, var anahtar sözcükleri ile değişken tanımlama
  • Blok faaliyet alanı ve fonksiyon faaliyet alanı

2.3 Türlere Alternatif İsimler Verilmesi ve Birlik Türleri

  • Tür takma adları (Type aliases)
  • Birlik türleri ve Kesişim türleri

2.4 Türlere İlişkin İleri Düzey Bilgiler

  • Sayımlama Türleri ve Sabitleri ve literal türler
  • Null Türü ve Undefined Türü
  • Tür söylemleri (Type assertions)

Modül 3: Fonksiyonlar

3.1 Fonksiyon Tanımlama ve Çağırma

  • Fonksiyonların ve Metotların Parametre Değişkenleri ve geri dönüş değerleri
  • İsimli parametreler ve default argüman kullanımı

3.2 Rest Parametreler ve Spread Operatorü

  • Rest parametrelerin ve spread operatorünün kullanımı
  • İleri seviye fonksiyon kullanımı

3.3 Yüksek Düzeyli Fonksiyonları

  • Callback fonksiyonlar
  • Promise ve Async/Await kullanımı

3.4 Jenerik Fonksiyonlar ve Sınıflar

  • Jenerik fonksiyonlar
  • Jenerik sınıflar

Modül 4: Sınıflar ve Nesne Yönelimli Programlama (OOP)

4.1 Sınıflar ve Nesne Yaratma

  • Sınıfların Tanımlanması ve Sınıflar Türünden Nesnelerin Yaratılması
  • Yapıcı metotlar ve this kullanımı

4.2 Türetme İşlemleri ve Arayüzler

  • Kalıtım (inheritance)
  • Arayüzler (interfaces) ve implementasyon

4.3 Soyut Sınıflar ve  Arayüzler

  • Soyut sınıfların kullanımı
  • İnterface’lerin ayrıntı

4.4 Sınıfların Statik Metotları

  • Sınıfların Statik Metotları ve Statik Elemanları
  • Örnek uygulamalar

Modül 5: Modüllerle Çalışma

5.1 Modüllerin Tanımlaması ve Kullanma

  • Modüllerin avantajları
  • Modüllerin tanımlaması ve kullanması

5.2 Modüllerde Import ve Export işlemleri

  • Modüller arası veri alışverişi
  • Default ve ismlendirilmiş exports

5.3 Modül Yapılandırma ve Farklı Modül Sistemleri

  • CommonJS ve ES6 modül sistemleri
  • Uygulama senaryoları

Modül 6: Genel Tavsiyeler ve İleri Seviye Konular

6.1 TypeScript Projelerinde Genel Tavsiyeler

  • Kod düzeni ve yazım kuralları
  • Kaynak Kodun Dokümantasyonu ve Kod İçi açıklamalar

6.2 İleri Seviye Konular

  • Dekoratörler
  • Tür Korumaları ve Koşullu Türler
  • Yardımcı türler (Utility types) ve Eşleşmiş türler (mapped types)

 Modül 7: TypeScript ve Web Geliştirme Entegrasyonu

7.1 Webpack ve TypeScript

  • TypeScript projelerini yapılandırma
  • Webpack entegrasyonu

7.2 TypeScript ve React, Angular, Vue.js Entegrasyonu

  • TypeScript ile sık kullanılan framework’lerle çalışma
  • Uygulama senaryoları

Modül 8: Hata Ayıklama ve Performans İyileştirmeleri

8.1 Hata Ayıklama Stratejileri

  • TypeScript hata ayıklama araçları
  • Hata ayıklama stratejileri ve ipuçları

8.2 Performans İyileştirmeleri

  • TypeScript projelerinde performans analizi
  • Optimizasyon stratejileri

Modül 9: TypeScript Ekosistemi ve Araçlar

9.1 TypeScript Ekosistemi

  • Çok Kullanılan kütüphaneler ve araçlar
  • TypeScript Kullanan Topluluklar ve TypeScrşpt İçin Kaynaklar

9.2 TypeScript İçin Editörler ve IDE’ler

  • TypeScript ile uyumlu IDE’lerin kullanımı
  • VS Code, WebStorm gibi yaygın kullanılan editörler

Modül 10: Proje Geliştirme ve Bitirme

  1. Küçük Proje Geliştirme

– Öğrenilen bilgilerin uygulamaya dönüştürülmesi

– Gerçek dünya senaryolarına dayalı küçük bir proje

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

* Kurs ücretini sorunuz. 

Java ile Nesne Yönelimli Programlama


Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

Java Programlama Dili kolay ve hızlı uygulama geliştirmeyi amaçlayan C++’dan türetilmiş yalın bir nesne yönelimli programlama dilidir. Java’yı kullanarak Android uygulamaları, GUI uygulamaları, web servis uygulaması, dağıtık uygulamalar için bileşenler geliştirebilirsiniz. Bu kursta bir programlama dili olarak Java ele alınmaktadır. Bu kurs Java ile Uygulama Geliştirme (I) kursu için bir önkoşul niteliğindedir.

## Temel kavramlar
+ Java ortamı
+ _JDK_ ve _JVM_
+ Çevirici programlar, derleyiciler yorumlayıcılar
+ İşletim Sistemleri
+ IDE _(Integrated Development Environment)_ programları
+ Temel sayı sistemleri
+ JDK kurulumu
+ Merhaba Java program
+ Metot bildirimi
+ Metotların çağrılması

## Tür kavramı
+ Java’da temel türler
+ Tamsayı türleri, gerçek sayı türleri, _char_ türü ve _boolean_ türü
+ Değişkenler ve faaliyet alanı
+ Yerel değişkenler

## Metotlar
+ Metotların geri dönüş değerleri
+ _return_ deyimi
+ Metotların parametre değişkenleri
+ Matematiksel işlem yapan yararlı metotlar: _Math_ sınıfı

## Temel Operatörler
+ Operatörlerin sınıflandırılması
+ Operatör önceliği
+ Aritmetik Operatörler
+ Karşılaştırma operatörleri
+ Mantıksal operatörler
+ Mantıksal operatörlerin kısa devre davranışları
+ Atama operatörü
+ İşlemli atama operatörleri

## Kontrol deyimleri
+ _if_ deyimi
+ while döngü deyimi
+ _do while_ döngü deyimi
+ _for_ döngü deyimi
+ _break_ ve _continue_ deyimleri
+ Etiketli _break_ ve etiketli _continue_ deyimleri
+ _switch_ deyimi
+ Örnek programlar

## Tür dönüştürmeleri
+ Farklı türlerin birbirine atanması
+ İşlem öncesi otomatik tür dönüşümleri
+ Tür dönüştürme operatörü

## Koşul operatörü
+ Koşul operatörünün özellikleri
+ Koşul operatörünün kullanıldığı durumlar

## Aynı isimde metotlar _(method overloading)_
+ Bir sınıf içerisinde aynı isimde metotlar
+ Bir metodun imzası
+ Çağırma sırasında hangi metodun çağrılacağının belirlenme süreci _(overload resolution)_
+ Tam uyum _(best match)_
+ Tam uyum olmadığında hangi metodun çağrılacağının belirlenme süreci

## Nesne Yönelimli Programlama Tekniği
+ Nesne yönelimli programlama tekniğine ilişkin temel kavramlar
+ Sınıf ve nesne kavramları
+ Aynı isimde metotların anlamı
+ Diğer programlama teknikleri hakkında bilgiler

## Adres kavramı
+ Adres kavramı
+ Stack ve heap alanları
+ Ömür _(storage duration)_ kavramı: yerel ve parametre değişkenlerinin ömürleri

## Temel sınıf kavramları
+ Sınıf ve nesne kavramları
+ Referans türleri ve değer türleri
+ Referans kavramı
+ _new_ operatörü
+ Sınıfın _static_ olmayan veri elemanlarına erişim ve nokta operatörü
+ Sınıfın _static_ olmayan veri elemanlarının varsayılan değerleri
+ Referans parametreli metotlar
+ Referans geri dönüş değerli metotlar
+ Sınıfın _static_ veri elemanları
+ Sınıfın _non-static_ ve _static_ metotları
+ Sınıfın _non-static_ metotları içerisinde _non-static_ ve _static_ elemanlara doğrudan erişim durumu
+ Sınıfın _static_ metotları içerisinde _non-static_ ve _static_ elemanlara doğrudan erişim durumu
+ Örnek yararlı sınıflar

## Sınıfların başlangıç metotları _(constructors)_
+ Nesne oluşturulması adımları
+ Sınıfın varsayılan _(default)_ başlangıç metodu
+ Başlangıç metotlarının _overload_ edilmesi
+ Örnek yararlı sınıflar

## Rasgele sayı üretimi _(Random sınıfı)_
+ Rasgele sayı üretimi
+ Random sınfının metotları
+ Tohum değeri _(seed value)_ kavramı
+ _Random_ sınıfının tohum değeri parametreli başlangıç metodu ve _setSeed_ metodu
+ Örnek programlar

## String sınıfı
+ _Immutable_ sınıf kavramı
+ _String_ nesnesinin bellekteki durumu
+ _String_ sabitleri _(String literals)_
+ _String_ sınıfının metotları
+ _String_ işlemlerine yönelik yararlı metotların yazılması
+ Örnek programlar

## Paketler
+ Paket kavramı
+ Farklı paketlerdeki sınıflara erişim
+ İçiçe paket bildirimleri
+ Paketler ve dizinlerin ilişkisi
+ Paket isimlendirmesine ilişkin teknikler
+ Kaynak dizin _(source folder)_
+ Yazılmış olan yararlı sınıflara ilişki uygun paketler

## İsim arama
+ Niteliksiz _(unqualified)_ isim arama
+ Nitelikli _(qualified)_ isim arama
+ _import_ bildirimleri _(import on demand declaration, import single type declaration)_
+ _import static_ bildirimleri _(import static on demand declaration, import static single type declaration)_

## Diziler (Arrays) ve uygulamalar
+ Dizi referansları
+ Diziye ilişkin nesnelerin bellekteki durumu
+ Dizi elemanlarına erişim
+ Dizilere ilk değer verilmesi
+ Dizilerin metotlara geçirilmesi: dizi referansı parametreli metotlar
+ Dizi referansı döndüren metotlar
+ Dizilere ilişkin temel algoritmaların yazımı
+ Dizilere ilişkin yararlı metotların yazımı
+ Dizilerde bazı sıralama algoritmaları: kabarcık sıralaması _(bubble sort)_ ve _seçerek sıralama _(selection sort)_ algoritmaları
+ _char_ türden diziler
+ _char_ türden diziler ve _String_ sınıfı
+ Referans dizileri
+ Referans dizilerine ilkdeğer verilmesi
+ _String_ türden diziler
+ Dizi dizileri
+ Dizi dizilerinin çok boyutlu dizi gibi kullanılması
+ Dizi dizilerine ilk değer verilmesi
+ Matrisler ve matrislere ilişkin algoritmalar
+ Örnek programlar

## Sınıflarda temel erişim kuralları
+ _public_ erişimcisi
+ _private_ erişimcisi
+ Erişim belirleyicilerin paketlerle ilişkisi
+ _no-modifier_ erişimcisi
+ _protected_ erişimcisi
+ Başlangıç metodunun _private_ olması durumu
+ _Singleton_ sınıf tasarımı: _lazy implementation_
+ Örnek sınıflar

## final değişkenler
+ final yerel değişkenler
+ final parametre değişkenleri
+ final veri elemanları
+ final static veri elemanları
+ final non-static veri elemanları
+ _Singleton_ sınıf tasarımı: _eager implementation_
+ immutable sınıf tasarımı
+ Örnek immutable sınıflar

## enum sınıflar
+ enum sınıflar
+ enum sabitleri
+ enum sınıfların ordinal metotları
+ enum sınıfların values static metotları
+ enum sınıfların sabit dışındaki elemanları
+ enum sınıfların başlangıç metotları (constructor)
+ enum’ların eşitlik karşılaştırması
+ enum’ların karşılaştırılması
+ enum sınıfların kullanımı
+ Örnek enum sınıflar

## Sınıflar arası ilişkiler
+ _Composition_
+ _Aggregation_
+ _Association_
+ _Inheritance_
+ Sınıflar arası ilişkilerin modellenmesi

## Türetme (inheritance)
+ _Super class_ (taban sınıf) ve _sub class_ (türemiş sınıf) kavramları
+ Türetme sentaksı
+ Başlangıç metodu içerisinde taban sınıfın başlangıç metodunun çağrılması
+ Başlangıç metodu içerisinde taban sınfın istenilen başlangıç metodunun çağrılması: _super_ sentaksı
+ Başlangıç metodu içerisinde başka bir başlangıç metodunun çağrılması: _this_ sentaksı
+ _protected_ bölümün anlamı
+ Object sınıfı
+ Örnek sınıflar

## Taban sınıf ve türemiş sınıf arasındaki dönüşümler
+ Yukarıya doğru dönüşüm _(upcasting)_
+ Yukarıya doğru dönüşümün anlamı
+ Referansların statik ve dinamik türleri
+ Aşağıya doğru dönüşüm _(down-casting)_
+ Haklı ve haksız dönüşüm kavramı
+ _instanceof_ opetörü
+ Sarmalayan _(wrapper)_ sınıflar
+ Number sınıfı ve metotlarının anlamı
+ Otomatik kutulama _(auto-boxing)_ ve otomatik kutuyu açma _(auto-unboxing)_
+ _final_ sınıflar
+ Örnek programlar

## Sınıflar içerisinde bloklar
+ Sınıfların _static_ blokları _(static initializers)_
+ Sınıfların _static_ olmayan blokları _(non-static initializers)_

## this referansı
+ _this_ referansının anlamı
+ _non-static_ metotlar içerisinde _this_ kullanmı
+ _this_ referansının kullanıldığı örnek durumlar: _fluent_ kalıbı
+ Örnek sınıflar

## null referans
+ _null_ adres kavramı ve _null_ sabiti
+ _null_ referansın kullanıldığı durumlar

## Temel algoritma analizi
+ Algoritmanın karmaşıklığı
+ Karmaşıklığın ölçütü
+ Karmaşıklığın gösterimine ilişkin notasyonlar
+ _Big O_ notasyonu ile çeşitli karmaşıklık durumlarının incelenmesi
+ O(1), O(logn), O(n), O(n * Logn), O(n ^ 2), O(n ^ 3), … , O(n ^ k) karmaşıklıkları
+ O(k ^ n), O(n!) gibi özel karmaşıklıklar

## Dinamik büyüyen dizi veri yapısı
+ Dinamik büyüyen veri yapısına ilişkin temel kavramlar: _capacity_, _size_ vs.
+ Dinamik büyüyen veri yapısına ilişkin metotların karmaşıklık durumları
+ _ArrayList_ ve _Vector_ sınıfları
+ Örnek programlar
+ Örnek bir dinamik büyüyen dizi sınıfının yazılması

## Çok biçimlilik (polymorphism)
+ Çok biçimliliğin programlamaya yönelik tanımları
+ Çok biçimli mekanizma
+ Sanal metotlar
+ Sanal metotların _override_ edilmesi
+ Metotların _override_ edilmesinin anlamı
+ _super_ referansı
+ _Override_ edilen metot içerisinde taban sınıfın aynı metodunun çağrılması _(augmentation)_
+ _Override_ edilen metodun erişim belirleyicisinin erişim anlamında yükseltilmesi
+ _final_ metotlar
+ Çok biçimliliğe ilişkin örnek tasarımlar ve kodlanması

## Soyut sınıflar ve metotlar (abstract classes and methods)
+ Soyut sınıf ve metotların anlamı
+ Soyut metotların _override_ edilmesi
+ Soyut metotların _override_ edilmemesi durumu
+ Soyut sınıfların taban sınıf referansı olarak kullanılması
+ Soyut sınıfların başlangıç metotları
+ Örnek sınıflar

## Exception işlemleri
+ _Exception_ kavramı kullanımı
+ _Exception_ sınıf hiyerarşisi: _Throwable_, _Exception_, _Error_ ve _RuntimeException_ sınıfları
+ _throw_ anahtar sözcüğü ve bir _exception_ nesnesinin fırlatılması
+ _try_ blokları
+ _catch_ blokları
+ _catch_ blokları parametrelerine ilişkin sınıflar ve uygun _catch_ bloğunun bulunması
+ Yeniden fırlatma _(rethrow)_
+ İçiçe _try_ bloklarının bulunması durumu
+ _finally_ bloğu
+ Yakalanamayan _exception_ durumu
+ _Exception_ sınıflarının anlamı
+ _Cause exception_
+ _checked_ ve _unchecked exception_ sınıfları
+ _throws_ anahtar sözcüğü
+ Önemli _exception_ sınıfları
+ Örnek sınıfların _exception_ açısından düzenlenmesi ve genel hale getirilmesi

## Arayüzler _(interfaces)_
+ Arayüzlerin elemanları
+ Arayüzler içerisinde olabilecek elemanların Java sürümlerine göre farklılıkları
+ Bir sınıfın desteklediği arayüzler ve metotların _override_ edilmesi
+ _Marker_ arayüzler, fonksiyonel arayüzler
+ Java 8 ile eklenen arayüz içerisinde _default_ metotlar ve _static_ metotlar
+ Arayüzler ile _abstract_ sınıflar arasındaki farklar
+ Arayüzler arası tür dönüştürme ayrıntıları
+ Çok kullanılan bazı arayüzler
+ _try-with resources_ bloğu ve kullanımı: _AutoCloseable_ ve _Closeable_ arayüzleri

## Dosya işlemleri
+ Dosya ve dizin _(directory)_ kavramları
+ Dosya yol ifadeleri: _absolute_ and _relative_ path
+ Processin çalışma dizini _(current working directory)_
+ Metin _(text)_ ve ikili (binary) dosyalar
+ Dosya üzerinde bütünsel işlemler yapan sınıflar
+ Dosyalar üzerinde ayrıntılı işlem yapan sınıflar
+ _File_ sınıfının dosya ve dizinler üzerinde işlem yapan metotlar
+ _Path_ arayüzü ve _Files_ sınıfı
+ _InputStream_ ve _OutputStream_ soyut sınıfları
+ _FileInputStream_ ve _FileOutputStream_ sınıfları
+ Dosya göstericisi _(file pointer)_ kavramı
+ Dosya göstericisinin _EOF_ durumu
+ Dosyadan okuma ve yazma işlemleri
+ _RandomAccessFile_ sınıfı
+ Dosya göstericisinin konumlandırılması
+ Örnek programlar

## Generic sınıflar ve metotlar
+ Generic sınıflar
+ Generic sınıflarda türetme işlemleri
+ Generic sınıflarda _new_ operatörü ile _<> (diamond syntax)_ kullanımı
+ Generic arayüzler
+ Generic türlerde kısıtlar: _extends_ ve _super_ anahtar sözcüğünün _generic_ parametrelerde kullanımı
+ Generic türlerde joker karakter
+ Generic sınıflarda alt sınır ve üst sınır belirlenmesi _(invariant, covariant ve contra-variant)_
+ Generic metotlar
+ Generic metotlarda parametre türlerinin tespiti
+ Generic türlerin ve metotların generic parametrelerinin arakoda _Object_ olarak aktarılması
+ Örnek sınıflar ve programlar

Önkoşul: Daha önce herhangi bir programlama dilinde uygulamalı çalışma yapmış olmak veya C ve Sistem Programcıları Derneği’nin açmış olduğu Programlamaya Giriş kursu başarıyla bitirmiş olmak.

Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

* Kurs ücreti duyuru sayfasında belirtilmektedir..

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

Java ile Uygulama Geliştirme (I)


Açıklama: Bu kurs Java ortamında uygulama geliştirme becerisini kazandırmayı hedeflemektedir. Aynı zamanda bir uygulama kursu olduğundan her konu ele alınırken uygulamalı çalışmalar yapılacaktır.
Kurs konularından bazıları aşağıdadır:
## Yararlı sınıflar
+ StringBuilder sınıfı
+ BigDecimal sınıfı
+ BigInteger sınıfı
+ Arrays sınıfı
+ Timer sınıfı
+ Çeşiti yararlı sınıfların yazılması

## Jar (Java Archive) dosyaları
+ IntelliJ ve Eclipse ile jar oluşturma
+ Birbirlerini kullanan jar dosyaları
+ Çalışabilen jar dosyaları
+ Bir kütüphane tasarımında dikkat edilecek durumlar
+ Çeşitli profesyonel kütüphaneler

## Annotation’lar
+ Annotation bildirimi
+ Annotation’ın anlamı
+ Class, Source ve runtime annotation’lar
+ Retention annotation
+ Target Annotation
+ Inherited Annotation
+ Java’nın standart annotation’ları

## Temel Reflection işlemleri
+ Class sınıfı
+ Sınıf elemanlarına ilişkin bilgilerin elde edilmesi
+ Annotation bilgisinin reflection ile elde edilmesi
+ Sınıfın public olmayan elemanlarına çalışma zamanı sırasında erişim
+ Reflection kullanarak çalışma zamanında eklenen jar dosyaları ile plugin oluşturma
+ Örnek uygulamalar

## İçiçe tür bildirimleri
+ Effectively final kavramı
+ Anonim sınıflar
+ Anonim sınıfların değişkenleri yakalaması (capture)
+ Yerel sınıflar
+ Sınıf içinde static sınıf bildirimi (nested classes)
+ Sınıf içinde non-static sınıf bildirimi (inner classes)
+ Yerel sınıflar (local classes)
+ Örnek uygulamalar

## Java Programlama diline eklenen yeni özellikler
+ Özellikle Java 8 ile eklenen özellikler ile kurs sırasındaki son Java versiyonuna göre eklentiler anlatılacaktır
+ Fonksiyonel arayüzler (functional interfaces)
+ java.util.function paketi içerisindeki fonksiyonel arayüzler
+ Lambda ifadeleri
+ Lambda ifadelerinde değişkenlerin yakalanması (capture)
+ Lambda ifadelerinde tür çıkarımı
+ Lambda geri dönen metotlar
+ Optional sınıfları (Optional, IntOptional, LongOptional ve DoubleOptional sınıfları)
+ var değişkenler (Java 10)
+ switch expression (Java 14)
+ record türleri (Java 14)
+ Module kavramı
+ Örnek uygulamalar

## Java ile Fonksiyonel Programlama
+ Fonksiyonel programlama tekniği
+ Java’ da fonksiyonel programlama
+ Parametresi fonksiyonel arayüz referansı olan metotlar
+ Callback kavramı
+ Örnek uygulamalar

## Nesne tutan sınıfların (collections) ayrıntılı incelenmesi
+ İleri generic işlemleri
+ Iterable ve Iterator arayüzleri
+ Bir sınıfın for-each döngü deyimi ile dolaşılabilir biçimde yazılması
+ Örnek sınıfların yazılması ve jar dosyaları oluşturma
+ Collection arayüzü ve anlamı
+ Liste tarzı collection sınıflar ve List arayüzü
+ Object sınıfının equals metodu ve anlamı
+ Küme tarzı collection sınıflar ve Set arayüzü
+ TreeSet sınıfı
+ Comparable ve Comparator arayüzleri
+ Object sınıfının hashCode metodu ve anlamı
+ HashMap sınıfı
+ Diğer collection sınıflar (Stack, PriorityQueue vb.)
+ Sözlük tarzı collection sınıfları ve Map arayüzü
+ HashMap sınıfı
+ Collections sınıfının yararlı metotları
+ Uygulama geliştirmede doğru collection sınıflarının seçimi
+ Örnek uygulamalar

## Stream API kullanımı
+ Stream arayüzü ve anlamı
+ Stream, IntStream, LongStream ve DoubleStream arayüzleri
+ StreamSupport sınıfı
+ Stream arayüzlerinin metotları
+ Örnek uygulamalar

## Spring uygulamaları
+ Maven build aracı kurulumu ve kullanımı
+ Spring framework
+ Spring boot
+ Core annotaions (Component, Configuration, Bean, Order, DependsOn, Qualifier vb.)
+ Bean kavramı ve bean sınıflar
+ ApplicationRunner arayüzü
+ Scope annotation
+ application.properties dosyası
+ profile oluşturma
+ yml dosyaları
+ Maven ile jar oluşturma ve kullanma
+ Test işlemleri (JUnit vb)
+ Spring boot uygulamasının jar ile yayınlanması (deployment)
+ Spring asenkron işlemler
+ Scheduled annotation’ı
+ Controller kavramı ve MVC (Model View Controller) tasarım kalıbı
+ Servlet kavramı, HttpServletRequest ve HttpServletResponse sınıfları
+ Spring REST servisler (JSON ve XML)
+ Katmanlı mimari uygulamaları (Repository, Service ve Application katmanları)
+ DTO (Data Transfer Object) tasarım kalıbı
+ MVVM (Model View View Model) tasarım kalıbı
+ Map Struct kütüphanesi
+ ModelMapper kütüphanesi
+ JDBC ile veritabanı işlemleri
+ Spring JPA ve Hibernate
+ CrudRepository arayüzü
+ JPARepository arayüzü
+ PostgreSQL veritabanı, JPA, Hibernate kullanımı
+ Thymeleaf kullanımı (temel düzeyde)
+ Spring boot exception işlemleri
+ Spring Security
+ Spring ile reactif programlama (WebFlux)
+ Spring MongoDB uygulamaları
+ Mikroservisler
+ Örnek Uygulamalar
+ Ve diğerleri…

Önkoşul: Daha önce Java Programlama Dili ile Nesne Yönelimli Programlama konusunda çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu Java ile Nesne Yönelimli Programlama kursuna katılmış olmak.

*Ücretleri Sorunuz.

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

* Kursumuz gerçek zamanlıdır. Derslerimiz interaktif olarak yapılmaktadır.

Programlamaya Giriş


Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

Açıklama : Programlamaya Giriş kursu program yazmak isteyenler için bir başlangıç kursudur. Kursun temel amacı programlama mantığını öğretmek ve sonucunda katılımcıları herhangi bir programlama dilinde çalışma yapmaya hazır hale getirmektir. Kursta Java programlama dili kullanılacaktır. Ancak kursun amacı Java programlama dilini öğretmek değildir. Java sadece bir araç olarak kullanılacak, çalışma ortamından ve sözdiziminin C programlama diline benzerliğinden faydalanılacaktır.

Programlamaya Giriş kursu C, C++, C#, Java, Python gibi programlama dili kurslarından farklıdır. Programlama dilinin öğretildiği kurslarda somut şeyler öğretilir, bundan dolayı kursun içeriği hazırlanabilir. Ancak programlamaya giriş kursunda daha çok soyut şeyler öğretilir, bu nedenle bu kurs için hazırlanacak bir içerik gerçekçi olmayacaktır. Bu kursta temel programlama mantığı, bilgisayara bir işi tarif etme öğretilmektedir.

Önkoşul : Windows işletim sistemlerinden birini kullanmış olmak.

Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

Kurs ücreti duyuru sayfasında belirtilmektedir.

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

 

 

İleri Android Programlama ve Uygulama Geliştirme


Açıklama : Bu kurs Android işletim sistemi üzerinde temel düzeyde uygulama geliştirmiş olan kişilere yönelik ileri düzey bir programlama kursudur. Android işletim sistemi üzerinde aşağı seviyeli geliştirme ortamı (NDK) da ayrıca ele alınacaktır. NDK uygulamaları için C/C++ bilinmesi gerekmektedir. Ancak bilmeyen kişiler de kavramsal olarak bilgi kazancı sağlayabilirler. Bununla birlikte genel ileri düzey (örneğin TCP/IP Client-Server programlama) uygulamaların da Android işletim sisteminde geliştirilmesi de kurs kapsamındadır. Tüm konular uygulamalı olarak ele alınacaktır.

Kurs konularından bazıları aşağıdadır:
• Android programlarının test edilmesi.
• Android işletim sisteminin aşağı seviyeli incelenmesi
• Android sistem programlama
• İleri çizim işlemleri (2B/3B işlemler, OpenGL ES kullanımı)
• Android ile sanal ve genişletilmiş gerçeklik (Virtual/Augmented reality) uygulamarı geliştirme
• Android için geliştirilen yazılımların güvenliği.
• Android işletim sistemi ile çeşitli sensörlerin kullanımı
• Çokluortam (multimedia) programlama
• NDK kullanarak uygulama geliştirme
• Android için geliştirilen yazılımların performanslarının artırılmasına yönelik işlemler
• Android üzerinde ileri düzey haberleşme uygulamaları geliştirme (TCP/IP programlama, Web Servisleri, Whatsapp benzeri programların yazılması)
• Temel düzeyde Android TV ve giyilebilir (wearable) teknolojiler için uygulama geliştirme
• Ve diğerleri…

Ön Koşul : Android işletim sistemi üzerinde temel düzeyde uygulama geliştirmiş olmak veya derneğimizin açmış olduğu “Android Programlama” kursunu başarıyla bitirmiş 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.

UML ve Tasarım Kalıpları (C# ve Java Kod Örnekleriyle)


Modül 1 : UML (Unified Modelling Language)

• 1.1 : Modelleme Olgusu

• 1.2 : Modelleme Dilleri

• 1.3 : UML (Unified Modelling Language)

o 1.3.1 : UML Standardizasyonu ve UML Versiyonları

o 1.3.2 : UML Kullanımının Getirileri

• 1.4 : UML Modelleri ve İlişkili Diyagramlar

• 1.5 : UML Destekli Tasarım Araçları

• 1.6 : Constraint, TaggedValue ve Stereotype Kavramları

• 1.7 : Use Case (Kullanım Senaryosu) Diyagramları

• 1.8 : Activity (Faaliyet) Diyagramları

• 1.9 : Nesne Yönelimli Modellemeye İlişkin Temel Kavramlar

• 1.10 : Sınıf ve Nesne Diyagramları

• 1.11 : Nesneler Arasındaki İlişkiler

o 1.11.1 : Association (Referans)

o 1.11.2 : Aggregation (Barındırma, İçerme)

o 1.11.3 : Composition (Bağımlı İyelik)

o 1.11.4 : Generalization (Genelleme)

o 1.11.5 : Realization (Gerçekleme)

o 1.11.6 : Dependency (Bağımlılık)

o 1.11.7 : Use (Kullanma)

• 1.12 : State (Durum) Diyagramları

• 1.13 : Sequence (Etkileşim) Diyagramları

• 1.14 : Communication (İletişim) Diyagramları

• 1.15 : Component (Bileşen) Diyagramları

• 1.16 : Package (Paket) Diyagramları

• 1.17 : Deployment (Dağıtım) Diyagramları

Modül 2 : Dizayn ve Paketleme Prensipleri

• 2.1 : Dizayn Prensipleri

o 2.1.1 : Ayrıştırma (Decomposition)

o 2.1.2 : Kohezyon (Yapışıklık)

o 2.1.3 : SRP : Tek Sorumluluk (Single Responsibility) Prensibi

o 2.1.4 : LCP : Zayıf Bağlaşım (Low Coupling) Prensibi

o 2.1.5 : Yeniden Kullanılabilirlik (Reusability) Prensibi

o 2.1.6 : OCP : Açık/Kapalı Prensibi (Open/Closed Principle)

o 2.1.7 : LSP : Liskov Yerine Geçme Prensibi (Liskov Substitution Principle)

o 2.1.8 : DIP : Bağımlılığı Ters Çevirme Prensibi (Dependency Inversion Principle)

o 2.1.9 : ISP : Arayüz Ayırma Prensibi (Interface Segregation Principle)

o 2.1.10 : Polimorfizm Nedir

• 2.2 : Granülarite ve Paket Kavramı

• 2.3 : Paketlemeye İlişkin Prensipler

o 2.3.1 : REP : Yeniden Kullanılabilir Sürüm Eşdeğerliği Prensibi (Release Reuse Equivalence Principle)

o 2.3.2 : CCP : Ortak Kapatma Prensibi (Common Closure Principle)

o 2.3.3 : CRP : Ortak Yeniden Kullanım Prensibi (Common Reuse Principle)

o 2.3.4 : ADP : Çevrimsiz Bağımlılık Prensibi (Acyclic Dependencies Principle)

o 2.3.5 : SDP : Kararlı Bağımlılıklar Prensibi (Stable Dependencies Principle)

o 2.3.6 : SAP : Kararlı Soyutlamalar Prensibi (Stable Abstractions Principle)

Modül 3 : Dizayn Paternlere Giriş ve Temel Kavramlar

• 3.1 : Giriş

• 3.2 : Patern Kümeleri (Pattern Cluster)

• 3.3 : Idiom (Deyim) Kavramı ve Örnekleri

• 3.4 : Anti-Patern (Karşıt Kalıp) Olgusu

• 3.5 : GOF Sistematiği

Modül 4 : Nesne Oluşturulmasına/Yaratılmasına Ait (Creational) Paternler

• 4.1 : Singleton

• 4.2 : Factory Method / Virtual Constructor

• 4.3 : Prototype

• 4.4 : Object Pool

• 4.5 : Builder

• 4.6 : Abstract Factory

Modül 5 : Davranışsal (Behavioral) Paternler

• 5.1 : Iterator / Cursor

• 5.2 : Observer / Publish Subscribe

• 5.3 : Mediator

• 5.4 : Chain of Responsibility

• 5.5 : Command

• 5.6 : Visitor

• 5.7 : Strategy/Policy

• 5.8 : State

• 5.9 : Template Metot

• 5.10 : Interpreter

• 5.11 : Memento

Modül 6 : Yapısal (Structural) Paternler

• 6.1 : Decorator

• 6.2 : Adapter / Wrapper

• 6.3 : Facade

• 6.4 : Proxy / Surrogate

• 6.5 : Bridge

• 6.6 : Compozite

• 6.7 : Flyweight

Modül 7 : Yazılım Mimarisi ve Mimari Paternler

• 7.1 : Dependency Injection ve (IoC) Inversion of Control

• 7.2 : UI (User Interface) Patern’leri

• 7.3 : MVC (Model View Controller) Patern’i

• 7.4 : Model2 Patern’i (FrontController ve HTTP Interceptor)

• 7.5 : MVP (Model View Presenter) Patern’i

• 7.6 : PM (Presentation Model) ve MVVM (Model-View-ViewModel) Patern’leri

• 7.7 : İş Katmanı (Business Layer) Paternleri

• 7.8 : Transaction Script Patern’i

• 7.9 : Table Module Patern’i

• 7.10 : Active Record Patern’i

• 7.11 : Domain Model Patern’i

• 7.12 : Repository Patern’i

• 7.13 : Special Case Patern’i

• 7.14 : Seperated Interface ve Plugin Patern’leri

• 7.15 : APM Patern’i

• 7.16 : Service Locator Patern’i

• 7.17 : Diğer mimari paternler

Modül 8 : Yazılım Geliştirme Sürecinin Modellenmesi

• 8.1 : Proje Yönetiminin Temel Kavramları

• 8.2 : Şelale (Waterfall) Yöntemi

• 8.3 : Spiral Yöntemi

• 8.4 : XP Sıra dışı (Extreme) Programlama ve Scrum

• 8.5 : RUP (Rational Unified Process)

• 8.6 : CRC (Class, Responsibilities, Collaborators)

• 8.7 : MSF (Microsoft Solutions Framework)

• Ve diğerleri …

Önkoşul : C# ve/veya Java programlama dilleri konusunda temel bilgilere sahip olmak ya derneğimizin açmış olduğu C# – Java ile Nesne Yönelimli Programlama kurslarına katılmış 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# Programcıları için Java


Açıklama : Bu kurs C# Programlama Dilini bilen programcıların Java Programlama Diline geçişlerini sağlamayı amaçlamaktadır. Kurs içerisinde Java Programlama Dili, katılımcıların C# Programlama Dilini bildikleri varsayımıyla ele alınıp anlatılmaktadır.

Önkoşul:
C# Programlama Dilini bilmek ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C# İle Nesne Nesne Yönelimli Programlama kurslarını başarıyla bitirmiş olmak.

* Ücreti sorunuz.