-
Notifications
You must be signed in to change notification settings - Fork 0
/
Project.tex
506 lines (379 loc) · 15.6 KB
/
Project.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
%
% Allocating optional modules to University of York students
%
% BSc Computer Science/Maths final-year dissertation
%
% Created by Alex Muller on 2011-10-10.
% Copyright (c) 2011 Alex Muller. All rights reserved.
%
% Hand-in checklist:
% - Margins: inside/top 2cm, outside/bottom 1cm
% - Landscape pages flow correctly
% - 'fewer modules/students', not less
% - Glossary update
%
\documentclass[twoside]{scrartcl}
\usepackage[utf8]{inputenc} % Use utf-8 encoding for foreign characters
% Pages and margins
\usepackage{fullpage}
% To be bound:
\usepackage[top=2cm, bottom=3cm, left=1cm, right=1cm]{geometry}
\geometry{bindingoffset=1cm}
% Digital copy
% \usepackage[top=1cm, bottom=3cm, left=1cm, right=1cm]{geometry}
\setlength{\parskip}{0.14cm plus 0.1cm minus 0.08cm}
% \usepackage{fancyhdr} % Running Headers and footers
% \usepackage{subfigure} % Multipart figures
% \usepackage{amsmath,amssymb,latexsym} % More symbols
\usepackage{boxedminipage} % Surround parts of graphics with box
\usepackage{lastpage} % Number of pages
\usepackage{xcolor} % Syntax highlighting etc
\definecolor{light-gray}{gray}{0.5}
\definecolor{yorkblue}{RGB}{0,38,99}
\definecolor{yorkgreen}{RGB}{24,69,59}
% Each section should start on a new page
\let\stdsection\section
\renewcommand\section{\clearpage\stdsection}
% Listings package for including code
\usepackage{listings,multicol}
\lstset{
basicstyle = \ttfamily\footnotesize,
commentstyle = \color{light-gray},
numbers = left,
numberstyle = \tiny,
stepnumber = 20,
numbersep = 10pt,
frame = single,
rulecolor = \color{light-gray},
}
\lstloadlanguages{HTML,Java}
\usepackage{upquote}
% This is now the recommended way for checking for PDFLaTeX:
\usepackage{ifpdf}
\ifpdf
\usepackage[pdftex]{graphicx}
\else
\usepackage{graphicx}
\fi
\ifpdf
\usepackage[pdftex]{hyperref}
\else
\usepackage{url}
\fi
\ifpdf
\usepackage{pdflscape}
\else
\usepackage{lscape}
\fi
\usepackage{pdfpages}
\usepackage{ifdraft}
\usepackage{libs/gantt} % Gantt chart
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}
% Macros
\usepackage{xspace}
\newcommand{\studmod}{\emph{student, module}\xspace}
\makeatletter
\newcommand\mynobreakpar{\par\nobreak\@afterheading}
\makeatother
% Glossary
\usepackage[toc]{glossaries}
\makeglossaries
\input{references/glossary.tex}
% Title page stuff
\def\paperauthor{Alexander Muller}
\def\papertitle{Allocating Optional Modules \\ to University of York Students}
\def\paperlength{21,632}
\title{\papertitle}
\author{\paperauthor}
\date{18 March 2012}
% PDF Properties
\hypersetup{
pdftitle = {\papertitle},
pdfauthor = {\paperauthor},
pdfsubject = {A final-year BSc Computer Science project to allocate university modules},
pdfkeywords = {york, computer science, webapp, university, module, allocation}
}
\begin{document}
\ifpdf
\DeclareGraphicsExtensions{.pdf, .jpg, .tif}
\else
\DeclareGraphicsExtensions{.eps, .jpg}
\fi
\maketitle
\thispagestyle{empty}
This is the report for a Bachelor of Science final-year project in Computer
Science and Mathematics at the University of York. The project was supervised
by Dr James Cussens, Senior Lecturer in the Artificial Intelligence Group,
Department of Computer Science.
This report is \paperlength{} words, as counted by running \texttt{detex} and
\texttt{wc -w}. The word count does not include any of the files or code
listings in the appendices. It is \pageref{LastPage} pages long in total.
% The limits are 35,000 words and 70 pages - neither limit may be exceeded.
% Other projects I've seen have been 12,000/60, 11,000/60, 21,000/71 etc
The author is very grateful for all the assistance provided by the staff and
students at the University of York who were involved in the project, but
especially to James Cussens for his advice throughout and to Laura Crossley
for her management of the project on behalf of the University.
\clearpage
% Couple of paragraphs. Not more than 200 words - this is 211.
\begin{abstract}
From the second year onwards, most students at the University of York can
choose between two or more optional modules to tailor their academic career,
in the hope that it will be more relevant, interesting and useful to them.
There is currently no standard system for optional module allocation at the
University of York. In some departments it is handled using a paper form
which must be returned to departmental administrators and processed
manually, which is a time-consuming process.
This project aims to design and implement web-based software that can be
used by departments and students to allocate modules more fairly and with
less administrative overhead. Allocating modules ``fairly'' involves
understanding how staff and students view fair allocation, and translating
that into a constrained optimisation problem solvable by a computer.
The web application is trialled by the University of York's Archaeology and
History departments in February 2012 and, if evaluated as successful, will
be offered to all departments next year and maintained centrally by the
University's IT Services.
This report discusses the choices made around the technology used, the
development methodology and details relating to the allocation algorithm. It
details specifics about the implementation, problems that arose and how they
were mitigated, and some further work that could be carried out to improve
the software.
\end{abstract}
\clearpage
\tableofcontents
\clearpage
\listoffigures
\section{Statement of ethics}
% Informed consent
Those people volunteering to help with the project (interviewed during the
research stage) will at no point be put in a position of physical danger.
Consent will be obtained from all volunteers prior to their interview, and
volunteers' personal information will not be published or shared. A copy of
the consent form signed by all volunteers is given in
Appendix~\ref{sec:consent}. Whenever a member of the University has been
quoted by name in this report, their explicit consent has been obtained.
% Do no harm
As far as the project author is aware, there are no immediate ethical issues
relating to the creation of the module allocation software. However, there is
always the potential that any software will be repurposed for an unforeseen
use.
% Confidentiality of data
The project steering group has noted that as a student, the author must not be
given access to any sensitive personal information. This includes, but is not
limited to, student names, email addresses and degree course information.
Development and testing of the software will be carried out with test data
that is in a similar form to genuine student data held by the University.
The University's Data Protection Officer was consulted during the project, and
his input is discussed in Section~\ref{sec:dataprotection}.
The project author signed a \gls{nda} provided by \gls{itservices} in order to
clarify the situation regarding access to student data. A copy of this
\gls{nda} is provided in Appendix~\ref{sec:nda}. It states that confidential
information must not be disclosed at any time.
\input{sections/introduction.tex}
\input{sections/projmanagement_main.tex}
\input{sections/projmanagement_schedule.tex}
\section{Research}
\label{sec:research}
% One or more review chapters, describing the research you did at the
% beginning of the project period.
Web application development is an area of computer science that requires
solving many problems that may only be loosely related. Generally, research
for a typical web application might include the following:
\begin{itemize}
\item Database structure and underlying software
\item Programming language
\item Choice of web framework (if any)
\item Online security
\item Front-end, user experience and interaction design
\end{itemize}
However there are two major additional areas that should be researched for
this project, namely issues surrounding the sensitive information that will be
stored by the system and the creation of the allocation once students have
selected their modules, which is a constrained optimisation problem.
\input{sections/research_devmethodology.tex}
\input{sections/research_database.tex}
\input{sections/research_maintainability.tex}
\input{sections/research_frameworks.tex}
\input{sections/research_dpa.tex}
\input{sections/research_security.tex}
\input{sections/research_usertesting.tex}
\input{sections/research_usability.tex}
\input{sections/research_ilp.tex}
\section{Development, implementation and testing}
\label{sec:implementation}
% Several chapters describing what you have done, focusing on the novel
% aspects of your own work.
After reviewing the information gathered in the previous section, the software
was researched, written and tested. This section describes how users helped
influence the design of the software during interviews, a discussion on web
frameworks, the visual appearance and other important factors for web
projects. Information from departments that informed the allocation problem is
given, and the process surrounding the allocation is discussed.
\input{sections/development_user_research.tex}
\input{sections/development_database_structure.tex}
\input{sections/development_webapp_frameworks.tex}
\input{sections/development_supporting_software.tex}
\input{sections/development_design_visuals.tex}
\begin{figure}
\centering
\includegraphics[width=0.9\linewidth]{images/2012_03_10_yorkacuk_students.png}
\caption{The University of York student portal}
\label{yorkacuk_student_portal}
\end{figure}
\begin{landscape}
\begin{figure}
\begin{minipage}[b]{0.49\linewidth}
\centering
\includegraphics[width=\linewidth]{images/2011_11_06_yorkacuk.png}
\caption{A general page on the University site, using University colours}
\label{yorkacuk_general_page}
\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.48\linewidth}
\centering
\includegraphics[width=\linewidth]{images/2011_11_06_yorkacuk_directory.png}
\caption{The University of York People Directory search tool}
\label{yorkacuk_directory_search}
\end{minipage}
\end{figure}
\end{landscape}
\input{sections/development_accessibility.tex}
\input{sections/development_integration.tex}
\input{sections/development_algorithm.tex}
\input{sections/development_assistance_its.tex}
\input{sections/development_issues_arising.tex}
\input{sections/development_testing.tex}
\input{sections/development_software_overview.tex}
\input{sections/development_pilot.tex}
\input{sections/futurework.tex}
\input{sections/conclusion.tex}
\clearpage
\appendix
\stdsection{Participant consent form}
\label{sec:consent}
Research participants (students and staff of the University of York) signed
the consent form shown in Figure~\ref{participantconsent} before their
interview took place. This form is adapted from one made available by Alistair
Edwards for Computer Science students to use during their projects. As of 5
November 2011, the original is at
\url{http://www-users.cs.york.ac.uk/~alistair/projects/consent.html}.
In each case, the top half of the form was retained by the project author and
the second half was given to the participant in case they had any further
questions about the interview.
\stdsection{Confidentiality and non-disclosure agreement}
\label{sec:nda}
The \gls{nda} shown in Figure~\ref{confidentialitynda} was signed by the
project implementer and the Head of Web Services at the University of York.
\stdsection{Paper forms used for module selection}
\label{sec:paperforms}
Figures~\ref{paperformarchaeology1} and \ref{paperformhistory1} show
paper forms used by each of the pilot departments to allow students to rank
their modules in order of preference.
\begin{figure}
\begin{center}
\fbox{\includegraphics[width=0.9\linewidth]{inc/itservices_nda.pdf}}
\end{center}
\caption{University of York confidentiality and non-disclosure agreement}
\label{confidentialitynda}
\end{figure}
\begin{landscape}
\begin{figure}
\begin{minipage}[b]{0.48\linewidth}
\centering
\fbox{\includegraphics[width=0.9\linewidth]{images/consent.pdf}}
\caption{Participant consent form}
\label{participantconsent}
\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.49\linewidth}
\centering
\fbox{\includegraphics[width=0.9\linewidth]{inc/paperformarchaeology1.pdf}}
\caption{A paper form given to Archaeology students to select modules}
\label{paperformarchaeology1}
\end{minipage}
\end{figure}
\end{landscape}
\begin{landscape}
\begin{figure}
\begin{center}
\fbox{\includegraphics[width=0.9\linewidth]{inc/paperformhistory1.pdf}}
\end{center}
\caption{A paper form given to History students to select modules}
\label{paperformhistory1}
\end{figure}
\end{landscape}
\stdsection{Prototypes of the student interface}
\label{sec:prototypes}
Figures~\ref{prototype_student_1col}, \ref{prototype_student_weighting} and
\ref{prototype_student_2col} give screenshots of the prototypes created for
the student interface for ranking modules.
Note that the explanatory copy included in the screenshots was drafted
by the project implementer and was revised by the departments prior to the
system being in use.
\begin{figure}
\begin{center}
\includegraphics[width=0.85\linewidth]{images/prototypes/student_prototype_1.png}
\end{center}
\caption{Prototype of a drag-and-drop ranking based system}
\label{prototype_student_1col}
\end{figure}
\begin{figure}
\begin{center}
\includegraphics[width=0.85\linewidth]{images/prototypes/student_prototype_2.png}
\end{center}
\caption{Prototype of draggable bars for a weighting based system}
\label{prototype_student_weighting}
\end{figure}
\begin{figure}
\begin{center}
\includegraphics[width=0.85\linewidth]{images/prototypes/student_prototype_3.png}
\end{center}
\caption{Prototype of a drag-and-drop two-column ranking based system}
\label{prototype_student_2col}
\end{figure}
\stdsection{Feedback from test users}
\label{sec:testingfeedback}
\subsection{Focus groups with students}
\begin{itemize}
\item Students have the expectation that they should have to rank every module
\item The two-column layout is similar to the way \gls{yusu} voting works
\item The system should send an email confirmation to students
\end{itemize}
\subsection{Final application on development server}
\begin{itemize}
\item Form validation improvements (mentioned three times)
\item Random ordering of modules on confirmation screen (two times)
\item Parts of explanatory text unclear (two times)
\item Students should not be required to rank every module (once)
\end{itemize}
\clearpage
\stdsection{Application documentation}
\label{sec:documentation}
The following documentation was provided to every departmental administrator
in advance of the application being open to students (27 February). It was
also used as the basis for the \gls{itservices} security review that is
discussed in Section~\ref{sec:securityreview} (15 February).
\includepdf[pages=-, frame=true, nup=2, landscape=true]{inc/documentation.pdf}
\begin{landscape}
\stdsection{Gurobi optimisation code}
\label{sec:gurobicode}
This appendix contains the code used to allocate the modules to students. Some
syntax has been modified to fit the constraints of the page and some
superfluous code has been removed, but otherwise it is unmodified.
\lstset{
basicstyle = \ttfamily\tiny,
keywordstyle = \color{yorkblue},
language = Java,
multicols = 2,
stepnumber = 24
}
\lstinputlisting{listings/AdminAllocate.java}
\end{landscape}
\clearpage
\printglossaries
\clearpage
\bibliographystyle{references/IEEEtran.bst} % not just plain
\bibliography{references/references.bib}
\addcontentsline{toc}{section}{References}
\end{document}