Files
Se302/GETTING_STARTED.md

12 KiB

GETTING STARTED - Exam Scheduling System

Welcome to the Exam Scheduling System project!

This document will help you get started with the project quickly.


Project Setup Complete!

The project foundation has been fully set up with:

Documentation Created

  • MEMORY_BANK.md - Comprehensive project documentation (100+ pages)
  • ROADMAP.md - Detailed 10-week development plan
  • TEAM_ASSIGNMENTS.md - Team roles and responsibilities
  • GIT_WORKFLOW.md - Git branching strategy and PR process
  • README.md - Project overview and quick start guide

Project Structure

  • Maven pom.xml with all dependencies configured
  • Directory structure created (src/main/java, src/test/java, src/main/resources)
  • Package structure ready (model, dao, service, algorithm, controller, util)
  • .gitignore configured for Java/Maven project
  • GitHub Actions CI/CD pipeline (.github/workflows/ci.yml)

Quick Start for Team Members

1. Clone the Repository

git clone https://github.com/sabazadam/se302.git
cd se302

2. Install Prerequisites

Required:

Recommended:

3. Build the Project

mvn clean install

This will:

  • Download all dependencies
  • Compile the code
  • Run tests (when we have them)
  • Create a JAR file

4. Open in IDE

IntelliJ IDEA:

  1. File → Open
  2. Select the pom.xml file
  3. Click "Open as Project"
  4. Wait for dependencies to download

Eclipse:

  1. File → Import
  2. Maven → Existing Maven Projects
  3. Select the project directory
  4. Finish

5. Configure JDK 17

IntelliJ:

  • File → Project Structure → Project → SDK → Select JDK 17

Eclipse:

  • Right-click project → Properties → Java Build Path → Libraries → Add JDK 17

First Steps for Each Team Member

Database Lead (Kerem)

Week 1 Tasks:

  1. Read MEMORY_BANK.md - Database Schema section
  2. Create schema.sql in src/main/resources/database/
  3. Implement DAO interfaces
  4. Start with StudentDAO and test it

Getting Started:

git checkout develop
git pull origin develop
git checkout -b feature/database-schema

# Create your database schema file
# Edit src/main/resources/database/schema.sql
# Then commit and push

Algorithm Specialist (Milena)

Week 1 Tasks:

  1. Read MEMORY_BANK.md - Algorithm Design section
  2. Create domain model classes (Student, Course, Classroom, etc.)
  3. Start designing constraint validator

Getting Started:

git checkout develop
git pull origin develop
git checkout -b feature/domain-models

# Create model classes in src/main/java/com/se302/examscheduler/model/
# Start with Student.java, Course.java

UI/FXML Specialist (Rabia)

Week 1 Tasks:

  1. Read MEMORY_BANK.md - User Interface Design section
  2. Install Scene Builder
  3. Create wireframes for main window
  4. Start FXML for MainWindow

Getting Started:

git checkout develop
git pull origin develop
git checkout -b feature/ui-main-window

# Create FXML files in src/main/resources/fxml/
# Design with Scene Builder

Controller Lead (Sefa)

Week 1 Tasks:

  1. Read MEMORY_BANK.md - Controller Layer section
  2. Create Main.java application entry point
  3. Design controller architecture

Getting Started:

git checkout develop
git pull origin develop
git checkout -b feature/main-controller

# Create Main.java in src/main/java/com/se302/examscheduler/
# Set up JavaFX application structure

Testing Lead (Feyza)

Week 1 Tasks:

  1. Read MEMORY_BANK.md - Testing Strategy section
  2. Set up test utilities (TestDataBuilder)
  3. Verify CI/CD pipeline works
  4. Create test data fixtures

Getting Started:

git checkout develop
git pull origin develop
git checkout -b feature/test-infrastructure

# Create test utilities in src/test/java/com/se302/examscheduler/util/
# Create test CSV files in src/test/resources/

Documentation Lead (Emin)

Week 1 Tasks:

  1. Review all documentation created
  2. Set up JavaDoc generation
  3. Create documentation templates
  4. Review first PRs from team

Getting Started:

# Generate JavaDoc
mvn javadoc:javadoc
open target/site/apidocs/index.html

# Set up documentation watching
# Review team members' code for documentation quality

Important Files to Read

MUST READ (Everyone)

  1. README.md - Project overview and quick start
  2. MEMORY_BANK.md - Comprehensive documentation (read your section)
  3. ROADMAP.md - Week-by-week plan (see your tasks)
  4. TEAM_ASSIGNMENTS.md - Your role and responsibilities
  5. GIT_WORKFLOW.md - How to use Git, commit messages, PRs

Your Section in MEMORY_BANK.md

  • Kerem: Database Schema, DAO Layer
  • Milena: Algorithm Design, Constraint Validation
  • Rabia: User Interface Design, UI Components
  • Sefa: API Contracts (Controller), MVC Architecture
  • Feyza: Testing Strategy, Test Types
  • Emin: All sections (for review)

Git Workflow Reminder

Creating a Feature Branch

