{"size": 1656, "ext": "scrbl", "max_stars_repo_path": "handin-server/scribblings/server-client.scrbl", "max_stars_repo_name": "ccshan/handin", "max_stars_repo_stars_event_min_datetime": "2015-12-02T17:34:36.000Z", "max_stars_repo_stars_event_max_datetime": "2017-09-01T00:49:49.000Z", "max_issues_repo_path": "handin-server/scribblings/server-client.scrbl", "max_issues_repo_name": "ccshan/handin", "max_issues_repo_issues_event_min_datetime": "2015-09-10T12:23:13.000Z", "max_issues_repo_issues_event_max_datetime": "2021-09-28T20:36:51.000Z", "max_forks_repo_path": "handin-server/scribblings/server-client.scrbl", "max_forks_repo_name": "ccshan/handin", "max_forks_repo_forks_event_min_datetime": "2016-08-08T14:28:45.000Z", "max_forks_repo_forks_event_max_datetime": "2022-01-12T23:50:38.000Z"}
{"max_stars_count": 5, "max_issues_count": 27, "max_forks_count": 6, "avg_line_length": 43.5789473684, "max_line_length": 73, "alphanum_fraction": 0.797705314}
#lang scribble/doc
@(require "common.rkt")

@title{Handin-Server and Client}

The @filepath{handin-server} collection directory contains a server to
be run by a course instructor for accepting homework assignments and
reporting on submitted assignments.

The @filepath{handin-client} collection directory contains a client to be
customized then re-distributed to students in the course.  The
customized client will embed a particular hostname and port where the
server is running, as well as a server certificate.

With a customized client, students simply install a Racket package
or a @filepath{.plt}
file---so there's no futzing with configuration dialogs and
certificates.  A student can install any number of clients at once
(assuming that the clients are properly customized, as described
below).

The result, on the student's side, is a @onscreen{Handin} button in
DrRacket's toolbar.  Clicking the @onscreen{Handin} button allows the
student to type a password and upload the current content of the
definitions and interactions window to the course instructor's server.
The @onscreen{File} menu is also extended with a @onscreen{Manage...}
menu item for managing a handin account (i.e., changing the password
and other information, or creating a new account if the instructor
configures the server to allow new accounts).  Students can submit
joint work by submitting with a concatenation of usernames separated
by a ``@tt{+}''.

On the instructor's side, the handin server can be configured to check
the student's submission before accepting it.

The handin process uses SSL, so it is effectively as secure as the
server and each user's password.
