İçeriğe geç
Emin Akif Erzurumlu
Bütün çalışmalar

SmartScheduler

Genetik algoritmanın ürettiği ders programını, öğretim üyesinin bakıp güvenebileceği bir arayüze çeviren iş.

Rol
Frontend Lead
Kapsam
Ekip projesi · 5 kişi · Scrum
Yıl
2025 — 2026
Problem

Bir üniversitenin ders programı; derslik kapasitesi, öğretim üyesi müsaitliği, öğrenci grupları ve saat kısıtlarının hepsini aynı anda tutturmayı gerektirir. Elle yapıldığında çakışma kaçınılmazdır. Ekibimiz bu problemi genetik algoritmayla çözen bir motor yazdı — ama bir optimizasyon motorunun çıktısı ham haliyle kimsenin işine yaramaz.

Yaklaşım
  • Çözümü haftalık ızgara üzerinde görselleştirdim: hangi ders nerede, hangi kısıt yüzünden oraya kondu, hangi alternatifler elendi.
  • What-if senaryoları ekledim — kullanıcı bir dersi taşımayı denediğinde hangi kısıtın kırıldığını anında görüyor.
  • Arayüzü Next.js 14, TypeScript ve Tailwind ile kurdum; backend ile sözleşmeyi tiplenmiş API katmanı üzerinden sabitledik.
Bu projedeki işim

Beş kişilik Scrum ekibinde Frontend Lead’im. Genetik algoritma motoru ve .NET tarafındaki servisler benim işim değil — o taraf ekipteki başka bir arkadaşımın. Benim sorumluluğum, motorun ürettiği çözümü insanın okuyabileceği ve sorgulayabileceği hale getirmekti.

Sonuç

Çakışmasız program üretimi, senaryo karşılaştırma ve dışa aktarma çalışır durumda. Proje Docker ve GitHub Actions üzerinde sürekli entegrasyonla ilerledi.

Öğrendiğim

Bir optimizasyon sisteminin en zor kısmı optimizasyon değil, ikna. Kullanıcı "bu ders neden buraya kondu" sorusunun cevabını göremiyorsa, algoritma ne kadar iyi olursa olsun sonucu elle değiştirmeye kalkıyor. Arayüzün işi sonucu göstermek değil, gerekçeyi göstermekmiş.

Kullanılan

Next.js 14 · TypeScript · Tailwind CSS · ASP.NET Core 9 · PostgreSQL 16 · Docker · GitHub Actions