-
Name: Eric Nohara-LeClair
-
Email: ernohara@bu.edu
-
BUID: U90387562
-
Name: Kelvin Kuang
-
Email: kkuang@bu.edu
-
BUID: U264180009
-
Name: Juling Fan
-
Email: juling7@bu.edu
-
BUID: U30407259
.
├── data
│ ├── backups
│ ├── courses
│ └── database.db
├── db
│ ├── AssignmentDAO.java
│ ├── AssignmentTemplateDAO.java
│ ├── CourseDAO.java
│ ├── CourseTemplateDAO.java
│ ├── CrudDAO.java
│ ├── DBConnection.java
│ ├── DBSetup.java
│ ├── SubmissionDAO.java
│ ├── UserCourseDAO.java
│ └── UserDAO.java
├── lib
│ ├── dotenv-java-2.3.2.jar
│ ├── javax.mail.jar
│ └── sqlite-jdbc-3.49.1.0.jar
├── model
│ ├── Admin.java
│ ├── AdminOperations.java
│ ├── Assignment.java
│ ├── AssignmentTemplate.java
│ ├── Course.java
│ ├── CourseManager.java
│ ├── CourseTemplate.java
│ ├── Grader.java
│ ├── GradingStrategy.java
│ ├── PassFailGradingStrategy.java
│ ├── ProportionalGradingStrategy.java
│ ├── Student.java
│ ├── Submission.java
│ ├── SubmissionGrader.java
│ ├── SubmissionUploader.java
│ ├── Teacher.java
│ ├── User.java
│ └── UserCourse.java
├── out
│ ├── db
│ ├── model
│ ├── ui
│ │ ├── dashboard
│ │ │ ├── components
│ │ │ └── panels
│ │ └── utils
│ └── utils
├── ui
│ ├── dashboard
│ │ ├── components
│ │ │ └── DashboardCard.java
│ │ ├── panels
│ │ │ ├── AssignmentsPanel.java
│ │ │ ├── ChangePasswordPanel.java
│ │ │ ├── CourseManagementPanel.java
│ │ │ ├── CoursesPanel.java
│ │ │ ├── GradingPanel.java
│ │ │ ├── OverviewPanel.java
│ │ │ ├── Refreshable.java
│ │ │ ├── StudentAssignmentsPanel.java
│ │ │ ├── StudentCoursesPanel.java
│ │ │ ├── StudentsPanel.java
│ │ │ ├── SystemSettingsPanel.java
│ │ │ ├── TeacherAssignmentStatsPanel.java
│ │ │ ├── TeacherOverallStatsPanel.java
│ │ │ ├── TemplatesPanel.java
│ │ │ └── UserManagementPanel.java
│ │ ├── AdminDashboard.java
│ │ ├── GraderDashboard.java
│ │ ├── StudentDashboard.java
│ │ └── TeacherDashboard.java
│ ├── utils
│ │ ├── AssignmentTemplateItem.java
│ │ ├── CourseItem.java
│ │ ├── GradingUtils.java
│ │ ├── PaddedCellRenderer.java
│ │ ├── Padding.java
│ │ ├── Refreshable.java
│ │ ├── StudentGradeResult.java
│ │ └── TemplateItem.java
│ ├── LoginFrame.java
│ └── UIConstants.java
├── utils
│ ├── CSVParser.java
│ ├── CSVStudentManager.java
│ ├── DBUtils.java
│ ├── EmailSender.java
│ ├── FileExtensionValidator.java
│ ├── FileManager.java
│ ├── Hasher.java
│ └── SubmissionFileManager.java
├── GradingSystemApp.java
├── Main.java
└── README.md
- Teacher view of grading system
- Teachers usually teach same course over different semesters
- Content of class might change, but breakdown of assignments and exams remain the same
- Every single semester/class has to be built from the beginning
- Create template for classes?
- Ability to copy from previous classes?
- Gradescope does not automatically calculate grades
- Compute weighted average of assignments
- Maybe compute grade statistics to figure out curves?
- Submit any type of file, based on assignment
- Keep grade statistics
- Ease of changing assignments/grades
- Can assign different roles to different users
- Similarity checker if we have time
Ensure you have cloned the repository and have all required files, including the sqlite-jdbc-3.49.1.0.jar file. Make sure you have the specified directory structure.
javac -cp ".;lib/sqlite-jdbc-3.49.1.0.jar;lib/javax.mail.jar;lib/dotenv-java-2.3.2.jar;lib/pdfbox-app-3.0.5.jar" -d out *.java db/*.java model/*.java utils/*.java ui/*.java
java -cp "out;lib/sqlite-jdbc-3.49.1.0.jar;lib/javax.mail.jar;lib/dotenv-java-2.3.2.jar;lib/pdfbox-app-3.0.5.jar" Main
del /s /q out\*.class
javac -cp ".:lib/sqlite-jdbc-3.49.1.0.jar:lib/javax.mail.jar:lib/dotenv-java-2.3.2.jar:lib/pdfbox-app-3.0.5.jar" -d out *.java db/*.java model/*.java utils/*.java ui/*.java
java -cp "out:lib/sqlite-jdbc-3.49.1.0.jar:lib/javax.mail.jar:lib/dotenv-java-2.3.2.jar:lib/pdfbox-app-3.0.5.jar" Main
find out -type f -name "*.class" -delete
- Correct file structure
- Java 8
- sqlite-jdbc-3.49.1.0.jar
- dotenv-java-2.3.2.jar
- javax.mail.jar
- pdfbox-app-3.0.5.jar
- No known bugs.
- Add a way to allow students to add collaborators to submissions
- Add more email notifications
- Expand the student dashboard
- Allow a teacher to change the role of a user rather than having to create a new one
-
Testing DB Operations:
- Used test scripts using the database access objects we created
- Checked the database manually using the SQLite DB browser
- Added edge cases in our testing scripts
-
Testing UI:
- Ran the main file and made sure everything on the UI was how we wanted it to look
- Made sure everything worked as intended on the UI
-
Testing UI and DB Integration:
- Used queries in the UI to display information about users, courses, assignments, submissions, etc.
- Checked manually to ensure that these values were the expected values
- Cross validated the values appearing in our UI with the values in the DB using the SQLite DB browser
-
Testing File Storage:
- Created a test script to upload files under a fake submission to make sure that the file paths were generated correctly
- Stored files locally within the ./data/courses directory, where each submission is located within the ./data/courses/course_name/assignment_name/ directory
- Once the UI was integrated with the DB operations, used the FileChooser to upload files through the UI dashboards and made sure everything was working properly
-
Testing DB Backups:
- Generated a DB state, backed up the DB, reset the DB
- Made sure that the DB was indeed reset with no information other than the admin
- Loaded the previous backed up DB
- Made sure that the loaded state was identical to the initial state of the DB
-
Testing Utils:
- Did seperate testing on our utility classes to make sure they functioned correctly in a vaccum
- e.g. made sure the Hasher function hashed and compared passwords correctly using test scripts