Skip to content
/ psce Public

πŸŽ“ Graduation project: A distributed contest environment supporting live submissions, judging, and plagiarism detection

Notifications You must be signed in to change notification settings

olagalal/psce

Repository files navigation

PSCE: Problem Solving Contest Environment

A comprehensive system for hosting and managing programming contests, developed as a graduation project.

πŸš€ Project Overview

PSCE is a dynamic distributed real-time system designed to manage and control programming contests in a variety of computing environments. It includes support for a variety of programming languages. The system is designed to allow teams to use any language development tool which can be invoked from a command line and generates an executable file.

It automatically timestamps and archives submitted code. PSCE supports two types of judging. The first type is automated (or computer) judging and second type are manual (or human) judging. These two types used independently or in conjunction with each other.

It allows students (contestants) to submit programs over the same network to contest judges. The judges can recompile the submitted program, execute it, view the source code and/or execution results, and send a response back to the team. The judge also can retrieve and re-execute archived runs.

It also provides a mechanism for students to submit clarification requests and queries to the judge, and for the judge to reply to queries and to issue broadcast to students. It can also detect plagiarism and exclude students who are cheating.

🧠 System Architecture

The project consists of three main components:

1. PSCEClient

A JavaFX-based desktop application for contest participants that allows:

  • Secure login to the contest environment
  • Viewing and selecting programming problems
  • Submitting solutions to problems
  • Requesting clarifications from judges
  • Receiving feedback and clarification responses

2. PSCEServer

The server-side component that handles:

  • User registration and authentication
  • Problem management
  • Submission processing and evaluation
  • Code compilation and testing
  • Clarification management
  • Results tracking and scoring

3. ContestV2

A web-based interface providing:

  • Contest management dashboard for administrators
  • Scoreboard and standings visualization
  • Additional interfaces for judges and administrators

πŸ—‚ Project Hierarchy

Project Root
β”‚
β”œβ”€β”€ EDDX/                     # System design diagrams
β”œβ”€β”€ src/                      # Source code
β”‚   β”œβ”€β”€ PSCEClient/           # Client application
β”‚   β”‚   └── src/              # Client source code
β”‚   β”‚       └── dsproject/    # Client implementation files
β”‚   β”‚
β”‚   β”œβ”€β”€ PSCEServer/           # Server application
β”‚   β”‚   β”œβ”€β”€ src/              # Server source code
β”‚   β”‚   β”œβ”€β”€ Codes/            # Submitted code storage
β”‚   β”‚   β”œβ”€β”€ Input/            # Problem input files
β”‚   β”‚   β”œβ”€β”€ Output/           # Expected output files
β”‚   β”‚   └── Answers/          # Clarification answers
β”‚   β”‚
β”‚   └── contestv2/            # Web interface
β”‚       β”œβ”€β”€ src/              # Web application source
β”‚       └── web/              # Frontend resources
β”‚
β”œβ”€β”€ Software Documentation.pdf # Comprehensive documentation
└── README.md                  # This file

✨ Features

  • Secure Authentication: Role-based access control for participants, judges, and administrators
  • Problem Management: Tools for creating, editing, and managing programming problems
  • Automated Evaluation: Automatic compilation, execution, and testing of submitted code
  • Clarification System: Communication channel between contestants and judges
  • Real-time Scoreboard: Live updates on contest standings and results
  • Multi-language Support: Ability to submit solutions in various programming languages
  • Scalable Architecture: Designed to handle multiple concurrent users
  • Plagiarism Detection: Tools to identify potentially plagiarized code
  • Run Archive: History of all submitted code with timestamps

πŸ› οΈ Technologies Used

  • Backend: Java
  • Client UI: JavaFX
  • Web Interface: JSP, HTML, CSS, JavaScript
  • Database: Relational database for storing problems, submissions, and user data
  • Network Communication: Socket programming for client-server communication

πŸ“ Installation and Setup

  1. Clone the repository
  2. Configure the server paths in PC2Server.java
  3. Set up the required database
  4. Compile and run the server application
  5. Compile and distribute the client application to contestants

πŸ’» System Requirements

  • Server: Java Runtime Environment 8 or higher
  • Client: Java Runtime Environment 8 or higher
  • Web Interface: Modern web browser with JavaScript enabled
  • Network: Stable network connection between clients and server

πŸ§‘β€πŸ€β€πŸ§‘ Team Members

Development Team:

  • Ola Galal
  • Amr Hassan
  • Ahmed Daoush

University:

  • Menoufia University
  • Faculty of Computers and Information
  • Computer Science Department
  • July 2019

πŸ“„ Documentation

Comprehensive documentation including:

  • Software Documentation (available in PDF and DOCX formats)
  • System design diagrams (ERD, DFD, Use Case diagrams)
  • Sequence diagrams
  • Architecture specifications

πŸ“œ License

All rights reserved. This project is property of the development team and their academic institution.

Β© 2019 PSCE Development Team

About

πŸŽ“ Graduation project: A distributed contest environment supporting live submissions, judging, and plagiarism detection

Topics

Resources

Stars

Watchers

Forks