# Assessment ethos #

This document exists for transparency and understanding: so Inf1B
students know why the assessment is the way it is.

Document version: 2024-01-24

## In general ##

Inf1B is run by a team specialising in Computer Science Education who
have structured the course according to pedagogic good practice. This
means each Inf1B assessment is more than testing students' knowledge.
The assessment is about helping students make more use of feedback,
especially during the course. This means Inf1B assessment may be
substantially different from "traditional assessment."

The timing of each assessment has been considered carefully. There are
three parameters. **When** to make the assessment available, **how
long** to make it available for, and **how much** time within that
window should be spent doing the assessment.

Release dates are chosen partly to allow for enough material to have
been taught to create a meaningful assessment, and partly to help
stagger the workload (though one course probably has no influence over
the dates on another). Submission deadlines are chosen partly to try
to minimise concurrent deadlines across courses, partly to keep
students at a desired speed, and partly to allow time for marking. A
common misunderstanding among students is thinking that an assessment
that has, for example, four weeks from release to submission should
take the full four weeks, often at the expense of learning new
material or even other courses. This is not true. The amount of hours
an assessment is expected to take a student will be smaller, most
probably much smaller, than the window from release to submission.

## Weekly quizzes ##

A typical weekly quiz is in two parts: a quick check of recently
taught knowledge, and a chance to gather feedback from students to the
Inf1B team. The quick knowledge check encourages continual learning of
the course: it is easy to fall far behind when there are other
demands. The feedback helps us understand how the course is being
learnt. This can and does cause changes to subsequent running of the
course.

The weekly release of a quiz creates a minimum overall speed for
engaging with the material. It takes time to learn the new material
well enough to put it into successful practice. Each quiz is open for
more than one week, typically 2 working weeks equating to 12 calendar
days, so that students need not worry about needing time to do other
things or having fatigue or a short illness. There is no time limit on
a weekly quiz to reduce any undue pressure. This also means there is
time for students to give considered, meaningful feedback back to
Inf1B.

A quiz may only be submitted once to make the marks scored
meaningful. The marks from one quiz are put into one of three
categories (0, 1, and 2) which indicates the percentage contribution
to a student's overall course grade for that quiz. This clustering of
marks is intended to reduce the pressure of achieving perfection on
each question as well as overall. We also did this to avoid punishing
small mistakes, misunderstandings, or knowledge-gaps. The ethos of the
course is about steadily learning and improving good practice for
being a professional programmer. We recognise that this takes time, so
we are facilitating your development.

## Assignment 1 ##

This assignment tests basic knowledge of the programming language and
your ability to put this into practice using a series of online
Tests. This differs in style from a typical first programming
assignment which is usually implementing a basic but full program. It
is essential for students to be able to write complete, correctly
functional programs but the minimum size for a typical assignment is
usually much more than a typical exercise from a lab class or book.
This size increase is often a serious cause of pressure due to a lack
of experience at coding this much. While a competent programmer can
likely write a 10-line program in 10 minutes, even a highly skilled
programmer will struggle to write a 100-line program in 100 minutes.

Inf1B Assignment 1 allows each student to proceed at their own pace
(within reasonable limits) because we recognise it is early days for
learning programming. Programming is a skill that is not only
inherently difficult but also requires learning a programming language
and an IDE, both of which require considerable knowledge and practice
of their own. Note that learning to program a particular language is
additional to learning programming in general because, as we keep
pointing out on Inf1B, there is so much more to programming than
writing code.

Assignment 1 is released in Week 3 and has a window of about a
calendar month. The opening is early to please experienced programmers
who just want to get the Assignment done. However beginners are not
expected to be able to ace the Assignment when it is first
released. The window gives beginners more than enough time to learn
and practice the material before taking the Tests. The deadline is
generous to give sufficient time to anyone whose learning was
inhibited. The deadline is no later because students need to have
achieved a certain momentum and amount of learning to tackle
Assignment 3.

