muratyilmaz / Kodluyoruz-iOS-Bootcamp

Kodluyoruz - iOS Programlama Eğitimi Syllabus'ı

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kodluyoruz.ORG

Swift ile iOS Uygulama Geliştirme Programı (Syllabus - İzlence)

  • Eğitmenler :

Tolga TANER, TolgaTANER43@gmail.com

Kerim ÇAĞLAR, Kerim.CAGLARR@gmail.com

  • Yardıma ihtiyacın mı var?
    • Gitter
      • Odada aktif olarak kimse bulunmasa bile, siz sorunuzu sorun. Odaya bir sonraki girişimizde, sorunuzu görebiliriz ve cevaplandırabiliriz.
    • Syllabus'ı lütfen inceleyiniz; öneri ve düzeltmeler için lütfen "issue" açınız -> issues

Program Açıklaması

Bu program ile Git ve GitHub kullanarak, Sıfırdan - Orta ve İleri seviye iOS Uygulama Geliştirme bilgisine sahip olacaksınız. Profesyonel bir iş yerine yerleşebilmeniz ve profesyonel hayatta karşılacağınız gerçek problemlere çözümler üretebilmeniz için gerekli olan tüm yeteneklere sahip olmanızı sağlamaya çalışacağız.

Ön Şartlar

  • Temel düzeyde Algoritma bilgisi gerekmektedir.
  • Değişken tanımlama, temel veri tipleri, operatörler, kontrol yapıları, döngüler, istisna yönetimi ve nesne yönelimli programlama (OOP) konularında bilgi sahibi olunmalıdır.
  • Fonksiyonel Programlama kavramı, en azından, üzerine bir şeyler konuşabilecek düzeyde biliniyor olmalıdır.

Bir ön şart değil; ancak Objective C ve/veya temel iOS Uygulama Geliştirme konusunda bilginizin olması bir avantajdır.

Programa Genel Bakış

Git ve GitHub ile başlayıp, Swift söz dizimine (syntax) göz atacağız. XCode'un kurulumundan itibaren ciddi bir iOS Uygulama Geliştirme eğitimi alacaksınız. Bu eğitim sırasında öğretilen yapıların profesyonel iş hayatında nerelerde kullanılacağını, işin en iyi pratiklerini (best practices), yanlış yaptığımızda karşılacağımız sorunları ve bunları aşmanın yollarını öğreneceksiniz. Sadece yeni bir şeyler üretmeyecek, bozuk yapıları nasıl "debug" yaparak çözebileceğinizi de öğreneceksiniz. Jr. olsanız bile saygı görmenizi sağlayacak işin yazılı olmayan tüm kurallarını da bileceksiniz.

Eğitim Detayı

  Önemli Not: Sınıfın hızına bağlı olarak, Eğitim Detayındaki tüm bilgiler anlatılmayabilir 
  veya fazlası anlatılabilir. Bazı derslerin programdaki önceliği ve/veya yeri değiştirilebilir. 
  Sınıfın yavaş ilerlemesi durumunda, direkt işe yerleşmenizde birincil dereceden etkili olmayan 
  konular atlanabilecek ve/veya araştırma ödevi olarak verilebilecektir.

Swift Dili ile Programlama

  • Genel Konsept (Core Concept)

    • Swift tarihçesi nedir, diğer platform dillerinden başlıca farklılıkları nelerdir?
    • Swift ile Objective-C yazılım dilinin farkları nelerdir?
    • Xcode kurulumu
    • Run ve Debug Kavramları nedir?
    • Swift Playgrounds nedir?
    • Yorum satırı formatları nelerdir, neden yorum satırı kullanmalıyız?
    • Tanımlama Grubu (Tuples)
    • Boolean ve Operatörler
    • Scope
  • Kontrol Akışı (Control Flow)

    • While Loops
    • For Loops
    • Switch Statements
    • Enumarations
  • Kontrol Akışı (Functions and Optionals)

    • Fonksiyonlara giriş
    • Fonksiyonlara detaylı göz atalım
    • Optional kavramı nedir?
    • Optional kavramına detaylı göz atalım
  • Koleksiyonlar (Collections)

    • Arrays
    • Dictionaries
    • Sets
    • Closures
    • Closures ile collections kavramı
  • Yapı (Structure)

    • Struct Nedir?
    • Properties
    • Computed Properties ile fonksiyonlar arasındaki fark nelerdir?
    • Methods
  • Classes (Sınıflar)

    • Class Nedir? Class ile Struct arasındaki farklılıklar nelerdir?
    • Inheritance
    • Initializers
    • Ne zaman Subclass kullanmalıyız?
    • Protocols
    • Memory Managements
  • Protocol Oriented Programming & Generics

    • Protocol Oriented Programming nedir, Object Oriented Programming ile arasındaki farklar nelerdir?
    • Generics kavramı nedir?
  • Higher Order Functions

    • Sorted
    • Map
    • Filter
    • Reduce

İlk iOS Tabanlı Uygulamamızı Kodlayalım

  • Basit Kontroller (Basic Controls)

    • Uygulamamızı kodlayabilmemiz için gereklilik listesi çıkaralım
    • Button & Actions
    • Alerts
    • Her uygulamada karşılaşabileceğimiz temel problemler nelerdir? Nasıl Yaklaşmalıyız?
    • Actions konusuna daha fazla göz atalım
    • Portrait & Landscape
  • Outlets Kavramı

    • Obje, Veri ve Metotlar
    • Strings
    • Değişkenler
  • Temel Kodlama

    • Uygulamamız için gerekli olan metotları kodlayalım
    • Değişkenler ve Sabitler (Variables & Constants)
    • Type Inference
    • Uygulamamızın skorunu gösterelim
  • Kodlama Pratikleri

    • Local Variables ve Instance Variables farklılıkları
    • Uygulamamıza yeni bir ekran ekleyelim
  • Kullanıcı Arayüzü

    • Image & Labels Styling
    • Buttons & Slider Styling
    • Screen Styling
    • Auto Layout
    • App Icon ve App Name
    • Uygulamamızı Kendi cihazımızda çalıştıralım

