Skip to content

sreesh-codes/Adaptive-Tutor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adaptive-Tutor

An adaptive quiz and learning system built entirely in Java that personalizes learning experiences through intelligent question selection and comprehensive progress tracking. The system dynamically adjusts difficulty levels based on user performance, demonstrating professional object-oriented programming principles.🌟 FeaturesCore Functionality

Adaptive Learning Engine: Questions dynamically adjust from easy → moderate → hard based on real-time performance Multiple Question Types: Support for Multiple Choice Questions (MCQ) and Short Answer formats User Management: Complete registration system with personalized profiles and statistics Topic-Based Learning: Organized content across multiple subjects (Math, Science, History, Programming) Performance Analytics: Detailed insights into learning progress, weak areas, and improvement trends Persistent Storage: File-based data persistence to save user progress and session history Advanced Features (Optional)

Spaced Repetition: Review questions at optimal intervals using the SM-2 algorithm Leaderboard System: Track rankings and compare performance across users GUI Interface: Swing-based graphical interface for enhanced user experience Multiple Difficulty Strategies: Choose between Basic, Aggressive, or Conservative progression models.

🏗️ Architecture Overview

com.adaptivetutor/ ├── models/ # Core domain entities │ ├── Question.java # Abstract base class │ ├── MCQQuestion.java │ ├── ShortAnswerQuestion.java │ ├── User.java │ └── QuizSession.java ├── services/ # Business logic │ ├── AnalyticsService.java │ └── QuestionSelector.java ├── strategies/ # Strategy pattern implementations │ ├── DifficultyStrategy.java │ ├── BasicAdaptiveStrategy.java │ ├── AggressiveStrategy.java │ └── ConservativeStrategy.java ├── storage/ # Data persistence │ ├── StorageManager.java │ └── QuestionBank.java ├── ui/ # User interfaces │ └── AdaptiveTutorCLI.java └── main/ └── Main.java 🚀 Getting Started

Prerequisites

Java Development Kit (JDK) 17 or higher Any Java IDE (IntelliJ IDEA, Eclipse, VS Code) or command line

Installation

  1. Clone the repository

bashgit clone https://github.com/yourusername/adaptive-tutor.git cd adaptive-tutor

  1. Compile the project

bash# Using javac directly javac -d bin -sourcepath src/main/java src/main/java/com/adaptivetutor/main/Main.java Or using your IDE's build system

Run the Application

From command line

java -cp bin com.adaptivetutor.main.Main

Or run Main.java from your IDE


## 📖 Usage Guide

### Command Line Interface

**Main Menu:**

================================= ADAPTIVE TUTOR SYSTEM

  1. Register New User
  2. Login
  3. Start Quiz
  4. View Performance Analytics
  5. Exit =================================

### Example Workflow

1. **Register a new user**

Enter username: john_doe Enter email: john@example.com Select topics of interest: PROGRAMMING, MATH


2. **Start a quiz session**

Select topic: PROGRAMMING Select difficulty strategy:

  1. Basic Adaptive
  2. Aggressive
  3. Conservative

3. **Answer questions**

Question 1 [EASY]: What is the output of System.out.println(5 + 3)?

A) 53 B) 8 C) 35 D) Error

Your answer: B ✓ Correct! (+10 points)


4. **View results**

=== Session Complete === Questions Attempted: 10 Correct Answers: 8 Accuracy: 80% Total Score: 85/100 Difficulty Progression: EASY → MODERATE → HARD

Sample Data Structure

User { userId: "USR001" username: "john_doe" email: "john@example.com" registeredTopics: [PROGRAMMING, MATH] totalScore: 450 profile: { questionsAttempted: 50 correctAnswers: 38 topicWiseScores: { PROGRAMMING: 85% MATH: 72% } } }


### Question Bank Format

QID001|MCQ|PROGRAMMING|EASY|What is a class in Java?|A template for objects|A function|A variable|A loop|A|10 QID002|SHORT|MATH|MODERATE|What is 15% of 200?|30|15


## 🔧 Configuration

### Adding Custom Questions

Edit `data/questions.txt`:

QuestionID|Type|Topic|Difficulty|Text|Answer/Options|Points

Adjusting Difficulty Thresholds

public class BasicAdaptiveStrategy implements DifficultyStrategy { @Override public DifficultyLevel selectNextDifficulty(double accuracy, int questionsAnswered) { if (accuracy > 0.75) return DifficultyLevel.HARD; if (accuracy > 0.60) return DifficultyLevel.MODERATE; return DifficultyLevel.EASY; } }


## 🎨 Class Diagram

┌─────────────────┐ │ Question │ (Abstract) ├─────────────────┤ │ - questionId │ │ - questionText │ │ - difficulty │ │ + checkAnswer() │ (Abstract) └────────┬────────┘ │ ┌────┴────┐ │ │ ┌───▼──────┐ ┌▼──────────────┐ │MCQQuestion│ │ShortAnswer │ │ │ │Question │ │- options │ │- correctAnswer│ └──────────┘ └───────────────┘

┌──────────────┐ ┌──────────────┐ │ User │◆────▶│ UserProfile │ ├──────────────┤ ├──────────────┤ │- userId │ │- statistics │ │- username │ │- topicScores │ └──────────────┘ └──────────────┘ │ │ creates ▼ ┌──────────────┐ ┌──────────────┐ │ QuizSession │◆────▶│ Question │ ├──────────────┤ └──────────────┘ │- questions │ * │- score │ └──────────────┘

🧪 Testing

Manual Testing Checklist

User registration with validation Login with existing credentials Quiz session with all question types Difficulty progression based on accuracy Data persistence across sessions Analytics calculation accuracy Error handling for invalid inputs

Running Tests bash# Compile test classes javac -cp .:junit-5.jar test/com/adaptivetutor/**/*.java

Run test suite

java -cp .:junit-5.jar org.junit.platform.console.ConsoleLauncher --scan-classpath

🛣️ Roadmap

Core adaptive quiz engine File-based persistence Basic analytics Spaced repetition algorithm Database integration (SQLite/PostgreSQL) RESTful API backend Web-based frontend (React/Angular) Mobile application (Android/iOS) AI-powered question generation Multi-language support

🤝 Contributing

Contributions are welcome! Please follow these steps:

Fork the repository Create a feature branch (git checkout -b feature/AmazingFeature) Commit your changes (git commit -m 'Add some AmazingFeature') Push to the branch (git push origin feature/AmazingFeature) Open a Pull Request

Coding Standards

Follow Java naming conventions Add JavaDoc comments for all public methods Maintain test coverage above 70% Use meaningful variable and method names

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages