Skip to content

StudentGuide

Jack Forden edited this page Nov 7, 2023 · 7 revisions

This is an explanation of the student's view of TA-Bot.

Table of Contents

Upload Process:

Once a student selects a particular class, they are immediately prompted to upload their submission.

TA-Bot accepts the following file types:

- .Zip
- Single file extensions(.py, .java, .c, etc)
    - The full list of supported languages, can be found here: #TODO

Alt text

The Upload Page has three main components:

  1. Reduced TBS timer
  2. Time until next visible submission
  3. A visualization of the normal TBS between submissions, and the days corresponding TBS should they attend the help desk or office hours.

Reduced TBS counter:

Time Between Submissions(TBS) is described in detail here: #TODO

A student has the ability to reduce their TBS via attending the help desk, or office hours. This process is described in detail here: #TODO

This three hour reduction starts the moment an instructor clicks "completed" on a students question.

In the example image above, it is day 6+, which has a normal TBS of 120 minutes between submissions. However, the student has attended the help desk, and office hours, which has reduced their TBS to 40 minutes.

Time Until Next Visible Submission.

A student can upload their work to TA-Bot at any time. However, the visibility of the test-case results depends on two factors:

  1. The student's TBS (Time Between Submissions) rate limit.
  2. The specific day of an assignment.

Let's illustrate this with an example:

| Time  | Event                                             | Visible Results |
|-------|---------------------------------------------------|-----------------|
| 3:00  | Student submits work on assignment day            | Test-case       |
| 3:01  | Student re-submits work                           | Linting only     |
| 3:02  | Student re-submits work                           | Linting only     |
| 3:03  | Student re-submits work                           | Linting only     |
| 3:04  | Student re-submits work                           | Linting only     |
| 3:05  | Student re-submits work (TBS rate limit reached)  | Test-case       |

In this example, a student submits their work at 3:00pm on the day an assignment is assigned. They can immediately see their test-case results.

However, if the student re-submits their work before the TBS rate limit has passed (i.e., before 3:05pm), they will only see Linting results. The test-case results will be hidden.

Once the TBS rate limit has passed (i.e., at 3:05pm), the student can re-submit their work and see the test-case results again.

Code Page

The code page can be considered the "heart" of TA-Bot an example is shown below:

Alt text

The code page has Four Main Components, each in it's own pane and resizable by the user:

In this photo, the Lint results have been significantly resized to show an example.

  1. Student's Submission ~ Top Left
    • The student's submission is displayed in the top left of the code page. The submission is in a read-only format. TA-Bot is designed to act as a submission checker, not as a pseudo IDE. The current design encourages students to use their own IDEs and discourages the use of TA-Bot as a substitute for local testing.
    • The highlighted lines correspond to the Lint results, as shown in the Lint results section.
  2. Lint Results ~ Top Right
    • Each student's submission is run against a linter to encourage adherence to coding styles.
  3. Test-Case Results ~ Bottom Left
    • A student is shown multiple icons: a "green check" denoting a passed test case, a "red X" denoting a failed test case, and a "lock icon" denoting a test case that is locked due to a TBS timeout.
    • The student can click on any of these icons to see the results of a particular test case.
  4. Test-Case Details ~ Bottom Right
    • Once a student clicks an icon as described above, they can see more detailed information about their submission.

Lint results:

  • TA-Bot supports numerous languages. However, the linting feature is currently available for the following languages:
    • Python
      • A complete library of Pylint errors, with novice-friendly feedback.
      • These GitHub pages are open source and can be found here.
    • Java
      • CheckStyle errors. The work to make this novice-friendly is still in progress.
    • C
      • EastwoodTidy, a subset of possible linting errors made to be more novice-friendly.
    • Adding a language to TA-Bot's linting is a relatively easy process.
      • The steps to do so are outlined here: #TODO
      • While it is easy to add an industry linter, doing so without creating novice-friendly suggestions has proven less helpful.

A student is able to "dismiss" a linting error via a button, this removes the highlighted line from the students submission in the top left pane.

Test case details:

For a particular test-case a student is able to see the following information:

  • Test-case name
  • Test-case description
  • Result(passed/failed)

Comparison of student output to solution output:

In the result of a failed test-case, a student receives feedback via a GitHub Diff. Their program's output is compared to the solution's output for a given test-case. Understanding Diff, and in this case the GitHub flavor of Diff, can often prove to be a sticking point for students. There are numerous resources available to offset this learning curve:

StackExchange Question

Even with these resources, students continue to struggle understanding Diff output. To help with this, TA-Bot provides an Output Explanation button.

Output Explanation Button:

Once clicked, TA-Bot submits an API request to GPT Turbo, which returns a human-readable explanation of the Diff output. This process is described in detail here: #TODO

Test-case Help Button:

A student can click on "Test Case Help". This submits a query to GPT-3 Turbo and returns a response that is pre-formatted to ensure no solution code is sent, while still providing a student with a helpful hint. The process of how this is done is described in detail here: #TODO

Clone this wiki locally