# Always start from latest develop
git checkout develop
git pull origin develop

# Create your feature branch
git checkout -b feature/your-feature-name

# Make changes, then commit
git add .
git commit -m "feat(scope): brief description"

# Push to remote
git push -u origin feature/your-feature-name

Commit Message Format

<type>(<scope>): <subject>

Examples:
feat(dao): Add StudentDAO with batch insert
fix(algorithm): Correct consecutive exam constraint
test(dao): Add unit tests for StudentDAO
docs(readme): Update installation instructions

Creating a Pull Request

  1. Push your feature branch to GitHub
  2. Go to GitHub repository
  3. Click "New Pull Request"
  4. Base: develop, Compare: feature/your-feature-name
  5. Fill in PR template
  6. Request at least 1 reviewer
  7. Wait for approval and CI to pass
  8. Merge when approved

Useful Commands

Maven Commands

# Clean and build
mvn clean install

# Run tests
mvn test

# Run specific test
mvn test -Dtest=StudentDAOTest

# Generate test coverage report
mvn clean test jacoco:report
open target/site/jacoco/index.html

# Generate JavaDoc
mvn javadoc:javadoc
open target/site/apidocs/index.html

# Run application (when Main.java is ready)
mvn javafx:run

# Package into JAR
mvn package

Git Commands

# Check status
git status

# View changes
git diff

# Stage files
git add file.java
git add .

# Commit
git commit -m "message"

# Push
git push origin feature-name

# Pull latest develop
git checkout develop
git pull origin develop

# Rebase your branch on develop
git checkout feature-name
git rebase develop

# View commit history
git log --oneline

# View branches
git branch -a

Project Statistics

  • Team Size: 6 members
  • Duration: 10 weeks (Nov 26, 2025 - Feb 4, 2026)
  • Lines of Documentation: ~15,000+ lines
  • Files Created: 8 core documentation files
  • Technology Stack: Java 17, JavaFX 21, SQLite, Maven
  • Target: Fully functional desktop application with >70% test coverage

Weekly Meeting Schedule

Monday (30 min) - Sprint Planning:

  • Review last week's progress
  • Assign this week's tasks
  • Discuss blockers

Wednesday (15-30 min) - Mid-Week Sync:

  • Quick status updates
  • Identify issues early
  • Schedule pair programming if needed

Friday (30-45 min) - Demo & Retrospective:

  • Each person demos their work
  • Celebrate wins
  • Discuss improvements
  • Brief planning for next week

Communication Channels

Synchronous:

  • Weekly meetings (Monday, Wednesday, Friday)
  • Pair programming sessions (as needed)

Asynchronous:

  • WhatsApp/Discord - Daily updates, quick questions
  • GitHub - Code reviews, PR discussions
  • Email - Formal communication with professor

Success Metrics

Week 1 (Current Week)

  • Expected Completion: 10%
  • Key Milestone: Project setup, infrastructure, initial designs
  • Deliverables:
    • Database schema script
    • Algorithm design document
    • UI wireframes
    • CI/CD pipeline working

By Week 3 (End of Phase 1)

  • Expected Completion: 30%
  • Key Milestone: Foundation complete
  • Deliverables:
    • Database layer working
    • CSV import functional
    • Configuration screen working
    • All team members can run project locally

Getting Help

If You're Stuck

  1. Try for 2 hours - Google, documentation, StackOverflow
  2. Ask in team chat - Someone may have solved it
  3. Pair program - Schedule session with teammate
  4. Ask Emin - Integration Lead can help with architecture questions
  5. Ask Professor - For requirements clarification

Common Issues

Maven dependency download fails:

# Clear Maven cache and retry
rm -rf ~/.m2/repository
mvn clean install

IDE doesn't recognize Java 17:

  • Verify JDK 17 is installed: java -version
  • Configure project SDK in IDE settings

Git merge conflicts:

  • See GIT_WORKFLOW.md section on "Merge Conflict Resolution"
  • Ask Emin if you need help resolving

Tests won't run:

  • Ensure Maven Surefire plugin is configured in pom.xml (already done)
  • Check test file naming: must end with Test.java

Next Steps

For the Team

  1. Today (Nov 26):

    • All members clone repository
    • Set up development environment
    • Read assigned sections of MEMORY_BANK.md
  2. This Week (Week 1):

    • Each member starts assigned tasks from ROADMAP.md
    • Create first feature branches
    • Make first commits
  3. Friday Meeting (Nov 30):

    • Each person demos progress
    • Database schema presented
    • UI wireframes presented
    • Algorithm pseudocode presented

Resources

Learning Resources

Java & JavaFX:

SQLite:

CSP Algorithms:

Testing:

Tools

Required:

Recommended:


Questions?

  • Check MEMORY_BANK.md for detailed answers
  • Ask in team chat
  • Contact Emin (Documentation Lead) for documentation questions
  • Contact team members for their specialty areas
  • Email professor for requirements clarification

Last Updated: November 26, 2025

Good luck team! Let's build an amazing exam scheduler! 🚀


For comprehensive documentation, see MEMORY_BANK.md