GERİ DÖN

Ders Öğretim Planı


Dersin Kodu Dersin Adı Dersin Türü Yıl Yarıyıl AKTS
BGT-104 MOBİL PROGRAMLAMA Ders 1 2 4,00

Önlisans


Türkçe


Bu dersin temel amacı, öğrencilere modern çapraz platform (cross-platform) mobil uygulama geliştirme ekosistemini Flutter framework'ü ve Dart programlama dili üzerinden kapsamlı bir şekilde tanıtmaktır. Öğrencilerin, tek bir kod tabanı kullanarak hem Android hem de iOS platformları için performanslı, görsel açıdan zengin ve kullanıcı dostu arayüzler tasarlayabilmeleri hedeflenmektedir. Ders süresince "her şey bir widget'tır" felsefesi benimsenerek, temel tasarım prensiplerinden karmaşık durum yönetimine (state management), kullanıcı etkileşimlerinden sayfa navigasyonuna kadar geniş bir yelpazede yetkinlik kazandırılması amaçlanır. Ayrıca, öğrencilerin endüstri standartlarında kullanılan VS Code ve Chrome tabanlı hata ayıklama (debugging) süreçlerine hakim olmaları ve modern yazılım geliştirme metodolojilerini mobil platform özelinde uygulayabilmeleri öncelenmektedir.


Öğr. Gör. Süleyman EZDEMİR


1 Mobil uygulama geliştirme ekosistemini (IDE, SDK, emülatör vb.) kurar ve çalışma alanını modern yazılım geliştirme standartlarına uygun şekilde yapılandırır
2 Farklı ekran boyutlarına ve cihaz yönelimlerine uyumlu (responsive), kullanıcı deneyimini (UX) ön planda tutan hiyerarşik kullanıcı arayüzleri (UI) tasarlar
3 Uygulama yaşam döngüsünü (lifecycle) analiz eder ve uygulamalardaki veri değişimlerini arayüze anlık olarak yansıtmak için durum (state) yönetimi mimarilerini uygular
4 Olay güdümlü (event-driven) programlama prensiplerini kullanarak, kullanıcıdan veri alan ve bu verilere tepki veren dinamik, etkileşimli bileşenler geliştirir
5 Veri listeleme yapılarını kurgular ve sayfalar arası geçiş (navigasyon/routing) mimarilerini kullanarak çok sayfalı karmaşık projeler oluşturur
6 Geliştirdiği projelerde temiz kod (clean code / refactoring) prensiplerini ve hata ayıklama (debugging) süreçlerini kullanarak kod kalitesini optimize eder ve nihai ürününü sunuma/yayına hazırlar

Birinci Öğretim


Yok


Dersin verimliliğini artırmak amacıyla "Low-Code/Fast-Prototype" yaklaşımı benimsenmelidir. Öğrencilerin karmaşık parantez yapılarında kaybolmaması için VS Code üzerindeki "Flutter Extension" ve "Bracket Pair Colorization" gibi araçların etkin kullanımı teşvik edilmelidir. Teorik bilginin hemen ardından Chrome tabanlı hızlı önizleme (Hot Reload) özelliği kullanılarak anlık dönüt alınması kritiktir. Öğrencilerin kendi projelerini geliştirirken GitHub üzerindeki açık kaynaklı repolardan ve resmi Flutter dokümantasyonundan yararlanma becerisi kazanması dersin sürdürülebilirliği açısından büyük önem taşımaktadır.


Ders içeriği, Flutter SDK'sının kurulumu ve çalışma ortamının yapılandırılmasıyla başlayarak, bildirimsel (declarative) UI geliştirme mantığını kapsar. İlk haftalarda temel yapı taşları olan Text, Center ve Container widget'ları ile görsel tasarımın temelleri atılır. Ardından, Row ve Column gibi düzen (layout) widget'ları ile arayüz hiyerarşisi oluşturulur. Dersin ilerleyen aşamalarında, uygulamanın dinamizmini sağlayan Stateless ve Stateful widget ayrımı, setState mekanizması ile durum yönetimi, kullanıcıdan veri alma (TextField) ve etkileşimli bileşenler (ElevatedButton) işlenir. Son bölümlerde ise çoklu veri listeleme (ListView), sayfalar arası geçiş mantığı (Navigator) ve modüler kod yapısı üzerinde durulur.


