English | Türkçe Versiyon İçin Tıklayınız
An intelligent desktop application designed to automate the creation of conflict-free Özyeğin University course schedules through an intuitive, bilingual Graphical User Interface (GUI).
This application solves the complex and tedious task of manual course scheduling. It takes a list of all offered courses and a customizable set of student-defined requirements, then uses a powerful backtracking algorithm to generate every possible valid, conflict-free program.
- 🖥️ Full Graphical User Interface: A user-friendly, standalone desktop application that guides you through the process from start to finish. No technical skill required.
- 🌐 Bilingual Support: The entire interface can be switched between English and Turkish instantly with a single click.
- 🚀 High-Performance Caching: A two-layer caching system dramatically speeds up generation. It caches both the parsed course data and the final program results, making subsequent runs incredibly fast.
- 📋 Advanced Requirement Builder:
- Easily create, edit, save, and load complex requirement sets.
- A scrollable "Quick Add" panel features dozens of predefined requirements for nearly every university department.
- Supports different Excel formats by accepting either "Ders" or "Course" as a valid column header.
- ⚙️ Powerful Filtering & Sorting:
- Filter generated programs by credit load, number of school days, and specific days of the week (e.g., no Friday classes).
- Include or exclude specific courses from the results.
- Sort the final list by total days, credits, or hours using a simple dropdown menu.
(Here you can add your screenshots. Just replace the placeholder text with the path to your images.)
Screen 1: Setup & Cache Management | Screen 2: Requirement Builder |
---|---|
![]() |
![]() |
Screen 3: Generation & Filtering | Example Output Schedule |
---|---|
![]() |
![]() |
You do not need Python or any other tools installed to run this application.
- Go to the GitHub Releases page for this project.
- Download the correct
.zip
file for your operating system (Windows
ormacOS
).
- Unzip the downloaded folder (e.g.,
Course-Schedule-Generator-v2.0-Windows.zip
). - Open the unzipped folder and double-click
Course Schedule Generator.exe
to run. - Windows may show a "Windows Protected your PC" security warning. This is normal. Click "More info", then click "Run anyway".
- Unzip the downloaded file. This will give you the
Course Program Generator.app
. - Drag
Course Program Generator.app
into your Applications folder. - The first time you run it, you may need to right-click the app icon and select "Open" to approve the security exception.
- If you see an error, choose Apple menu > System Settings, then click Privacy & Security in the sidebar. (You may need to scroll down.)
- Go to Security, then click Open.
- Click Open Anyway.
- This button is available for about an hour after you try to open the app.
- Enter your login password, then click OK.
- Right-click the app icon and select "Open"
-
Step 1: Load Courses
- On the first screen, click "Browse..." to select the master Excel file of offered courses for the semester.
- Click "Load Courses and Continue".
-
Step 2: Build Requirements
- Use the "Quick Add Requirement" panel on the right to add predefined requirement templates. You can also create new blank requirements.
- Select a requirement from the list to edit it in the center panel.
- Add candidate courses from the "Available Courses" list on the left by double-clicking them.
- You can save your requirement set to a
.json
file or load a previous session.
-
Step 3: Configure and Generate
- Set your desired minimum/maximum credit load.
- Choose how you want the results sorted.
- Apply powerful filters, such as setting a maximum number of school days or excluding specific days.
- Click "GENERATE PROGRAMS" and view the results in the output log.
If you want to run the application from the source code:
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git cd CourseScheduleGenerator
-
Create and activate a virtual environment:
# For Windows python -m venv venv venv\Scripts\activate # For macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python src/main_gui.py
To package the application into an executable, PyInstaller is used.
- Install PyInstaller:
pip install pyinstaller
- Prepare Icons: Place an
icon.ico
(for Windows) and anicon.icns
(for macOS) in the project root directory. - Build using the spec file:
The final application will be located in the
pyinstaller main_gui.spec
dist/
folder.
This project is licensed under the MIT License.
Bu uygulama, elle ders programı hazırlamanın karmaşık ve sıkıcı sürecini otomatize eder. Özyeğin Üniversitesi'nin açtığı tüm derslerin bir listesini ve öğrenci tarafından özelleştirilebilen gereksinimleri alarak, olası tüm geçerli ve çakışmasız programları oluşturmak için güçlü bir geri izleme (backtracking) algoritması kullanır.
- 🖥️ Tamamen Grafiksel Kullanıcı Arayüzü (GUI): Teknik bilgisi olmayan kullanıcılar için tasarlanmış, kullanımı kolay, bağımsız bir masaüstü uygulaması.
- 🌐 Çift Dil Desteği: Tüm uygulama arayüzü, tek bir tıklama ile anında İngilizce ve Türkçe arasında değiştirilebilir.
- 🚀 Yüksek Performanslı Önbellekleme (Caching): İki katmanlı bir önbellekleme sistemi, program oluşturma sürecini önemli ölçüde hızlandırır. Hem ders verilerini hem de nihai program sonuçlarını önbelleğe alarak sonraki çalıştırmaları inanılmaz derecede hızlı hale getirir.
- 📋 Gelişmiş Gereksinim Oluşturucu:
- "Hızlı Ekle" paneli, neredeyse her bölüm için onlarca önceden tanımlanmış gereksinimi içeren, kaydırılabilir ve kategorize edilmiş bir liste sunar.
- "Tümünü Genişlet/Daralt" düğmeleri, uzun gereksinim listesinde gezinmeyi kolaylaştırır.
- "Ders" veya "Course" sütun başlıklarını kabul ederek farklı Excel formatlarına karşı esneklik sağlar.
- ⚙️ Güçlü Filtreleme ve Sıralama:
- Oluşturulan programları kredi yüküne, okula gidilecek gün sayısına ve haftanın belirli günlerine (örneğin Cuma günü ders olmasın) göre filtreleyin.
- Belirli dersleri sonuçlara dahil edin veya sonuçlardan çıkarın.
- Nihai listeyi basit bir açılır menü kullanarak toplam gün, kredi veya saate göre sıralayın.
(Ekran görüntülerinizi buraya ekleyebilirsiniz. Yalnızca yer tutucu metinleri resimlerinizin yolu ile değiştirin.)
Ekran 1: Kurulum ve Önbellek Yönetimi | Ekran 2: Gereksinim Oluşturucu |
---|---|
![]() |
![]() |
Ekran 3: Program Oluşturma ve Filtreleme | Örnek Çıktı Tablosu |
---|---|
![]() |
![]() |
Bu uygulamayı çalıştırmak için bilgisayarınızda Python veya başka bir aracın yüklü olmasına gerek yoktur.
- Projenin GitHub Releases sayfasına gidin.
- İşletim sisteminize uygun
.zip
dosyasını indirin (Windows
veyamacOS
).
- İndirilen klasörü bir konuma çıkartın (örneğin,
Course-Schedule-Generator-v2.0-Windows.zip
). - Çıkartılan klasörü açın ve çalıştırmak için
Course Schedule Generator.exe
dosyasına çift tıklayın. - Windows bir "Windows bilgisayarınızı korudu" güvenlik uyarısı gösterebilir. Bu normaldir. "Ek bilgi" seçeneğine, ardından "Yine de çalıştır" düğmesine tıklayın.
- İndirilen dosyayı arşivden çıkarın. Bu size
Course Schedule Generator.app
uygulamasını verecektir. Course Schedule Generator.app
dosyasını Uygulamalar (Applications) klasörünüze sürükleyin.- Uygulamayı ilk kez çalıştırdığınızda, güvenlik istisnasını onaylamak için uygulama simgesine sağ tıklayıp "Aç" demeniz gerekebilir.
-
Adım 1: Dersleri Yükle
- İlk ekranda, "Gözat..." düğmesine tıklayarak dönemin açılan derslerini içeren ana Excel dosyasını seçin.
- "Dersleri Yükle ve Devam Et" düğmesine tıklayın.
-
Adım 2: Gereksinimleri Oluştur
- Önceden tanımlanmış gereksinim şablonlarını eklemek için sağdaki "Hızlı Gereksinim Ekle" panelini kullanın. Ayrıca yeni boş gereksinimler de oluşturabilirsiniz.
- Listeden bir gereksinim seçerek orta panelde düzenleyin.
- Soldaki "Mevcut Dersler" listesinden derslere çift tıklayarak aday ders olarak ekleyin.
- Gereksinim setinizi bir
.json
dosyasına kaydedebilir veya önceki bir oturumu yükleyebilirsiniz.
-
Adım 3: Yapılandır ve Oluştur
- İstediğiniz minimum/maksimum kredi yükünü ayarlayın.
- Sonuçların nasıl sıralanacağını seçin.
- Maksimum okul günü sayısı belirleme veya belirli günleri hariç tutma gibi güçlü filtreler uygulayın.
- "PROGRAMLARI OLUŞTUR" düğmesine tıklayın ve sonuçları çıktı alanında görüntüleyin.
Uygulamayı kaynak kodundan çalıştırmak isterseniz:
-
Projeyi klonlayın:
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git cd CourseScheduleGenerator
-
Bir sanal ortam oluşturun ve etkinleştirin:
# Windows için python -m venv venv venv\Scripts\activate # macOS/Linux için python3 -m venv venv source venv/bin/activate
-
Bağımlılıkları yükleyin:
pip install -r requirements.txt
-
Uygulamayı çalıştırın:
python src/main_gui.py
Uygulamayı çalıştırılabilir bir dosyaya paketlemek için PyInstaller kullanılır.
- PyInstaller'ı yükleyin:
pip install pyinstaller
- İkonları Hazırlayın: Proje ana dizinine bir
icon.ico
(Windows için) ve biricon.icns
(macOS için) dosyası yerleştirin. - Spec dosyasını kullanarak derleyin:
Nihai uygulama
pyinstaller main_gui.spec
dist/
klasöründe bulunacaktır.
Bu proje MIT Lisansı altında lisanslanmıştır.