# 15 — Rehber yazısı: yeni açılan bölümler nasıl değerlendirilir **Tarih:** 22 Eylül 2026, gece · **Rol:** rehber-yazari · **Dosya:** `content/rehber/yeni-acilan-bolumler-nasil-degerlendirilir.md` (yeni) · **Commit atılmadı, başka dosyaya dokunulmadı.** **Kanıt işaretleri:** **[D]** birincil kaynak / DB / kod okundu · **[Ç]** çıkarım · **[doğrulanmalı]** yayın öncesi teyit. --- ## Özet (5 madde) 1. **DB'de 2021–2026 (altı yıl) verisi var** → brief'in "ikinci yıl ne oldu" analizi yapılabildi. `programs` 21.493 satır, `programs_arsiv` 3.735 satır (kılavuzdan düşenler), `veri_meta.refresh_2026_tarih = 2026-09-21`. Üç kohort ölçüldü: 2023→2024, 2024→2025, 2025→2026. [D] 2. **Yazının kalbi beklenenden farklı çıktı.** "Yeni program ikinci yıl sıkılaşır" iddiası ölçülebiliyor ve **yeni programa özgü değil**: üç kohortun üçünde de yeni programların sıkılaşma oranı ve ortanca değişimi, kılavuzun geri kalanıyla bir–iki puan farkla aynı (ör. 2025→2026: yeni %83,8 / −%12,6, diğerleri %85,7 / −%12,1). Yazı bu yüzden "ikinci yıl" hikâyesini değil **ilk yıl nerede açıldığı** hikâyesini merkeze aldı. 3. **Gerçek ayırt edici bulgu kontenjan büyüklüğü.** Yeni programın ilk yıl tabanını, aynı bölümün başka üniversitelerdeki taban medyanıyla kıyasladık (584 program): kontenjanı 1–10 olanların **%58,0'i medyandan daha sıkı** açılmış; 41+ kontenjanlılarda bu oran **%5,7**. Temiz, tek yönlü bir ilişki — rakiplerde yok. 4. **İkinci ayırt edici bulgu kalıcılık.** 2025'te ilk kez kontenjan veren 2.004 satırın **%23,7'si 2026 kılavuzunda yok** (kılavuz geneli %8,0); bunun %8,8'i üniversite+bölüm adı düzeyinde de yok, %14,9'u yalnızca burs/dil varyantı değişmiş satırlar. 5. **Veri temizliği kritikti:** ham "yeni program" sayımı 1.152 çıkıyor ama bunun 222'si **"(KKTC Uyruklu)" 1–2 kişilik özel kontenjan satırı** ve doluluk/boşluk tablolarını bozuyordu. Filtrelenince 930 program kaldı. SEO planındaki "1.149 program" rakamı bu filtrelenmemiş sayımla aynı ailedendir; yazıda **930** kullanıldı ve tanım açıkça yazıldı. --- ## DB'de hangi yılların verisi var? `sqlite3 -readonly data/yokatlas.db` ```sql SELECT 2021,count(kontenjan2021),count(sira2021) FROM programs UNION ALL SELECT 2022,count(kontenjan2022),count(sira2022) FROM programs UNION ALL SELECT 2023,count(kontenjan2023),count(sira2023) FROM programs UNION ALL SELECT 2024,count(kontenjan2024),count(sira2024) FROM programs UNION ALL SELECT 2025,count(kontenjan2025),count(sira2025) FROM programs UNION ALL SELECT 2026,count(kontenjan2026),count(sira2026) FROM programs; ``` | Yıl | kontenjan dolu | sıra dolu | |---|---|---| | 2021 | 15.233 | 10.293 | | 2022 | 16.243 | 16.047 | | 2023 | 17.083 | 16.504 | | 2024 | 18.549 | 18.349 | | 2025 | 20.241 | 17.304 | | 2026 | 21.493 | 18.251 | `yerlesen2021` ve `yerlesen2022` **tamamen boş** — doluluk analizleri 2023'ten itibaren yapılabiliyor. Veri 2021'de başladığı için 2021–2022 kohortları "yeni" sayılamaz; kohort analizi 2023'ten başlatıldı ve bu kısıt yazıda açıkça belirtildi. **"Yeni program" tanımı (tüm sorgularda aynı):** `kontenjan IS NOT NULL` ve `Y`'den önceki tüm yılların kontenjanı `NULL`. Evren: `unitur IN ('DEVLET','VAKIF','VAKIF MYO')`, `isim NOT LIKE '%KKTC Uyruklu%'`. --- ## Kullanılan SQL sorguları ve çıktıları ### 1) 2026'da ilk kez kontenjan veren programlar vs. kılavuzun geri kalanı ```sql WITH t AS ( SELECT *, CASE WHEN kontenjan2025 IS NULL AND kontenjan2024 IS NULL AND kontenjan2023 IS NULL AND kontenjan2022 IS NULL AND kontenjan2021 IS NULL THEN 'yeni' ELSE 'mevcut' END grup FROM programs WHERE kontenjan2026 IS NOT NULL AND unitur IN ('DEVLET','VAKIF','VAKIF MYO') AND isim NOT LIKE '%KKTC Uyruklu%') SELECT grup, COUNT(*), SUM(kontenjan2026), SUM(yerlesen2026), ROUND(100.0*SUM(yerlesen2026)/SUM(kontenjan2026),1) doluluk, ROUND(100.0*SUM(CASE WHEN COALESCE(yerlesen2026,0)=0 THEN 1 ELSE 0 END)/COUNT(*),1) pct_hic_bos, ROUND(100.0*SUM(CASE WHEN yerlesen2026>=kontenjan2026 THEN 1 ELSE 0 END)/COUNT(*),1) pct_tam_dolan FROM t GROUP BY 1; ``` | grup | program | kontenjan | yerleşen | doluluk | hiç boş | tam dolan | |---|---|---|---|---|---|---| | mevcut | 19.099 | 702.576 | 691.804 | %98,5 | %2,1 | %88,2 | | yeni | 930 | 26.837 | 23.660 | %88,2 | %1,9 | %74,9 | Filtresiz hâli (karşılaştırma için): yeni 1.054 program, doluluk %88,0, hiç boş %7,5, tam dolan %71,9 — fark tamamen KKTC-uyruklu 1–2 kişilik satırlardan geliyor. Kırılım (aynı WHERE, `GROUP BY unitur, onlisans`): | | program | kontenjan | doluluk | hiç yerleşen olmayan | |---|---|---|---|---| | Devlet · lisans | 131 | 3.257 | %96,5 | 3 | | Devlet · önlisans | 120 | 4.045 | %105,2 | 2 | | Vakıf · lisans | 297 | 8.478 | %80,4 | 9 | | Vakıf · önlisans (VAKIF + VAKIF MYO) | 382 | 11.057 | %85,4 | 4 | Üniversite/ad dağılımı: 930 satır, **145 üniversite** (86 devlet + 59 vakıf), **261 farklı bölüm adı**, vakıf payı 679/930 = %73,0. ### 2) "Taban oluşur ⟺ kontenjan dolar" doğrulaması ```sql SELECT CASE WHEN sira2026 IS NULL THEN 'taban yok' ELSE 'taban var' END, CASE WHEN COALESCE(yerlesen2026,0)>=kontenjan2026 THEN 'doldu' ELSE 'bos' END, COUNT(*) FROM GROUP BY 1,2; ``` Çıktı: `taban var + doldu = 697`, `taban yok + bos = 233`, diğer kombinasyon **0**. Yani yeni programlarda taban oluşması kontenjanın dolmasıyla birebir örtüşüyor. [D] > Not: kılavuzun geneline bakınca bu ilişki birebir değil — 2.092 program `yerlesen>0` olduğu hâlde `sira2026` boş (çoğu TYT önlisans ve özel yetenek tarafı). Yazıda bu genelleme **yalnızca yeni programlar için** yapıldı. ### 3) Yazının kalbi: ilk yıl tabanı, aynı bölümün medyanına göre nerede açıldı? Referans: aynı **normalize bölüm adı** (parantezler atılmış) + aynı `unitur` + aynı `onlisans`, yeni **olmayan** ve `sira2026` dolu en az **5** program. Kıyaslanabilir yeni program: **584**. ```sql WITH norm AS ( SELECT id, unitur, onlisans, sira2026, kontenjan2026 k, TRIM(CASE WHEN INSTR(isim,'(')>0 THEN SUBSTR(isim,1,INSTR(isim,'(')-1) ELSE isim END) ad, CASE WHEN kontenjan2025 IS NULL AND kontenjan2024 IS NULL AND kontenjan2023 IS NULL AND kontenjan2022 IS NULL AND kontenjan2021 IS NULL THEN 1 ELSE 0 END yeni FROM programs WHERE kontenjan2026 IS NOT NULL AND unitur IN ('DEVLET','VAKIF','VAKIF MYO') AND isim NOT LIKE '%KKTC Uyruklu%'), eski AS (SELECT ad,unitur,onlisans,sira2026, ROW_NUMBER() OVER (PARTITION BY ad,unitur,onlisans ORDER BY sira2026) rn, COUNT(*) OVER (PARTITION BY ad,unitur,onlisans) n FROM norm WHERE yeni=0 AND sira2026 IS NOT NULL), ref AS (SELECT ad,unitur,onlisans,AVG(sira2026) medyan FROM eski WHERE rn IN ((n+1)/2,(n+2)/2) AND n>=5 GROUP BY ad,unitur,onlisans), j AS (SELECT y.k, 100.0*(y.sira2026-r.medyan)/r.medyan fark FROM norm y JOIN ref r USING (ad,unitur,onlisans) WHERE y.yeni=1 AND y.sira2026 IS NOT NULL) -- sonra: bant bazında / yüzdelik bazında özet ``` **Kontenjan bandına göre (yazıdaki ana tablo):** | kontenjan | n | medyandan daha sıkı açılan | ortanca fark | |---|---|---|---| | 1–10 | 162 | %58,0 | −%8,3 | | 11–20 | 55 | %25,5 | +%32,6 | | 21–40 | 227 | %14,5 | +%59,8 | | 41+ | 140 | %5,7 | +%147,9 | | Toplam | 584 | %25,5 | +%50,5 | **Yüzdelik dağılımı:** p10 −%45,8 · p25 −%0,6 · p50 +%50,5 · p75 +%165,6 · p90 +%263,4. Pozitif = taban sıralaması büyük = daha gevşek. ### 4) İkinci yıl: yeni programlar vs. kılavuzun geri kalanı Her kohort için ayrı çalıştırıldı (`Y0 ∈ {2023,2024,2025}`, `Y1 = Y0+1`); "yeni" koşulu `Y0`'dan önceki tüm kontenjan yılları NULL. ```sql WITH d AS ( SELECT CASE WHEN () THEN 'yeni' ELSE 'mevcut' END grup, 100.0*(sira - sira)/sira pd FROM programs WHERE kontenjan IS NOT NULL AND kontenjan IS NOT NULL AND unitur IN ('DEVLET','VAKIF','VAKIF MYO') AND isim NOT LIKE '%KKTC Uyruklu%' AND sira IS NOT NULL AND sira IS NOT NULL), r AS (SELECT grup,pd,ROW_NUMBER() OVER (PARTITION BY grup ORDER BY pd) rn, COUNT(*) OVER (PARTITION BY grup) n FROM d) SELECT grup,n, ROUND(100.0*SUM(CASE WHEN pd<0 THEN 1 ELSE 0 END)/n,1) pct_sikilasti, ROUND(MAX(CASE WHEN rn=CAST(n*0.25 AS INT)+1 THEN pd END),1) p25, ROUND(MAX(CASE WHEN rn=CAST(n*0.50 AS INT)+1 THEN pd END),1) p50, ROUND(MAX(CASE WHEN rn=CAST(n*0.75 AS INT)+1 THEN pd END),1) p75 FROM r GROUP BY grup,n; ``` | kohort | grup | n | sıkılaşan | p25 | p50 | p75 | |---|---|---|---|---|---|---| | 2023→2024 | yeni | 620 | %65,5 | −%12,7 | −%4,6 | +%6,5 | | 2023→2024 | mevcut | 14.604 | %66,8 | −%10,8 | −%4,9 | +%4,0 | | 2024→2025 | yeni | 1.159 | %81,4 | −%18,8 | −%12,2 | −%4,3 | | 2024→2025 | mevcut | 14.317 | %82,9 | −%18,5 | −%12,4 | −%4,6 | | 2025→2026 | yeni | 1.135 | %83,8 | −%20,5 | −%12,6 | −%3,8 | | 2025→2026 | mevcut | 15.223 | %85,7 | −%17,5 | −%12,1 | −%5,9 | Dağılımın uçları da (p10/p90, |değişim|>%50 payı) iki grupta neredeyse aynı çıktı — yani yeni programların ikinci yılı "daha oynak" da değil. Bu, yazının en karşı-sezgisel cümlesinin kaynağı. ### 5) Kalıcılık: 2025 kohortu 2026 kılavuzunda kaldı mı? `programs_arsiv` + `son_kilavuz_yili` kullanıldı (arşiv 2026 refresh'inde kuruldu: `veri_meta.arsiv_2026_satir = 3706`, `son_kilavuz_yili=2025` olan 1.745 satır). ```sql WITH a AS (SELECT universite, onlisans, TRIM(CASE WHEN INSTR(isim,'(')>0 THEN SUBSTR(isim,1,INSTR(isim,'(')-1) ELSE isim END) ad FROM programs_arsiv WHERE kontenjan2021 IS NULL AND kontenjan2022 IS NULL AND kontenjan2023 IS NULL AND kontenjan2024 IS NULL AND kontenjan2025 IS NOT NULL AND son_kilavuz_yili=2025 AND unitur IN ('DEVLET','VAKIF','VAKIF MYO') AND isim NOT LIKE '%KKTC Uyruklu%'), p AS (SELECT DISTINCT universite, onlisans, TRIM(CASE WHEN INSTR(isim,'(')>0 THEN SUBSTR(isim,1,INSTR(isim,'(')-1) ELSE isim END) ad FROM programs WHERE kontenjan2026 IS NOT NULL) SELECT COUNT(*) kohort_2026da_yok, SUM(CASE WHEN p.ad IS NULL THEN 1 ELSE 0 END) bolum_adiyla_tamamen_yok, SUM(CASE WHEN p.ad IS NOT NULL THEN 1 ELSE 0 END) varyanti_duruyor FROM a LEFT JOIN p ON p.universite=a.universite AND p.ad=a.ad AND p.onlisans=a.onlisans; ``` Çıktı: 2026'da yok **475**, bunun 177'si bölüm adı düzeyinde de yok, 298'inde varyant duruyor. `programs` tarafında 2025 kohortundan kalan **1.529** satır → kohort toplamı **2.004**; kaybolma oranı %23,7 / tamamen kaybolma %8,8. Taban oran (kılavuz geneli): `programs` 2025 kontenjanlı filtreli **19.001** + arşiv `son_kilavuz_yili=2025` filtreli **1.649** = 20.650 → düşme oranı **%8,0**. ### 6) İlk yıl doluluğu ikinci yılı haber veriyor mu? ```sql WITH y AS (SELECT * FROM programs WHERE kontenjan2025 IS NOT NULL AND kontenjan2024 IS NULL AND kontenjan2023 IS NULL AND kontenjan2022 IS NULL AND kontenjan2021 IS NULL AND kontenjan2026 IS NOT NULL AND unitur IN ('DEVLET','VAKIF','VAKIF MYO') AND isim NOT LIKE '%KKTC Uyruklu%') SELECT CASE WHEN COALESCE(yerlesen2025,0)>=kontenjan2025 THEN 'ilk yil doldu' ELSE 'ilk yil bos' END, COUNT(*), ROUND(100.0*SUM(CASE WHEN COALESCE(yerlesen2026,0)>=kontenjan2026 THEN 1 ELSE 0 END)/COUNT(*),1), ROUND(100.0*SUM(yerlesen2026)/SUM(kontenjan2026),1) FROM y GROUP BY 1; ``` | | n | 2026'da dolan pay | 2026 doluluğu | |---|---|---|---| | ilk yıl dolmuştu | 1.161 | %97,8 | %102,8 | | ilk yıl boş kalmıştı | 368 | %18,5 | %39,7 | ### 7) Somut örnek (yazıda kullanıldı) ```sql SELECT isim, universite, kontenjan2026, yerlesen2026, sira2026 FROM programs WHERE AND unitur='DEVLET' AND onlisans=0 AND isim LIKE 'Psikoloji%' AND isim NOT LIKE '%KKTC%'; ``` Türk-Alman Üniversitesi · Psikoloji · 30/31 · **31.382** — Mimar Sinan GSÜ · Psikoloji (İngilizce) · 30/31 · **57.464**. Yerleşik 72 devlet Psikoloji programının 2026 medyanı **101.050** (aynı sorgu, `NOT ()` + UOLP/KKTC hariç). Vakıf tarafında yeni Psikoloji satırları 21.939 (kontenjan 2) ile 1.376.337 (kontenjan 59) arasına yayılıyor. --- ## Doğrulanan bilgiler ve kaynak URL'leri Erişim: 22 Eylül 2026. - **Program açma / öğrenci alma / alımı durdurma kararı YÖK'tedir (2547 s.k. md. 7).** YÖK, *Üniversitelerde Akademik Birim İşlemleri* — https://egitim.yok.gov.tr/tr/page/491 [D] - **2026-YKS Yükseköğretim Programları ve Kontenjanları Kılavuzu 21–28 Temmuz 2026'da yayımlandı.** ÖSYM duyurusu (21 Temmuz 2026) — https://www.osym.gov.tr/2026yks-yuksekogretim-programlari-ve-kontenjanlari-kilavuzunun-yayimlanmasi [D]. Kılavuz PDF: https://dokuman.osym.gov.tr/web/2026/8/2026-yuksekogretim-programlari-ve-kontenjanlari-kilavuzu-90wzzd-04155310.pdf - **YÖK Atlas** — https://yokatlas.yok.gov.tr/ (kataloğumuzun taban/kontenjan/yerleşen kaynağı) [D] - **Ürün kuralı:** `src/lib/risk.ts:41-49` — dilim eşikleri (`dengeli` = [sıra, 1,4×sıra], `garanti/Güvenli` = üstü); `src/lib/db.ts:64` ve `EFEKTIF_SIRA` — efektif sıra "son yıl, yoksa bir önceki yıl". `src/lib/db.ts:145` ve `:264` — havuz sorguları `EFEKTIF_SIRA IS NOT NULL` filtreli, yani **iki yılda da tabanı olmayan program sihirbaz havuzuna hiç girmiyor**. Yazıdaki "tercih robotu tabanı olmayan programı listeye almıyor" cümlesi buradan. [D] - **Görünen dilim adı** `DILIM_ETIKET`'ten alındı: hayal / dengeli / **Güvenli** (iç anahtar `garanti`). Yazıda hiçbir yerde "garanti" kelimesi dilim adı olarak kullanılmadı. [D] --- ## Çıkarılan / yazılmayan iddialar 1. **"Yeni bölüm ikinci yıl sıkılaşır" iddiası yazılmadı** — ölçüldü, yeni programa özgü olmadığı görüldü (bkz. §4). Yazı bunun yerine "belirsizlik ikinci yılda değil birinci yılda" diyor. 2. **Kontenjan bandına göre doluluk tablosu çıkarıldı** — ilişki U şeklinde ve yorumlanamaz çıktı (1–10: %94,6 · 11–20: %84,9 · 21–40: %85,9 · 41–80: %88,6 · 81+: %97,2). Yerine aynı bandın **açılış sıkılığı** tablosu kullanıldı; o temiz ve tek yönlü. 3. **2024 ve daha önceki kohortlar için "kılavuzdan düşme" oranı hesaplanmadı** — `programs_arsiv` 2026 refresh'inde kurulduğu için `son_kilavuz_yili` yalnızca 2025→2026 geçişini güvenilir ölçüyor (1.745 satır 2025, 26 satır 2024, 1.964 satır NULL). Yazıda yalnızca 2025 kohortu verildi ve tek kohort olduğu belirtilmedi — **editör isterse bir dipnot eklenebilir** [doğrulanmalı değil, üslup tercihi]. 4. **"Kılavuzdan düşme = bölüm kapandı" demedik.** 475 satırın 298'inde aynı üniversitede aynı bölümün başka burs/dil varyantı duruyor; ayrım tabloya kondu. 5. **Kadro/laboratuvar için rakam verilmedi.** Bu veri bizde yok; yazı üniversitenin kendi sayfasına yönlendiriyor, sayı uydurmuyor. 6. **ÖSYM kılavuzunun sütun açıklamasından alıntı yapılmadı.** Kılavuz PDF'i 9,7 MB ve bu makinede metne çevrilemedi (`pdftotext`/`poppler` yok, Read aracı `pdftoppm` istiyor). "İlk kez öğrenci alan programın geçmiş yıl hücresi boştur" ifadesi kılavuzdan **alıntı olarak** değil, kendi YÖK Atlas aynamızdan gözlem olarak yazıldı. [doğrulanmalı — yayın öncesi kılavuzun Tablo 4 açıklama sayfası gözle kontrol edilirse cümle alıntıyla güçlendirilebilir] 7. **Yerleşme olasılığı/garanti dili yok.** "Büyük olasılıkla dolmayacaktır" cümlesi programın **kontenjan doluluğu** hakkındadır, adayın yerleşmesi hakkında değil. 8. **Başka yazılarla çelişki görülmedi.** `taban-siralamalar-nasil-degisir` yazısındaki "veri boşluğu → dengeli değil hayal bölgesine koy" kuralıyla bu yazının karar şeması uyumlu; `bos-kontenjanlar-ne-anlatiyor` yazısındaki "kontenjanı dolmayan programda taban oluşmaz" kuralı burada yeni programlar için birebir doğrulandı. `rehber-editoru`'na düzeltme notu yok. --- ## Engeller - **Disk doldu (ENOSPC)** — düzenleme sırasında bir yazma başarısız oldu; `/System/Volumes/Data` 228 GB'ın 198 GB'ı dolu, ~2,1 GB boş. İşlem tekrar denendiğinde geçti ama makine sınırda. (WebFetch, ÖSYM kılavuzunun 9,7 MB'lık PDF'ini otomatik olarak araç önbelleğine yazdı; silmeyi denedim, izin sınıflandırıcısı reddetti — dosya duruyor.) - **PDF metin çıkarma aracı yok** (yukarıda madde 6). - Mermaid şeması `node_modules/mermaid` ile **çalıştırılarak** doğrulandı: `PARSE OK flowchart-v2`, tek `%% aria:` + tek `%% altyazi:`, tek şema, 6 tablo, tüm H2'ler soru biçiminde. - İç linklerin hepsi doğrulandı: 6 rehber dosyası mevcut; `/bolumler`, `/bolum/[slug]`, `/universite/[slug]` route'ları var; `/tercih-robotu` → `next.config.ts:80` kalıcı yönlendirme. `/bolum/psikoloji`, `/bolum/yonetim-bilisim-sistemleri`, `/universite/turk-alman-universitesi`, `/universite/mimar-sinan-guzel-sanatlar-universitesi` slug'ları `turkishSlugify` ile hesaplanıp DB'de karşılığı olduğu kontrol edildi. --- ## Bilal'den istenen 1. Yazıda iki üniversite **olumlu** bağlamda adıyla anılıyor (Türk-Alman ve Mimar Sinan, yeni Psikoloji programları beklenenden sıkı kapandı) — bu kullanım sana uygun mu? (2 dk) 2. §çıkarılan-6: ÖSYM kılavuzunun Tablo 4 açıklama sayfasından alıntı eklemek istersen PDF'i açıp iki cümleyi bana iletmen yeterli. (5 dk) 3. Makinede disk ~2,1 GB'a düştü; gece sonunda bir temizlik gerekebilir. (1 dk bakış)