Hafta Teorik Uygulama Laboratuvar
1 Flutter kurulum mantığı, SDK yapısı, VS Code arayüzü ve "Her şey bir widget'tır" felsefesinin akademik temelleri. MaterialApp ve Scaffold yapılarının incelenmesi. İlk "Merhaba Dünya" uygulamasının Chrome (Web) üzerinde debug edilmesi.
2 Metin widget'ı (Text) parametreleri, TextStyle sınıfı ve widget sarmalama (wrapping) kavramı. TextStyle ile renk, font ve boyutlandırma işlemleri. Center widget'ı kullanarak ekranın tam ortasına stilize edilmiş metin yerleştirme uygulaması.
3 Container widget'ının anatomisi: Padding, Margin, Decoration ve BoxConstraints. BoxDecoration ile kenar yuvarlatma, gölge ve sınır çizgisi oluşturma. Farklı geometrik formlarda ve renklerde kutu tasarımları oluşturma.
4 Dikey eksen kontrolü, MainAxisAlignment ve CrossAxisAlignment kavramlarının analizi. children[] listesi içinde çoklu widget yönetimi. Alt alta dizilmiş elemanlardan oluşan trafik lambası veya menü taslağı uygulaması.
5 Yatay eksen mantığı ve "Taşma Hatası" (Overflow) analizi ve çözüm yöntemleri. Row ve Column yapılarının iç içe kullanımı (Nested Layouts). İkon ve metinlerden oluşan profil kartı başlığı tasarımı.
6 Görünmez widget'lar ile boşluk yönetimi ve Expanded ile duyarlı (responsive) tasarım temelleri. Spacer ve Flexible widget'ları ile elemanları ekran kenarlarına itme. Dengeli bir navigasyon barı (App Bar) arayüzü oluşturma.
7 İlk 6 haftanın mimari özeti ve temiz kod yazım (Refactoring) prensipleri. Statik bir CV/Kartvizit sayfasının tüm bileşenlerle kurgulanması. Karmaşık layout yapılarının (Row içinde Column vb.) pratiği
8 Uygulama yaşam döngüsü, Stateless vs Stateful widget farkları ve State kavramı. Değişken tanımlama ve sınıf (Class) yapısı içindeki konumlandırma Statik bir sayfanın Stateful yapıya dönüştürülmesi hazırlığı.
9 Event-driven programming (Olay güdümlü programlama) ve callback fonksiyonları. onPressed olayı ve Debug Console üzerinden çıktı takibi. Basıldığında konsola veri gönderen butonlu bir arayüz geliştirme.
10 Reaktif programlama mantığı ve build metodunun tetiklenme mekanizması. setState ile değişken değerlerinin arayüze anlık yansıtılması. İnteraktif sayaç (Counter) uygulaması geliştirme.
11 Metin giriş alanları, InputDecoration ve kullanıcı girdisi yakalama yöntemleri onChanged ve onSubmitted olayları ile veri işleme. Dinamik bir "Hoşgeldiniz" ekranı ve anlık metin yansıtma uygulaması.
12 Kaydırılabilir bileşenler ve bellek yönetimi (Scrollable widgets). ListView ve ListTile kullanarak liste tabanlı tasarımlar. Statik verilerden oluşan bir telefon rehberi veya haber akışı simülasyonu.
13 Yığın (Stack) yapısı tabanlı navigasyon mantığı: Push ve Pop işlemleri. MaterialPageRoute ile yeni sayfalar açma ve geri dönme. Giriş sayfası ve Ana sayfa arasında geçiş yapan iki sayfalı uygulama.
14 Dönem boyunca işlenen tüm widget ve metodların entegrasyonu. Çok sayfalı, etkileşimli ve form içeren bir final uygulaması prototipi. Final projesinin hata ayıklama süreci ve sunuma hazırlanması.

