An automated workflow for creating assignments for our ACS students, their deployment and examination.
Use this repository template to create a new repository named:
pjisp-{SCHOOL_YEAR}-{COURSE_ID}-{TEST_ID}-{GROUP_ID}
where:
{SCHOOL_YEAR}
- School year, for example
2019
. {COURSE_ID}
- Course id, can be
E214
for the winter semester orE111
for summer. {TEST_ID}
- Test id, can be
T12
,T34
orSOV
. {GROUP_ID}
Student group id, for example
G10
.It can be within the range of
G1
toG13
for the winter semester, orG1
toG10
for summer. In general, the student groups are assigned in accordance to their weekly lab schedule.
When creating your assignment repository please:
- make sure the repository is set to private access
- add your professor(s) as repository collaborator(s)
This project doesn't require system wide installation. Wait for the repository to create and simply clone your newly created repository to get started:
$ git clone https://github.com/your-account/ASSIGNMENT_ID.git $ cd ASSIGNMENT_ID
You will know that the repository is ready when you see the PJISP Assigment badge appear in the project description:
If it lasts too long, check the Actions tab for progress.
If you do not wish to install Python, pip or Pipenv on your system you can use
the dockerized version of this project instead, by replacing all your make
calls, such as:
$ pipenv run make [TARGET] [quiet=1] ...
with:
$ ./dockerized.sh [TARGET] [quiet=1] ...
$ pipenv run make help # dockerized version: $ ./dockerized.sh help Usage: make [TARGET] [quiet=1] ... Targets: help Display this help message init Manually initialize the assignment template test-solution Test your assignment solution assignment-check Check the file changes and test the assignment assignment-clean Remove all generated student assignment files assignment-build Build the student assignment PDF assignment-view View the student assignment PDF assignment-pack Pack the student assignment assignment Build, view and pack the student assignment extract-exams Extract student assignments from exam archives examine Examine student assignment
Using make TARGET quiet=1
will make most of the targets to be quiet,
showing only warnings and errors.
Before creating an assignment you need to install the dependencies:
$ pipenv install
Skip this step if you are using the dockerized version.
in general, your assignment should follow the form of existing PJISP zbirka assignments
create your assignment, while keeping in mind you should not edit any files other than:
assignment.rst
, where you enter the assignment textassignment_solution.c
, where you enter the assignment solution (will not be shared with students)fixtures/*.yaml
, where you enter the assignment tests (will be shared with students)
build (and check) your assignment text often as you write:
$ pipenv run make assignment-view # dockerized version: 'assignment-view' won't work, please open the built PDF yourself $ ./dockerized.sh assignment-build
test your assignment solution:
$ pipenv run make test-solution # dockerized version: $ ./dockerized.sh test-solution
pack your assignment into an archive and prepare if for deployment to the ACS labs:
$ pipenv run make assignment-pack # dockerized version: $ ./dockerized.sh assignment-pack
push commits onto your assignment repository
make sure that you change all the files related to the assignment and that all of the tests pass. The badge should be green now
inform the professor(s) that your assignment repository is ready for review
These steps should be performed within the ACS labs:
- extract the
assignment_packed_for_students *.tar.gz
archive intoispitni_materijaliA/.eXXXXX/
andispitni_materijaliB/.eXXXXX/
- ask the administrator to switch the lab to the "exam" mode (aka "provera")
- wait for all of the students to login
- verify the identity of all students
- instruct the students to:
- locate the
assignment.c
file in their$HOME/$STUDENT_ID
directory - update the contents of the file with their own solution
- test their solution as often as possible, be it manually or via
smoke_test
- save the file and close the editor
- logout
- locate the
- ask the administrator to collect the exam
.tar
archive and switch the lab to the "normal" mode
Next, save the collected exam archive onto your computer for later student assignment extraction and examination.
copy the collected exam archive into
archives/
extract student assignments, while taking special note of any errors or warnings:
$ pipenv run make extract-exams # dockerized version: $ ./dockerized.sh extract-exams
Examine (and then grade) each student assignment:
$ pipenv run make examine computer=COMPUTER # dockerized version: $ ./dockerized.sh examine computer=COMPUTER
where COMPUTER
is within the range of s100
to s131
, or s200
to
s231
(depending on the ACS lab).
Finally, publish the exam results to the ACS site within the PJISP news section.
If you find any bugs, or wish to propose new features please let us know.
If you'd like to contribute, simply fork the repository, commit your changes and send a pull request. Make sure you add yourself to CONTRIBUTORS.