| ÖÇ | Bloom düzeyi | RAP1 | RAP2 |
|---|---|---|---|
| ÖÇ.1 Doğrusal/doğrusal olmayan yapılar | Anlama | ✓ | ✓ |
| ÖÇ.2 Zaman/uzay karmaşıklığı (Büyük O) | Analiz | ✓ | ✓ |
| ÖÇ.3 Sıralama ve arama | Uygulama | ✓ | ✓ |
| ÖÇ.4 Ağaçlar ve hash tabloları | Uygulama | ✓ | ✓ |
| ÖÇ.5 Çizge algoritmaları | Uygulama | ✓ | ✓ |
| ÖÇ.6 Dosya organizasyonu | Değerlendirme | — | ✓ |
| ÖÇ.7 Yapı/algoritma seçimi | Sentez | ✓ | ✓ |
| Araç | Ne için | Çıktı | Koşul |
|---|---|---|---|
| GCC/Clang/MSVC + CMake | C uygulamasını derleme | Çalıştırılabilir (teslim edilmez) | Hatasız, Windows + WSL/Linux |
| GoogleTest + gcov/lcov | Birim testi, kapsam | HTML kapsam raporu | %100 satır kapsamı |
| Doxygen | Kaynak kod belgesi | %100 kapsam; yalnız PDF, HTML klasörü yok |
| Araç | Ne için | Çıktı | Koşul |
|---|---|---|---|
| JDK 21 + Maven | Java uygulamasını derleme | Sürüm (release) derlemesi | mvn clean verify, hatasız |
| JUnit 5 + JaCoCo | Birim testi, kapsam | HTML kapsam raporu | %100 satır kapsamı |
| Javadoc/Doxygen | Kaynak kod belgesi | %100 kapsam; yalnız PDF | |
| Git + GitHub | Sürüm kontrolü | Özel (private) depo | Anlamlı commit'ler, düzgün .gitignore |
| GitHub Actions (isteğe bağlı) | Sürekli entegrasyon | CI durumu | Etkinse, birleştirmeden önce yeşil olmalı |
ucoruh) ve takım arkadaşınızı collaborator ekleyin| Kontrol | Şablon | Depo adı |
|---|---|---|
| Vize (C) | cpp-cmake-ctest-template |
cen207-proje-ad-soyad-c |
| Final (Java) | eclipse-java-maven-template |
cen207-proje-ad-soyad-java |
Her iki şablon da derleme, birim testi, dokümantasyon üretimi, kapsam
ölçümü ve paketlemeyi hazır verir — bunların üzerine inşa edersiniz.
GitHub Free'de özel (private) bir depoda GitHub Pages sitesi açılmaz. Her şeyi kendi bilgisayarınızda gösterirsiniz:
7-build-all-windows.bat (Linux/WSL: 7-build-all-linux.sh) derler, test eder, bütün raporları üretir9-open-site-windows.bat (Linux: 9-open-site-linux.sh) tam siteyi http://localhost adresinde açar: bütün raporlar (testler, kod kapsamı, dokümantasyon kapsamı; Windows ve Linux) ve API belgelerirelease/ bütün çıktıları tutar: uygulama/exe, kütüphane, raporlar, API belgeleri, site.zip, kaynak kod, ASSETS.md, SHA256SUMS.txt10-release-windows.bat (Linux: 10-release-linux.sh) GitHub Release'i oluşturur; sürümler özel depolarda da çalışırGösterimde sırayla neyi açıp göstereceğiniz:
9-open-site-..., http://localhost adresinde).release/ klasörünün içeriği.lib — veri yapıları ve algoritmalar buradaapp — konsol menüleri ve kullanıcı etkileşimi; lib'i kullanırtest — birim testleri; lib'i kullanırBaşlamadan önce: ortamınızın hazır olduğundan emin olun — Ön
Gereksinimler sayfasına/sunumuna bakın.
Her kodun yanında hangi haftada işlendiği ve ölçtüğü ÖÇ vardır.
Her yapının temel işlemlerini (ekleme, silme, arama, listeleme…)
kendiniz yazarsınız.
Hazır kütüphane yapıları (ör. Java java.util) bu gereksinimlerin
yerine sayılmaz.
| Kod | Gereksinim | Hafta | ÖÇ |
|---|---|---|---|
| V1 | Bağlı liste: çift + XOR/dairesel; ekleme, silme, arama, iki yönde gezinme | 2 | ÖÇ.1 |
| V2 | Seyrek matris: yalnız dolu hücreleri saklama; okuma, yazma, satır/sütun gezme | 2 | ÖÇ.1 |
| V3 | Yığın ve kuyruk: dizi ya da bağlı liste tabanlı | 3 | ÖÇ.1 |
| Kod | Gereksinim | Hafta | ÖÇ |
|---|---|---|---|
| V4 | Ağaç ve öbek: ikili ağaç + 3 dolaşma; öbek tabanlı öncelik kuyruğu; öbek sıralaması | 4 | ÖÇ.1, ÖÇ.4 |
| V5 | Çizge ve dolaşma: komşuluk listesi/matrisi; BFS ve DFS | 5 | ÖÇ.1, ÖÇ.5 |
| V6 | Arama ve hash: ikili arama; hash tablosu + çakışma çözümü | 6 | ÖÇ.3, ÖÇ.4 |
| Kod | Gereksinim | Hafta | ÖÇ |
|---|---|---|---|
| F1 | Java'ya taşıma: V1–V6'nın generics'li sürümü; tek menüde bütün özellikler | 9–14 | ÖÇ.1, ÖÇ.7 |
| F2 | Çizge algoritmaları: MST/en kısa yol/topo-sıralama/SCC/döngü/max-akıştan ≥2'si | 9 | ÖÇ.5 |
| F3 | Sıralama: ≥3 algoritma, veri boyutlarında süreli karşılaştırma | 10 | ÖÇ.2, ÖÇ.3 |
| Kod | Gereksinim | Hafta | ÖÇ |
|---|---|---|---|
| F4 | BST ve AVL: dengeleme dönüşleri; ekleme, silme, arama, aralık sorgusu | 11 | ÖÇ.4 |
| F5 | Dize algoritmaları: KMP/Boyer–Moore + düzenleme uzaklığı/LCS | 12 | ÖÇ.1, ÖÇ.3 |
| F6 | Trie ve ayrık kümeler: önek ağacı + union-find | 9, 12 | ÖÇ.4 |
| Kod | Gereksinim | Hafta | ÖÇ |
|---|---|---|---|
| F7 | Dosya organizasyonu: sıralı + doğrudan erişimli dosya; dosyada çakışma çözümü | 13 | ÖÇ.6 |
| F8 | B+ ağacı dizini: dosya kayıtları için ikincil anahtar dizini | 14 | ÖÇ.4, ÖÇ.6 |
| F9 | Genişleyen dosyalar: genişletilebilir hash ya da dış birleştirmeli sıralama | 14 | ÖÇ.3, ÖÇ.6 |
.bin/.dat) — kayıtlar yeniden başlatmada kalır.gitignore;| Teslim | Vize | Final |
|---|---|---|
| Kaynak kod arşivi (derlenmiş dosya yok) | ✓ | ✓ |
Rapor (.docx): tasarım, karmaşıklık, ölçüm, kapsam ekran görüntüleri |
✓ | ✓ (güncellenmiş) |
| Doxygen/Javadoc çıktısı — yalnız PDF | ✓ | ✓ |
| Test kapsamı raporu (HTML, arşiv içinde) | ✓ | ✓ |
| Sunum (en çok 10 slayt) | — | ✓ |
| Video (kişi başı en çok 4 dk) | — | ✓ |
| Canlı gösterim ve sorular (~10 dk/takım) | 7. hafta | 15. hafta |
cen207-vize-ad-soyad.zip
└── cen207-proje-ad-soyad-c/
├── lib/ # V1–V6
├── app/ # konsol menüleri, lib'i kullanır
├── test/ # GoogleTest, lib'i kullanır
├── CMakeLists.txt
├── report/cen207-vize-ad-soyad.docx
├── docs/cen207-vize-ad-soyad-doxygen.pdf
├── coverage/ # gcov/lcov HTML
├── .gitignore
└── README.md
cen207-final-ad-soyad.zip
└── cen207-proje-ad-soyad-java/
├── src/main/java/... # V1–V6'nın taşınmışı F1, artı F2–F9
├── src/test/java/... # JUnit 5
├── pom.xml
├── report/, docs/, coverage/
├── presentation/cen207-final-ad-soyad.pptx
├── video/ # ziplemeden önce eklenir, commit edilmez
├── .gitignore
└── README.md
Her dosyayı ders kodu, kontrol adı ve ad-soyad ile adlandırın:
cen207-vize-ad-soyad.zip · cen207-final-ad-soyad.zip ·
cen207-vize-ad-soyad.docx
Depo adları, araçlar/kurulum bölümündeki kalıbı izler.
main korumalıdır — bütün çalışma özellik dallarındafeature/hash-table, fix/avl-rotation) yapılırmain'e doğrudan push yokConventional Commits: feat(lib): implement AVL rotation ·
fix(app): correct menu navigation · test(hash): add collision unit tests
Çekme istekleri: dalınızdan main'e açın; takım arkadaşınız neyin
değiştiğini ve nasıl test edildiğini inceleyip birleştirmeden önce onaylar
midterm-v1.0, final-v1.0| Düzey | Anlamı |
|---|---|
| 5 — Mükemmel | Her şey çalışıyor, testli, belgeli; gösterimde adım adım açıklanabiliyor |
| 4 — İyi | Küçük eksik/uç durum hatası; genelde tam ve testli |
| 3 — Yeterli | Temel işlemler çalışıyor; test/belge/ölçümde belirgin eksik |
| 2 — Zayıf | Derleniyor ama çoğu işlem hatalı/eksik; açıklama zayıf |
| 1 — Kanıt yok | Teslim edilmemiş ya da çalışmıyor |
Puan = (düzey ÷ 5) × kriter puanı.
| # | Kriter | Kapsam | Puan |
|---|---|---|---|
| 1 | Doğrusal yapılar | V1 listeler, V2 seyrek matris, V3 yığın/kuyruk | 20 |
| 2 | Ağaç ve öbek | V4 dolaşmalar, öbek, öbek sıralaması | 15 |
| 3 | Çizge ve dolaşma | V5 gösterim, BFS/DFS | 15 |
| 4 | Arama ve hash | V6 ikili arama, hash, çakışmalar | 10 |
| 5 | Karmaşıklık analizi | Büyük O + ölçüm tablosu | 10 |
| 6 | Problem çözümleme, yapı seçimi | Raporda "neden bu yapı?" | 10 |
| 7 | Yazılım mühendisliği | CMake, testler %100, belge %100, GitHub | 20 |
| # | Kriter | Kapsam | Puan |
|---|---|---|---|
| 1 | Taşıma + tümleşik uygulama | F1 generics, tek menü, binary dosya | 10 |
| 2 | Çizge algoritmaları | F2, iki algoritma | 10 |
| 3 | Sıralama | F3, üç algoritma, karşılaştırma | 10 |
| 4 | Dengeli ağaçlar | F4 BST/AVL, dönüşler, aralık sorgusu | 15 |
| 5 | Dizeler ve yapılar | F5 arama/hizalama, F6 trie/union-find | 15 |
| 6 | Dosya organizasyonu | F7 dosyalar, F8 B+ dizini, F9 hash/sıralama | 20 |
| 7 | Mühendislik + sunum | Maven, testler %100, belge, video, gösterim | 20 |
.gitignore doğru mu?lib/app/test ve bağımlılıklarını gösterinstruct, malloc/free, dosya G/Ç, hata ayıklayıcıda çağrı yığınıTakım yerine tek başıma çalışabilir miyim? Evet — en çok
5 kişi, tek başına çalışmaya izin var. Takımlar 3. hafta sonunda kesinleşir.
İki takım aynı konuyu isterse? Teams tablosuna ilk yazan alır.
Onaylı konuyu değiştirebilir miyim? Hayır — proje planıyla birlikte kesinleşir.
Kapsam %100'ün altında kalırsa? Kabul edilmez (bkz. kabul koşulları)
— son tarihten önce %100'e ulaşın.
Kütüphane koleksiyonları (ör. java.util) sayılır mı? Hayır —
temel işlemleri kendiniz yazarsınız.
Depoda/arşivde derlenmiş dosya olabilir mi? Hayır — .gitignore ile
kaldırın; varlığı reddedilme nedenidir.
| Aralık | Tema |
|---|---|
| 001–025 | Ulaşım, harita ve rota |
| 026–050 | Oyun ve bulmaca |
| 051–075 | Metin, dil ve arama |
| 076–100 | Bilim, sağlık ve biyoinformatik |
| 101–125 | Ağlar ve bilgisayar sistemleri |
| 126–150 | Lojistik, üretim ve ticaret |
| 151–175 | Medya, sosyal ağ ve kültür |
| 176–200 | Kent, çevre, afet ve tarım |
Bir şehrin metro/tramvay/füniküler hatlarını tek ağda birleştiren; en
hızlı ya da en az aktarmalı rotayı öneren konsol uygulaması (~12 hat, 250 istasyon).
Ekin tamamı — sekiz grup, 200 konu kutusunun tümü — proje rehberi
sayfasında, bu sunumun içeriğinin hemen ardından.
Göz atın, birini seçin, takım-konu tablosuna yazın.
Ders web sitesi: ucoruh.github.io/ce205-data-structures
Sırada: proje rehberi sayfasındaki tam konu listesine göz atın
Speaker note: Bu sunum, proje rehberi sayfasını bölüm bölüm izler — hızlı başvuru sürümü olarak düşünün.
Speaker note: C ve Java sürümleri iki ayrı proje değildir — Java sürümü aynı uygulamayı genişletir.
Speaker note: Bu sunumdaki her soru, sonunda bu dört bilgiye dayanıyor.
Speaker note: "Her konuda zorunlu" kilit ifade — konu hikâyeyi değiştirir, gereksinim listesini değil.
Speaker note: Altı aşama; haftalık planın tamamı izlencededir.
Speaker note: Haftalık planın tamamı izlencededir — bu yalnızca projenin kendi aşamaları.
Speaker note: İzlencedeki aynı formüller, şimdi her kontrolün hangi ÖÇ'leri ölçtüğüyle eşleştirilmiş.
Speaker note: RAP1/RAP2 bu sunumun konusu olan iki kontrol noktası.
Speaker note: ÖÇ.6 (dosya organizasyonu) yalnız RAP2'de görünür — 13–14. haftada, vize kontrolünden sonra işlenir.
Speaker note: Ön Gereksinimler sunumundaki aynı araç zinciri, şimdi tam şablon ve depo adlarıyla.
Speaker note: "Yalnız PDF, HTML klasörü yok" gerçek bir kabul koşulu — arşivde HTML Doxygen çıktısı reddedilme riski taşır.
Speaker note: Java deposu ayrıca bir sürüm (release) üretmeli — bu, gösterim sırasında kontrol edilir.
Speaker note: Dönem boyunca açık (public) bir depo, kod kalitesinden bağımsız olarak kendi başına bir kabul koşulu sorunudur.
Speaker note: İki şablon da github.com/ucoruh altında bulunur — "Use this template" burada kullanılır.
Speaker note: Ayrıntılar her şablonun README'sinde ve docs/guide/ klasöründeki "Showing your project without GitHub Pages" sayfasında.
Speaker note: Neredeyse her rubrik kriteri, app'e dağılmış değil özellikle lib'te olması gereken koda karşılık gelir.
Speaker note: 200 konu, sekiz grup, tek kural: tabloya ilk yazan takım alır.
Speaker note: Bu sunum, sonlara doğru bir temsilî konuyu gösterir — 200'ü tam olarak yalnız sayfada, bilerek.
Speaker note: Öğrencilerin unuttuğu adım 3'tür — onay, tabloya isim yazmakla değil, planla birlikte gerçekleşir.
Speaker note: Gereksinimin kendisi — hangi yapı, hangi işlem — hiç değişmez, yalnızca uygulamadaki hangi özelliğin bunu gösterdiği değişir.
Speaker note: Vize (C) için V1–V6, final (Java) için F1–F9 — kütüphaneden değil, sizin tarafınızdan gerçekleştirilir.
Speaker note: Bu, gösterimde kontrol edilir — kütüphane çağrısı değil, KENDİ ekleme/silme kodunuzda satır satır gezinme.
Speaker note: Bu üçü ilk üç içerik haftasında bitmeli — proje planını bunlara göre kurun, tüm listeye göre değil.
Speaker note: V6, vize gösteriminden hemen önceki haftada işlenen son gereksinim — tampon süreyi buna göre planlayın.
Speaker note: F1, C'de zaten kurulmuş her şeyin taşınmasıdır — yeni işlevsellik değildir, ama gerçek bir iştir.
Speaker note: F6, iki ayrı haftada işlenir (trie 9. haftada, ayrık kümeler dizelerle birlikte 12. haftada) — iki geçişte planlayın.
Speaker note: F7–F9, final gösteriminden hemen önceki iki haftada işlenen son üç gereksinim — takvimin en sıkışık kısmı.
Speaker note: "Kalıcı" gösterimde tam olarak sınanır: kayıt ekleyin, programı kapatın, yeniden açın, kaydın hâlâ orada olduğunu gösterin.
Speaker note: Bu dört kural, sunumun ilerisindeki "Kabul koşulları"nda kontrol edilen aynı dört kuraldır — isteğe bağlı cila değildir.
Speaker note: Kontrol başına bir arşiv, rapor kapağında depo bağlantısıyla birlikte.
Speaker note: Sunum ve video yalnız final içindir — vize kontrolü kod, rapor ve canlı gösterimden ibarettir, önceden kaydedilen bir şey yok.
Speaker note: Bu, gitignore'a göre süzülmüş bir GitHub deposu klonudur — açıldığında kendi başına derlenir.
Speaker note: video/ açıkça GitHub'a commit EDİLMEZ — yalnız teslimden hemen önce zip arşivine eklenir.
Speaker note: Tutarsız adlandırma, onlarca teslimi notlandırırken küçük ama önlenebilir bir kafa karışıklığı kaynağıdır.
Speaker note: Bu yalnız tavsiye değil, notlandırılır — "Yazılım mühendisliği" her kontrolde 20 puanlık bir rubrik kriteridir.
Speaker note: Bir gösterim sorusu doğrudan "dallar nasıl kullanıldı, birleştirme/çakışma nasıl çözüldü" diye sorar — bu bir formalite değil.
Speaker note: HER İKİ üyeden anlamlı commit'ler açık bir kabul koşulu — commit'lerin hepsinde tek bir üyenin adı kırmızı bayraktır.
Speaker note: Sürüm etiketi, "değerlendirmeye sunduğunuz durum" ifadesinin tam karşılığıdır — etiketleyin, main o an ne ise onu teslim etmeyin.
Speaker note: İki rubrik, her biri 100 puan, yedişer kriter — her kriter 1–5 başarı ölçeğinde.
Speaker note: Formül önemli: düzey-3 bir kriter puanının %60'ını alır, sıfır değil — kısmi puan gerçek ve doğrusal ölçeklenir.
Speaker note: 1–4. kriterler (65 puan) dört V-kod grubu; 5–7 (35 puan) yalnız kod değil, analiz ve mühendislik.
Speaker note: Yalnız dosya organizasyonu finalde 100 puanın 20'si — mühendislik ve sunumun toplamıyla aynı ağırlık.
Speaker note: Bunlar kaybedilen rubrik puanı değil — bunlardan birini karşılamayan teslim hiç kabul edilmez.
Speaker note: Bu, rubrik uygulanmadan önce kontrol edilen sert bir kapıdır — önce bunları düzeltin, sonra puanı düşünün.
Speaker note: Gösterim takım başına yaklaşık 10 dakika — bunlar soru kategorileri, sabit bir senaryo değil.
Speaker note: "İki üye" tam olarak kontrol edilir — yalnız bir üyenin commit attığı depo başlı başına bir bulgudur.
Speaker note: "Satır satır" gerçektir — kodu gösterip anlatabilmek burada değerlendirilen şeydir.
Speaker note: Bu, kurallar slaytındaki "kalıcılık" testinin tam olarak öğretim üyesi önünde canlı yapılan hâli.
Speaker note: "Ortak anlama"nın yalnız test edilmekle kalmayıp notlandırılmasının nedeni bu bölüm — gösterim bunu doğrudan kontrol eder.
Speaker note: Kod incelemesi ve gösterim, etik ilkelerin tarif ettiği dürüstlüğü tam olarak sınar — bu soyut bir madde değildir.
Speaker note: "Notlandırılmaz", "puan kaybeder"den daha güçlü — açıklanamayan bir bölüm puana hiç dahil edilmez.
Speaker note: En sık sorulanlardan birkaçı — tam liste proje rehberi sayfasında.
Speaker note: Üç cevap da aynı kurala dayanır: takım-konu tablosu ilk gelene, sonra kilitlenir.
Speaker note: Bu üçü de bu sunumun daha önceki "Kabul koşulları" slaydına dayanır — tekrar okumaya değer.
Speaker note: 25'erli sekiz grupta 200 konu — bu sunum haritayı ve tek bir çözümlü örneği gösterir, 200'ünü değil.
Speaker note: Bütün veriler sentetiktir ve her uygulama ağ bağlantısı kullanmaz — 5.3'teki bu kural sekiz grubun tamamında geçerli.
Speaker note: Sonraki iki slayt, bu örüntünün çözümlü örneği olarak tek bir konu kutusunu tam olarak gösteriyor.
Speaker note: Bu, 200 konudan 001 numaralısı — sayfadaki diğerlerine göz atmadan önce örüntünün tamamının görülmesi için tam olarak gösterildi.
Speaker note: V1–V6 ve F1–F9'un her biri tam olarak bir kez geçiyor — 200 konu kutusunun tamamının izlediği kural bu.
Speaker note: Sunuma yalnız bir konu koymak bilinçli bir tercih — 200 konu kutusu sayfaya aittir, 200 slayta değil.
Speaker note: İzlence, Ön Gereksinimler ve bu rehber, 1. haftada her öğrencinin açık tutması gereken üç sayfa.