-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtests_and_exams.html
More file actions
331 lines (294 loc) · 17.5 KB
/
tests_and_exams.html
File metadata and controls
331 lines (294 loc) · 17.5 KB
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
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Midterm test preparation — Object-oriented Programming documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="_static/fenics.css?v=8c7d05f9" />
<link rel="stylesheet" type="text/css" href="_static/proof.css" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/proof.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-0EFVH5C4DC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-0EFVH5C4DC');
</script>
<link rel="stylesheet" href="_static/featured.css">
<link rel="shortcut icon" href="_static/icon.ico" />
</head><body>
<div class="wrapper">
<a href="index.html"><img src="_static/banner.png" width="900px" alt="FInAT Project Banner" /></a>
<div id="access">
<div class="menu">
<ul>
<li class="page_item"><a href="index.html" title="Book">Book</a></li>
<li class="page_item"><a href="videos.html" title="Videos">Videos</a></li>
<li class="page_item"><a href="exercises.html"
title="Exercises">Exercises</a></li>
<li class="page_item"><a href="installation.html" title="Installation">Installation</a></li>
</ul>
</div><!-- .menu -->
</div><!-- #access -->
</div><!-- #wrapper -->
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="midterm-test-preparation">
<span id="midterm"></span><h1>Midterm test preparation<a class="headerlink" href="#midterm-test-preparation" title="Link to this heading">¶</a></h1>
<p>The midterm programming test is worth 20% of the course. The format
of this test is deliberately similar to the programming exam in May that makes
up the other 80% of the assessment. This test therefore provides both some feedback
on how you are progressing in the course, and an opportunity to practice for the
end of term exam. This is a programming module, so the midterm test will consist
of programming exercises. The content which will be examined in the test is
everything covered up to and including chapter 6. There won’t be any new concepts
introduced during the test, however the questions may suggest that you use
Python modules, classes, or functions that haven’t previously been introduced in
the course. These will always be similar in character to ones that have
previously been mentioned, and the test instructions will explicitly link to the
Python documentation for any features they suggest.</p>
<section id="test-format">
<h2>Test format<a class="headerlink" href="#test-format" title="Link to this heading">¶</a></h2>
<p>The final exam will be two hours long and comprise 3 questions, each of which
will be marked out of 20. The midterm test will be 40 minutes long and there
will a single question. The question will be subdivided into identified parts
with a specified number of marks associated with each.</p>
</section>
<section id="the-mark-scheme">
<h2>The mark scheme<a class="headerlink" href="#the-mark-scheme" title="Link to this heading">¶</a></h2>
<p>Of the 20 marks for each question, 4 will be explicitly for basic style. 2 marks
will be for passing flake8 with no errors. If there are only a handful of minor
flake8 errors then you will receive 1 mark, and if there are more than that you
will receive 0. flake8 is an imperfect tool, so the marker will check the output
of flake8 and disregard any false positives. The other 2 marks will be allocated
on a similar basis for basic style matters that flake8 cannot check, such as
conforming with naming conventions and commenting appropriately.</p>
<p>The remaining 16 marks will be allocated to the various parts of the questions.
As with a written maths test, getting the correct final answer is necessary but
not sufficient. A full marks answer to a question will be functionally correct,
have optimal <a class="reference internal" href="5_abstract_data_types.html#term-algorithmic-complexity"><span class="xref std std-term">algorithmic complexity</span></a>, and be elegant and readable. The
tests provided are an aid to writing correct code: passing the tests does not
prove that your answer is correct. For example, your code could produce the
correct output in the cases tested but nonetheless fail to implement the
specification in the question. For the avoidance of doubt, a correct answer is
one which correctly implements the specification, not simply one which passes
the tests provided.</p>
<p>As a rough guide, a solution which produced the correct output but was very
inelegantly written (for example taking many too many steps to achieve simple
functionality) and which used a suboptimal algorithm could be expected to earn
half of the marks available for a question.</p>
</section>
<section id="using-git-in-the-test">
<h2>Using Git in the test<a class="headerlink" href="#using-git-in-the-test" title="Link to this heading">¶</a></h2>
<p>You should accept the test from GitHub Classroom, and clone the test repository
into the folder you created for the course, just like you have been doing for
the exercise repositories. This will help ensure that you are programming in
the same environment you have been using all along, and therefore avoid any
unfortunate misconfiguration surprises in the test.</p>
<p>This is a test of programming as a whole, so using Git correctly is a part of
the test. This has some consequences for how you should go about the test:</p>
<ol class="arabic simple">
<li><p>Commit <em>and</em> push your work as you go along. Do not rely on committing once
at the end of the test. You will be marked on what you have pushed to GitHub
at the end of the test period. If the first time that you try to push
something to GitHub is at the end of the test time, and something goes wrong, then
you will receive 0% for the test, because you will not have pushed any
answers.</p></li>
<li><p>Don’t forget to <code class="xref py py-obj docutils literal notranslate"><span class="pre">git</span> <span class="pre">add</span></code> any files you need to create. If you don’t add them
to the repository, they won’t be pushed and therefore they won’t be marked.</p></li>
</ol>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If you commit and push often as you go through the test then not only will
you know that you have some marks in the bank already, but you will have a
record of what you had done at each point in time. In the unlikely event of a failure outside your
control, such as your network failing or GitHub going down, it will be very
easy to assign the correct marks to students who have already pushed a large
part of their work to GitHub. At the other extreme, it will be difficult to
ascribe any credit at all to students with no pushed work who then push a
single commit to GitHub after the time has expired.</p>
</div>
</section>
<section id="preparing-for-the-test">
<h2>Preparing for the test<a class="headerlink" href="#preparing-for-the-test" title="Link to this heading">¶</a></h2>
<p>The way to prepare for the test is to program. In the first instance, you should
make sure you have completed all of the programming exercises for the previous
weeks. Ensure that you can run and pass all the tests locally on your machine,
and also ensure that you have pushed everything to GitHub and that the tests
show as passing there.</p>
<p>Once you’ve gone through the previous exercises, you should attempt the practice
questions here. Each of these is a question similar in format and length to the
questions on the exam. Just like on the exam, the question is specified in the
<code class="file docutils literal notranslate"><span class="pre">README.rst</span></code> file in the exercise repository. When you first attempt each
of these exercises, you should set yourself a 40 minute timer and see what you
can get done (and committed and pushed!) in the time you would have in the test.
After that, if you haven’t finished, then go on and finish the exercise.
Programming is a practical discipline, and finishing one exercise will make you
faster and more capable when you attempt the next one.</p>
</section>
<section id="exercises">
<h2>Exercises<a class="headerlink" href="#exercises" title="Link to this heading">¶</a></h2>
<div class="proof proof-type-exercise" id="id1">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/N9g4rTii">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<p>Note that these instructions are only applicable to the practice problems.
The instructions this year will be different.</p>
</div></div><div class="proof proof-type-exercise" id="id2">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/inNEPHVo">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<p>Note that these instructions are only applicable to the practice problems.
The instructions this year will be different.</p>
</div></div><div class="proof proof-type-exercise" id="id3">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/OIuwA4kx">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<p>Note that these instructions are only applicable to the practice problems.
The instructions this year will be different.</p>
</div></div><div class="proof proof-type-exercise" id="id4">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/xiJiYtY5">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<p>Note that these instructions are only applicable to the practice problems.
The instructions this year will be different.</p>
</div></div><div class="proof proof-type-exercise" id="id5">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/maQ7QXJ3">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<p>Note that these instructions are only applicable to the practice problems.
The instructions this year will be different.</p>
</div></div></section>
<section id="exam-preparation">
<h2>Exam preparation<a class="headerlink" href="#exam-preparation" title="Link to this heading">¶</a></h2>
<p>The final exam will be similar in format to the <a class="reference internal" href="#midterm"><span class="std std-ref">midterm test</span></a>,
so all of the advice about preparing applies there too. The exam will comprise
three questions, each marked out of 20.</p>
<p>As with everything in this course, the one thing you can do to effectively
prepare for the exam is to program. You should complete any of the exercises in
the course that you have not yet done, and more exercises are given below.</p>
<section id="exam-scope">
<h3>Exam scope<a class="headerlink" href="#exam-scope" title="Link to this heading">¶</a></h3>
<p>Everything we hve covered in the course up to and including week 10 (chapter 9)
will be fully examinable. Chapter 11 will not be tested in the exam this year.
There will not be specific questions on debugging, but obviously debugging
skills will be important in completing the programming exercises.</p>
</section>
<section id="support-while-revising">
<h3>Support while revising<a class="headerlink" href="#support-while-revising" title="Link to this heading">¶</a></h3>
<p>The module Ed forum will remain open throughout the revision period and we
will be very happy to respond to your questions. There will also be a revision
lecture at the start of the summer term.</p>
</section>
<section id="past-papers">
<h3>Past papers<a class="headerlink" href="#past-papers" title="Link to this heading">¶</a></h3>
<p>Note that earlier past papers have four questions. Since May 2025 the exam has
three questions.</p>
<div class="proof proof-type-exercise" id="id6">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/2zw_s9Y2">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the August 2021 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id7">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/0z6-4vck">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the May 2022 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id8">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/Yo0Y5L-V">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the August 2022 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id9">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/tMaLtqdP">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the May 2023 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id10">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/ubGLt-3h">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the January 2024 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id11">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/gz3Pg2dF">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the May 2025 exam.</p>
</div>
</div></div><div class="proof proof-type-exercise" id="id12">
<div class="proof-title">
<span class="proof-type">Exercise </span>
</div><div class="proof-content">
<p>Obtain the <a class="reference external" href="https://classroom.github.com/a/YoetQFj9">practice problem from GitHub Classroom</a>. Follow the instructions in
the README file that will be displayed on GitHub on your copy of the page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This was the August 2025 exam.</p>
</div>
</div></div></section>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer" role="contentinfo">
© Copyright 2019-2023, David A. Ham.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.4.7.
</div>
</body>
</html>