Coding examination website with automatic grading of student-submitted code
Dependencies
PHP 7.x/8.x Support (with mysqli module enabled)
Mostly built and tested on PHP 7.4, but 8.x should work as well.
Preconfigured Databases (for user data, submissions, etc)
Expected Database Structure
bitlab.users
GUID (P)
Username
Password
First name
Last name
Admin Role
Date Updated
Last Seen
smallint(5) ~
varchar(255)
varchar(255)
varchar(255)
varchar(255)
tinyint(1) ^
timestamp
timestamp
Admin role shall be 0:User, 1:User Admin (add/drop users, add/drop/assign courses)
courses.assignments
Assignment ID (P)
Course GUID
Assignment name
Allow resubmit
Date opened
Date closed
mediumint(7) ~
smallint(5) ~
varchar(255)
bool
timestamp
timestamp
courses.available-courses
Course GUID (P)
Course Code
Course Name
smallint(5) ~
varchar(255)
varchar(255)
courses.course-membership
Course GUID
Member GUID
Role
smallint(5) ~
smallint(5) ~
tinyint(1) ^
Member role shall be 0:Student, 1:TA, or 2:Instructor
courses.question-sets
Assignment ID
Question ID
Points
mediumint(7) ~
int(9) ~
smallint(5)
courses.saved-questions
Question ID
Question Owner
Banked
Question Name
Question Prompt
Question Skeleton
Code Language
Question Tests
Question Validation
int(9) ~
smallint(5) ~
bool
varchar(255)
varchar(255)
varchar(10000)
varchar(255)
varchar(255)
varchar(255)
courses.submitted-answers
Assignment ID
Question ID
Member GUID
Answer
Score
mediumint(7) ~
int(9) ~
smallint(5) ~
longtext
smallint
Symbols included in the data types...
(P) Primary key,
^ Unsigned,
~ Unsigned Zerofill
Some changes are allowed without updating the code, such as changing a smallint to an int. These sizes were chosen with the expectation that most users would not need anything larger.
The following projects were used under the MIT license.
On the courses and assignments page, the assignment description will overflow onto the next line if it is too long for the window.
Implement a maximum description length if needed
Make overflow scroll-able, truncated, or stop the rest of the page's formatting from being screwed up by overflow. Methods of resolution should be discussed first so we can decide what's best.
This isn't the desired behavior. Should be made straight in all cases, otherwise things like the login bar look weird.
This was noticed in Safari on iOS but may also be present on desktop, needs to be looked at. If issue is only present on iOS, we may ignore for now since it won't be optimized for mobile anyways (at least currently).
Before final release, passwords need to be properly secured. Plain text is okay for testing during early development, but can not remain after release.