Git, GitHub

  • Genel Konsept
    • Git ve GitHub Nedir? Farkları Nelerdir? Niye Kullanmalıyız?
    • Command Line (Terminal) Üzerinde Temel Git Komutları Nelerdir?
    • SourceTree Nedir, Git clientları ile nasıl çalışır?
      • Repository Nedir? Yerelde (Local) ve Uzak Sunucuda (Remote Server) Nasıl Repo Oluşturabiliriz?
      • Ekleme (Add) ve Ara Bölge (Staging Area)
      • Durum (Status) ve Fark Alma (Diff Alma)
      • Bitirmek-Teslim Etmek (Commit) İşlemi
      • Commit Mesajı En İyi Pratikleri (Best Practices)
      • Commitleri Repoya Göndermek (Push) & Commitleri Repodan Çekmek (Pull)
      • Projeyi Çekmek, Sync İşlemi (Feth)
      • Dallanma (Branch) Nedir? Future - Branch Modelleri
      • Birleştirme (Merge) ve Branchler Arası Diff Alma
      • Kopyalama (Clone) ve Çatallandırma (Fork) İşlemleri
    • .gitIgnore
    • GitHub Üzerinde Organizasyon Hesapları
    • Issue Mekanizması
    • Pull Request (PR) İnceleme ve Code Review İşlemleri
    • Pull Request İşlemleri - Değişen Dosyalar (File Changed), Yorum Yapma (Comment), Onaylama (Approve), Değişiklik Talebi (Request Changes)
    • Repo Ayarları

Listeleme (Table View)

  • CheckList Uygulamamıza Genel Bakış

    • Table View yapısını kullanarak yeni uygulamamızı kodlayabilmemiz için gereklilik listesi çıkaralım
    • Table View Controllers
    • Table View Cells
    • Label ekleyelim
    • IndexPaths
    • Rows
    • Protocol nedir?
    • Data Sources & Delegates kavramları nelerdir?
  • MVC

    • Model View Controller
    • Model oluşturma
    • Modelleme ile uygulamamızı geliştirme
    • Refactoring
  • Ekleme ve Çıkarma İşlemleri (Adding and Deleting Items)

    • Navigation Controller nedir?
    • Bar Button Ekleyelim
    • Checklist elemanı ekleyelim
    • Swipe işlemi ile eleman çıkaralım
    • Yeni Ekran ekleyelim
    • Static Cells Nedir?
    • Cell yapısına yeni bir textfield ekleyelim
    • Responder Chain
    • Control Events kullanalım
  • Düzenleme İşlemi (Editing Items)

    • İlk Protocolumuzu yazalım
    • Segues
    • Detail Disclosure Indicator
    • Edit View Controller
    • Segue ile veri aktarımı
    • NSObject
    • Refactoring
  • Diğer Table View Özellikleri

    • Table View ile subclass mantığı
    • Satır Taşıma (Moving rows)
    • Birden çok satır silme (Deleting Multiple Rows)
    • Bölüm (Section) Kavramı
    • Table Indexleme
    • Refactoring
    • Bölümler arası eleman taşıma (Moving Items Between Sections)

Auto Layout

  • Stack Views

    • Auto Resizing nedir?
    • Stack Views
    • Intrinsic Content Size nedir?
    • İç içe Stack Views
    • Stack View seçeneklerine göz atalım
  • Constraints

    • Constraints Kavramı nedir? Neden ihtiyaç duyuyoruz?
    • Yeni bir constraint ekleyelim
    • Constraint düzenleyelim
    • Constraint Inequality
    • Constraint Priorities

Design Pattern

  • Design pattern kavramı nedir? Neden kullanmalıyız?
  • Creational
    • Singleton
  • Structural
    • MVC, MVVM, VIPER
  • Behavioural
    • Visitor

Networking

  • URLSession
  • Concurrency
  • App Transport Security

3 Parti Kütüphaneler (Third Party Libraries)

  • Cocoapods
  • Alamofire
    • Http metotları nelerdir?
  • Kingfisher
    • Image Caching nedir?
  • Jazzy
    • Jazzy ile kodumuzu dökümante edelim

Firebase ile bir Uygulama Geliştirelim

Birim Test (Unit Testing)

  • Test Driven Development(TDD), Behavior Driven Development(BDD) nedir ?
  • Quick ve Nimble kullanarak BDD uygulayalım

Swift Yazılım Dilinin Geleceği

  • Swift Packet Manager
  • SwiftUI

Swift ile Backend

  • Vapor nedir, Vapor ile backend kodlayalım

Yararlı Linkler

Kullanılacak IDE'ler

  • XCode

Kodluyoruz ile ilgili detaylara;

adreslerinden ulaşabilirsiniz...

Kendimizi geliştirmemiz için lütfen Geri Bildirim (Feedback) vermekten çekinmeyiniz..

Info@Kodluyoruz.ORG

About

Kodluyoruz - iOS Programlama Eğitimi Syllabus'ı