diff --git a/.gitignore b/.gitignore index 27900fdc..a2ec3e45 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,321 @@ Gemfile.lock polynomials.svg contents/ .jupyterlite.doit.db + +.vscode + +# LATEX +# Created by https://www.toptal.com/developers/gitignore/api/latex +# Edit at https://www.toptal.com/developers/gitignore?templates=latex + +### LaTeX ### +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib + +### LaTeX Patch ### +# LIPIcs / OASIcs +*.vtc + +# glossaries +*.glstex + +# End of https://www.toptal.com/developers/gitignore/api/latex diff --git a/grade-calculation/coursework.tex b/grade-calculation/coursework.tex new file mode 100644 index 00000000..bd0722a5 --- /dev/null +++ b/grade-calculation/coursework.tex @@ -0,0 +1,52 @@ + +\subsection{Group Coursework Component} + +\begin{itemize} + \item When: Term 1 (concurrent with classes and lectures). Vivas are planned for either before Christmas or the January assessment period, depending on where UCL's Christmas break falls. + \begin{itemize} + \item The coursework briefing / task document will be released as soon as it is ready. + \item You will be assigned your working groups in the week prior to reading week. + \item Note that group work will be baked in to the assignment tasks. + Even though you will have the full brief available to you before your are assigned your groups, you will not be able to attempt the majority of the tasks, though will be able to prepare ideas on implementation and design. + \end{itemize} + \item What: A group project requiring you to develop a piece of software in Python. + \item Number of submissions: 3 + \begin{itemize} + \item Your group's codebase and project repository. + \item Your \href{https://app.ipac-app.education/website/}{IPAC peer-evaluation} review. + \item Your attendance and performance at the group viva. + \end{itemize} +\end{itemize} + +The coursework component of the module runs concurrently with the lectures and classes, in term 1. +Partway through the year, you will be assigned to a group of 4-5 members, and will be asked to develop a piece of software in Python as detailed in the assignment's document. +You will be expected to develop this software collaboratively with your group, and engage in good development practices as you have seen and learnt from the lectures and course notes. + +Your group will submit the final state of your project's repository via moodle. +An automated marker will then examine your repository against a marking rubric (made public to you in the briefing document) to determine how many marks your group will be awarded, based on whether your project meets the specifications set out by the briefing document. +This will give you a score $\codebaseGrade$, awarded to all members of your group, reflecting how well you addressed the functionality requirements of the assignment. +$\codebaseGrade$ will have a maximum value of 50\% (of the overall component's marks). + +After the project repository is submitted, each member of your group will also submit an IPAC peer-evaluation, where you will provide feedback to your group members and discuss how well you felt the group worked together. +The IPAC will then calculate an individual weight for you $\ipacWeight$, which is typically in the range $0.8$-$1.2$. +Note that your IPAC weight may be different from that of your group-mates, but your group's weights will always average out to 1. + +Finally, your group will be required to attend an in-person viva. +In this viva you will be asked a series of questions about the work you submitted, your contributions to the software development workflow that your group undertook, and reflect on alternative approaches or generalisations that you considered. +In particular, in your group viva you will be expected to be able to: + +\begin{itemize} + \item Highlight and discuss any contributions you made to design decisions during the project; such as your contribution to issue discussions, or suggestions during your pull-request reviews. + \item Explain your contributions to the codebase through any pull-requests you authored, as well as evaluate and discuss alternatives that you (or your group) considered. + \item Justify your software development practices, and any contributions to the repository that reflect this. +\end{itemize} + +You will be given an individual score $\vivaGrade$ from your performance in the viva, which will have a maximum value of 50\% (of the overall component's marks). + +Your grade for the coursework component $\courseworkGrade$ is then calculated as + +\begin{align*} + \courseworkGrade = (\codebaseGrade \times \ipacWeight) + \vivaGrade, +\end{align*} + +being capped at $100\%$ in the event of overflow. diff --git a/grade-calculation/exam.tex b/grade-calculation/exam.tex new file mode 100644 index 00000000..6a0d7f7e --- /dev/null +++ b/grade-calculation/exam.tex @@ -0,0 +1,30 @@ + +\subsection{Exam Component} + +\begin{itemize} + \item When: takes place in the central UCL assessment period, usually around May. + \item What: computer-based exam conducted through UCL's WiseFlow platform. + \item Number of submissions: 1 (your filled in exam ``paper''). +\end{itemize} + +The exam component of the module has the most straightforward composition: it has one submission (the exam itself, that you'll sit during the UCL central exam period), and your mark is calculated directly from your answers to the exam paper. + +The exam itself takes place on \href{https://ucldata.atlassian.net/wiki/spaces/ELearningStudentSupport/pages/63340834/WISEflow+AssessmentUCL+guidance+for+students}{UCL's WiseFlow platform (link requires UCL sign-in)}, though a practice exam is usually made available on Moodle for you to familiarise yourselves with the WiseFlow platform. +On this platform, you will be required to type your answers into the designated answer-boxes for each question. +The WiseFlow platform does not directly support code-editing nor native execution of Python code. +To circumvent this, the exam paper will contain a clickable link to a JupyterLite instance that is hosting the codebase that you will be working with. +Through this interface, you will be able to execute Python code, any existing tests, and browse the code files that we have provided to you. +However, you \emph{will need to copy any code that you write} in response to a question back into WiseFlow's answer box once you have tested it and checked it runs - this is because only what gets submitted via WiseFlow will be sent to us for marking. + +Approximately a month before the exam, pre-reading material will be released. +This will usually consist of a few pages of background material that gives you some context on the codebase you will be working on in the exam. +Note that this pre-reading does not expose the codebase itself. +The pre-reading will be available to you in the exam too, along with the course notes and links to the documentation pages for the various Python packages you may need to use in the exam. + +In the exam, you will be presented with three tasks, of which you must answer two. +Each task is designed to take approximately 50 minutes, and you have two hours to complete the exam. +We recommend that you take a few minutes at the start of the exam to read through each of the tasks in full, before deciding which ones to attempt. +In general, you will be better off focusing your time on two tasks - even if you don't complete everything in them - compared to getting partway through all three tasks, for example. + +If you provide answers to more than two tasks; you will be required to indicate which tasks you want to contribute to your mark - \emph{we will not take your ``best two out of three'' tasks}. +In the event that you attempt all three tasks and do not indicate which you would like us to mark, the first two tasks will be used to calculate your grade. diff --git a/grade-calculation/grade-calculation.tex b/grade-calculation/grade-calculation.tex new file mode 100644 index 00000000..369d70a6 --- /dev/null +++ b/grade-calculation/grade-calculation.tex @@ -0,0 +1,61 @@ +\documentclass[10pt, a4paper]{article} + +\input{preamble.tex} + +\title{COMP0233: Assessment Framework} +\author{William Graham} +\date{\today} + +\def\authoremail{arc.education+comp0233@ucl.ac.uk} +\def\moduleGrade{g_{\mathrm{module}}} +\def\examGrade{g_{\mathrm{exam}}} +\def\courseworkGrade{g_{\mathrm{cw}}} +\def\codebaseGrade{s_{\mathrm{codebase}}} +\def\vivaGrade{s_{\mathrm{viva}}} +\def\ipacWeight{w_{\mathrm{IPAC}}} + +\begin{document} + +\maketitle + +\tableofcontents + +% Redefine internal link colour, so the TOContents has normal text, but thereafter internal links are highlighted. +\hypersetup{ + linkcolor = magenta, +} + +\include{tldr} + +\include{ucl-policy} + +\section{COMP0233: Module Assessment} + +From the academic year 2024/25, the module leads for COMP0233 decided to rework how the marks for the module assessments were calculated. +Previously, the module had been assessed through two coursework components - one individual and one undertaken in a group. +Each component had been marked out of 100, with a set proportion of those 100 marks being awarded for use of tooling, best practices, and testing, and the remaining proportion for the implementation and adherence to the code specifications in the assignment itself. +This however meant that it was possible to attain very high marks in the module just by being good at programming in Python - but this is not the purpose of the module (though we understand that some people may be new to the language). +Rather, the key learning outcomes from this module are the use of tools like git / GitHub, pytest (or other testing frameworks), and documentation generation software to improve how we approach and conduct software projects. + +Coincidentally, University College London (UCL) has introduced new programme assessment guidelines aimed at addressing a number of issues surrounding the use of AI in assignments. +Whilst we are in favour of \textit{informed and sensible} use of AI in writing code, we must still take appropriate measures to ensure we comply with these new guidelines. +As such, it was decided from 2024/25 to pilot a new method for awarding marks and grades for the assignments in this course. + +The purpose of this document is to clearly outline how your marks and grades for the components in this course will be computed; it does \textit{not} contain the specific mark criteria for these components (you should refer to the task specifications in the components themselves for this). + +From the 2026-2027 academic year onwards; COMP0233 comprises two assessment components, a group coursework and an in-person exam. +Each component is weighted equally. +That is to say; if you achieve a grade of $\courseworkGrade \%$ in the coursework component, and $\examGrade \%$ in the exam, then your overall percentage mark for COMP0233 ($\moduleGrade$) will be + +\begin{align*} + \moduleGrade = \frac{\courseworkGrade + \examGrade}{2}. +\end{align*} + +$\courseworkGrade$ and $\examGrade$ are the marks that will appear in the breakdown on your degree transcript for COMP0233. +However as mentioned above, they themselves may be calculated from the submissions that make up their respective components. + +\include{exam} + +\include{coursework} + +\end{document} \ No newline at end of file diff --git a/grade-calculation/preamble.tex b/grade-calculation/preamble.tex new file mode 100644 index 00000000..d7a65e8e --- /dev/null +++ b/grade-calculation/preamble.tex @@ -0,0 +1,8 @@ +\usepackage{amsmath} +\usepackage[a4paper, margin=1in]{geometry} +\usepackage{graphicx} +\usepackage{hyperref} +\usepackage{parskip} +\usepackage{svg} + +\newcommand{\codeWord}[1]{\texttt{#1}} diff --git a/grade-calculation/tldr.tex b/grade-calculation/tldr.tex new file mode 100644 index 00000000..fb92fbe7 --- /dev/null +++ b/grade-calculation/tldr.tex @@ -0,0 +1,19 @@ +\section{TLDR: How your grade is calculated} \label{sec:tldr} + +COMP0233 comprises two assessment components; + +\begin{itemize} + \item a group coursework component, + \item an exam component, +\end{itemize} + +whose individual grades are averaged to provide your overall grade for the module. +That is to say; if you achieve a grade of $\courseworkGrade \%$ in the coursework component, and $\examGrade \%$ in the exam, then your overall percentage mark for COMP0233 ($\moduleGrade$) will be + +\begin{align*} + \moduleGrade = \frac{\courseworkGrade + \examGrade}{2}. +\end{align*} + +\subsection*{Queries and Questions} + +If you have questions; would like any clarifications to be added, or spot any typos in this document, please contact the author using the \href{mailto:\authoremail}{email address provided}, \url{mailto:\authoremail}. diff --git a/grade-calculation/ucl-policy.tex b/grade-calculation/ucl-policy.tex new file mode 100644 index 00000000..0721860f --- /dev/null +++ b/grade-calculation/ucl-policy.tex @@ -0,0 +1,51 @@ +\section{UCL Assessment Framework} + +In this section we will summarise the relevant portions of the UCL academic manual that pertain to assessments and the award of grades. +You can view the full academic manual online by \href{https://www.ucl.ac.uk/study/current-students/academic-manual}{heading to its website} - it should be your first point of call for information about your studies at UCL. + +\subsection{Assessment Components and Submissions} + +Modules at UCL are assessed through ``assessed components'', or just ``components''. +A module always has at least one component - most typically have either one or two, with COMP0233 being the latter (two). + +A \emph{component} will require you to make a number of ``\emph{submissions}'' in order to be awarded a grade for that component. +Each submission should be understood as a standalone piece of the component; the most commonly seen example is the requirement to write a report (one submission) and then give a presentation on the subject of your report (another submission). +If any submissions are missing, you are illegible for a grade in its parent component - \emph{regardless} of whether all other submissions are provided. +Note that the term ``submission'' is often conflated with ``attempt'' - please be careful not to confuse these terms. +You are typically allowed multiple attempts at a submission (for example, a draft report before committing to submitting the actual report), and many support uploading iterative versions as you progress with the assessment. + +You will be awarded a grade for each of the individual \emph{components} of a module. +These grades will then be combined via a weighted average into your overall module grade - for COMP0233, \hyperref[sec:tldr]{this is simply the average of the two components that make up the module}. +This means that failure (or non-submission) of a component does not necessarily mean failure of the module as a whole, but it will obviously hurt your overall chances. + +\subsection{Pass Mark and Re-assessment} + +COMP0233 follows central UCL policy concerning award of grades and accompanying CATS credit, re-assessment, and condonement. +Your first point of call for information about these policies should be the academic manual, or your personal tutor who can direct you to your department's assessment team. + +Broadly speaking, you must achieve a module grade $\moduleGrade$ in COMP0233 of: + +\begin{itemize} + \item 50\% to pass, if you are on a postgraduate degree. + \item 40\% to pass, if you are on an undergraduate degree. + \item If you fall short of the pass mark for your program, your department will consider whether you are eligible for condonement. + If you are awarded a pass with condonement, treat yourself as if you had passed when reading on. + The award of condonement is at the discretion of your department, so \emph{please do not ask questions about award of condonement to the module leads} - we cannot help you in this regard. +\end{itemize} + +Assuming you have passed, your grade in COMP0233 will then contribute to your overall degree average in the manner dictated by your program. +Nothing else in this section is relevant in the event you pass. + +If you fail the module, you may be required to take re-assessment in the Late Summer Assessment (LSA) period. +Typically, you are required to re-take (or ``re-sit'') all components of COMP0233 that you failed (achieved less than your program's pass mark in). +As such, there are three cases depending on your coursework grade $\courseworkGrade$ and your grade in the exam $\examGrade$: + +\begin{itemize} + \item If $\courseworkGrade$ is less than the pass mark for your program, you will be required to re-take the coursework in the LSA period. + \item If $\examGrade$ is less than the pass mark for your program, you will be required to re-take the exam in the LSA period. + \item You will be required to re-take both components if both of the above bullet points apply to you. +\end{itemize} + +Your grade for any components that you re-take in the LSA period are capped at your program's pass mark. +Your department and the central UCL assessment team are responsible for communicating the details of re-assessment to you, including when it will take place and the arrangements that you need to make. +\emph{Please do not ask questions about timetabling of re-assessment to the module leads} - we do not organise this, nor are we involved in it.