Ana Kaynak: github.com/ezfesoft (Ders notları, Antigravity kod kalıpları ve örnek projeler) Resmi Dokümantasyon: flutter.dev/docs (Resmi Flutter Rehberi) Dil Kaynağı: dart.dev (Dart Programlama Dili Dokümantasyonu) Ek Kaynak: "Flutter Cookbook" (Resmi örnekler arşivi) Topluluk Kaynakları: Medium (Flutter Community), StackOverflow ve YouTube (Flutter resmi kanalı)


Ders, "Önce Uygula, Sonra Kuramsallaştır" metodolojisiyle işlenmektedir. Her hafta başında ilgili konuya ait "Antigravity" kod bloğu öğrencilerle paylaşılarak işleyen bir yapı üzerinden ders başlatılır. Teorik anlatım, bu hazır yapı üzerindeki parametrelerin manipüle edilmesiyle eş zamanlı yürütülür. Sınıf içi canlı kodlama (live coding) seansları ile hata ayıklama süreçleri gösterilir. Ara sınav ve final projeleri, öğrencilerin yaratıcılıklarını serbest bırakan ancak belirli widget yapılarını kullanmalarını zorunlu kılan tasarım odaklı görevlerden oluşur. Laboratuvar saatlerinde ise bireysel mentörlük yapılarak öğrencilerin karşılaştığı syntax (sözdizimi) hataları üzerinde durulur.


Yarıyıl (Yıl) İçi Etkinlikleri Adet Değer
Ara Sınav 1 100
Toplam 100
Yarıyıl (Yıl) Sonu Etkinlikleri Adet Değer
Proje Sunma 1 100
Toplam 100
Yarıyıl (Yıl) İçi Etkinlikleri 40
Yarıyıl (Yıl) Sonu Etkinlikleri 60

Bu ders kapsamında edinilen yetkinlikler, yazılım geliştirme sektöründeki "Mobil Uygulama Geliştirici" veya "Frontend Developer" staj pozisyonları için doğrudan altyapı oluşturmaktadır. Öğrenciler, dönem sonunda geliştirdikleri final projelerini dijital portfolyolarına (GitHub/LinkedIn) ekleyerek staj mülakatlarında somut çıktılar sunabilirler. Derste işlenen kullanıcı etkileşimi, veri yönetimi ve navigasyon gibi konular, kurumsal staj yerlerinde beklenen temel teknik gereksinimlerle örtüşmektedir.


Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Ara Sınav 1 1 1
Final Sınavı 1 1 1
Derse Katılım 14 4 56
Bireysel Çalışma 14 4 56
Ara Sınav İçin Bireysel Çalışma 3 1 3
Final Sınavı içiin Bireysel Çalışma 3 1 3
Toplam İş Yükü (saat) 120

PÇ 1 PÇ 2 PÇ 3 PÇ 4 PÇ 5 PÇ 6 PÇ 7 PÇ 8 PÇ 9 PÇ 10 PÇ 11 PÇ 12 PÇ 13 PÇ 14 PÇ 15 PÇ 16 PÇ 17 PÇ 18 PÇ 19 PÇ 20 PÇ 21 PÇ 22 PÇ 23 PÇ 24
ÖÇ 1 3 2 5 2 2 4 3
ÖÇ 2 3 3 5 3 4 4 4
ÖÇ 3 4 3 5 4 4 4 4
ÖÇ 4 4 4 5 4 4 4 4
ÖÇ 5 4 4 5 4 5 4 2 5
ÖÇ 6 3 5 5 5 5 4 5 5
* Katkı Düzeyi : 1 Çok düşük 2 Düşük 3 Orta 4 Yüksek 5 Çok yüksek