Also from the developer: Travel Vista

CSV marks import (TAs)

Most marks live in spreadsheets before they live anywhere else. This feature meets them there — with validation, previews and zero silent errors.

Last updated: October 2026 · nuSkor is an independent student-built project — not affiliated with any university.

The problem

Ask any teaching assistant where their marks live and you will get the same answer: a spreadsheet. Checkers, quizzes and hard-copies accumulate in rows and columns, and there comes a day when all of it has to become entries in a system — by hand, one row at a time, hoping nobody’s email address has a typo. Manual entry is slow, and its failures are silent: a mistyped address means a student never sees their mark.

How it works

CSV import turns that spreadsheet into a checked import. Teaching staff paste or upload CSV rows — an email and a score per line — and the portal validates everything before saving anything. Each row is checked against the course roster: is this a real enrolled student? Is the score a valid number, within the allowed range? Rows that pass are previewed as they will be saved; rows that fail are listed with the reason, right there, so they can be fixed and re-imported without touching the good rows twice.

The import writes to the same underlying records as manual entry — it is not a parallel system with different rules. Whatever happens next (publishing, the marksheet, the leaderboard) sees exactly what a manual entry would have produced.

Why validation-first matters

  • Silent failures become visible. An unknown email is a row-level error, not a student quietly missing their marks.
  • Retries are cheap. Fix only the flagged rows in your spreadsheet and import them again.
  • Nothing half-saves. The preview step means staff see the effect before committing, exactly as with hand-entered marks.

Built for the middle of the semester

The feature is designed for the moment it is actually needed: scores just arrived, the class is large, and time is short. That is why it never demands a particular spreadsheet template — two columns are enough — and why it reports problems in bulk rather than stopping at the first one. A mid-semester import should take minutes, not an evening.

Import preview — Quiz 2 (10 marks)Sample data
RowEmailScoreStatus
1student.a@example.edu8Ready
2student.b@example.edu9.5Ready
3student.c@exmaple.edu7Not enrolled
4student.d@example.eduelevenNot a number
5student.e@example.edu10Ready

3 rows ready · 2 need fixing — correct them and import again; the ready rows are shown before anything is saved.

Frequently asked questions

What should the CSV look like?
Two columns, one row per student: an email address and a score. Comma-separated, one header line optional. That is the whole format — no template to download.
What if a student is not on the roster yet?
That row is flagged as 'not enrolled' and skipped, so nobody else's marks are affected. Once the roster includes the student, importing that single row works.
Do imported marks publish immediately?
Importing creates the marks; publishing shows them to students. Keeping the two steps separate is deliberate — it gives staff a chance to verify before the class sees anything.

Running a course on nuSkor?

Marks entry, CSV import, evaluation slots and announcements — sign in as a TA and run the whole workflow from one place.

Login as Student