Each Test has a generous time limit for taking that Test. For each
Test, we estimated the time it should take a typical beginner and
scaled by a factor between 2 and 3. So a Test limited to 1 hour was
expected to take 20 minutes. A test limited to two hours was expected
to take 40 to 60 minutes. We feel two hours is the maximum upper limit
for comfort: beyond that students can become exhausted or overly
stressed. This is also why we are not allowing ETAs per Test to the
maximum at 2 hours. Instead of individual ETAs, we have made a
mainstream adjustment to the time per Test. We have also applied a
mainstream adjustment to the overall Assignment window: you have
essentially a calendar month to do a maximum of 7 hours of Tests,
though we expect a typical beginner needs only 3 to 4 hours. Moreover,
there is no additional learning for this Assignment: it is simply
testing the knowledge already covered in lectures, labs, tutorials,
and reading; material you must know anyway in order to be a
programmer.

A key feature of this assignment is democratisation: you are allowed
to choose the relative weighting for three of the Tests to give you
some say over your own marks. You are asked to choose before taking
those Tests rather than after to force you to consider your own
strengths at that stage, which we hope might prompt those who need it
to make advancements.

The marks for each Test are withheld until after the Assignment
deadline. This allows us to check questions to ensure the question
wording or multiple choice answers do not contain any unintended major
ambiguities. Adjustments will be applied automatically in those cases
before marks are released.

### The Assignment 1 Practice Test ###

There is a Practice Test released a week before the assignment, which
students can treat like a past paper. At first it is intended to
familiarise you with the question type and to check your equipment
works. Later it serves as a yardstick to measure your progress with
understanding course material. Perhaps most importantly it provides an
opportunity to discuss aspects of Java with other students and,
critically, with lab demonstrators. This provides feed-forward rather
than feedback.

Feedback is not especially useful for Assignment 1 because even if you
knew exactly where you had gone wrong, it is a really specific
question: what matters is learning the principle. The likelihood is if
you retook Assignment 1 after the end of the course then you would
have few if any difficulties with any of it. Thus it was far more
important to receive help from the Practice Test when you still had
the chance to influence your own marks.
<STYLE>
* { /* Don't leave any empty lines or IntelliJ might not render correctly */
  /* Text size */
  font-size:   1.1rem;
  /*font-size:   1.2rem;*/
  /* Zenburn dark theme */
  background-color: #2A252A;
  color:            #D5DAD5;
  /* One Dark theme */
  /*background-color: #282C34;
  color:            #ABB2BF;*/
  /* white-ish on dull blue-ish */
  /*background-color: DarkSlateGray;
    color:            AntiqueWhite;*/
  /* white on black */
  /*background-color: black;
  color: white;*/
  /* black on white */
  /*background-color: white;
  color: black;*/
  /* nearly black on bright yellow */
  /*background-color: #FFFFAA;
  color:            #080808;*/
  /* black on bright blue */  
  /*background-color: #99CCFF;
  color:            black;*/
}
body {
  /* width of the text column */
  width: 80%;
  /* line spacing */
  line-height: 180%;
  /*line-height: 200%;*/
  /* Font styles: */
  /* Default sans serif */
  /*font-family: sans-serif;*/
  /* Default serif */
  font-family: serif;
  /* Specific font with generic fall-back */
  /* font-family: "Calibri Light", sans-serif; */
  /*font-family: "OpenDyslexic", sans-serif;*/
}
pre,
code,
pre code {
  /* line spacing */
  line-height: 150%;
  /* Default monospace */
  font-family: monospace;
  /* Specific fixed-width font with generic fall-back */
  /*font-family: "Consolas", monospace;*/
  /*font-family: "OpenDyslexicMono", monospace;*/
}
ol,
ol ol,
ol ol ol { /* Nested lists all use decimal numbering */
  list-style-type: decimal;
}
em {
  /* if you want underlining instead of italics */
  /*font-style: normal;
  border-bottom-style: solid;
  border-bottom-width: 1px;
  padding-bottom:      2px;*/
  text-decoration-skip-ink: auto;
}
h2 { /* Put a horizontal above major headings to assist screen viewing */
  border-top:  1px solid #D5DAD5;
  margin-top:  80px;
  padding-top: 20px;
  }
</STYLE>
