"Teach The Topic" Exam
For your 'midterm exam' grade you will be doing a take-home exam. You will
receive the exam (in printed form), be given a limited time to complete your
work (the due date will be listed on the main page for
this course), and will then hand in your work (on paper) to be graded.
However, your are strongly, strongly encouraged to not think of this as an exam.
Instead, think of it as teaching someone else about each question's topic(s) by
writing a short essay. To be clear: for each question on the exam you will
develop an answer (typically either a small program or example output from a
program that's given to you) then you will thoroughly explain both why your answer
works AND the concepts that your answer uses. Your explanation must be EXTREMELY thorough - someone who's passed
115/116 (but hasn't taken 142 yet) should be able to read through your
explanation and have all their questions answered by your writing.
Again, think of this as teaching all the concepts, ideas, and knowledge needed
for someone else to not just solve similar problem, but to be able to fully
explain their solutions to those similar problems.
As such, you can think of the work you do for each question being divided up
into two parts: your source code/program output/etc that the question asks for,
and your explanation thereof. Here are the basic 'rules' for each of the
two parts:
-
Your source code/program output/etc that the question asks for (aka "your
solution")
- When all is said and done your source
code/program output/etc will get you no points by itself. Since
you've got a week and can use Visual Studio simply providing the
solution to the question doesn't really demonstrate any knowledge.
At the same time, you need a correct solution in order to demonstrate
your knowledge of the concepts (you don't get credit for doing a good
job of answering the wrong question).
Think of a correct, efficient solution to the question as an 'admission
ticket' - it gets you in the door, but that's it.
-
You're encouraged to use Visual Studio to
help you implement programs and/or understand what output a program produces
and why
- You're specifically
being given the exam questions on paper so that you'll have to type this
stuff into VS by hand. Typing stuff in by hand will force you to look at the
material in detail.
-
WRITE OUT YOUR SOURCE CODE SOLUTION (OR
YOUR OUTPUT FROM THE PROVIDED PROGRAMS) BY HAND ON PAPER
- If you don't write out the
source code / output by hand then you will get a zero for that
question!
- This is done specifically to help
reinforce your learning. The repetition will help you remember
(and subsequently, understand) the programs that you're writing.
- Failure to write out the source code or program output on paper
in your own handwriting will get you a zero for that answer
- Make your handwriting legible. If I can't read it you
don't get points!
- Did I mention that not writing out
the source code or program output on paper in your own handwriting
will get you a zero for that answer?
-
Your explanation of your solution
You're going to have to not just correctly
provide a solution for the question you must also explain what's going on - how your program works, and why. This
will be the focus of the grading - you will need to provide thorough, clear
explanations that demonstrate a solid knowledge of
all the important
concepts your soution uses.
- Without a clear,
concise, intuitive, prose explanation you will get zero points for the
question.
Since you can use Visual Studio to help you
figure your solution to the question you won't be getting points for that
in and of itself.
So while a correct answer is necessary, it isn't
even close to sufficient for full credit.
- While spelling
and grammar are important, the focus is on clear presentation of
good ideas. You're expected to fix all errors that your
spell-checker shows you (i.e., no red lines under words) and your
grammar is expected to good enough to be readable, but what's most
important is that you have good ideas - that you clearly understand
what's going on, and that you can clearly explain what's happening
and why.
- In particular:
students who do not speak English natively should focus on good,
clear ideas, and then just do as well as you can on the
spelling/grammar.
-
You need to demonstrate that you understand all the concepts involved in
each solution.
-
Generally speaking you're only expected to explain substantial /
important concepts that we've looked at in this class. A good rule
of thumb for determining whether to explain something is that the
more in-class time (for hybrid students), videos (for everyone) and
exercises focused on a concept the more important it is that you
explain it thoroughly.
For example, if we didn't spend much (or any) time talking about the
"using System;" statement at the top of your C# program then you
don't need to explain it. If we did spend a lot of time on
arrays then you should thoroughly explain your usage of the array in
your solution.
-
It's recommended that you organize your writing around each
concept (as opposed to writing out a line-by-line explanation of the
code and trying to explain each concept as you go).
-
If you've explained a concept in a prior answer you can refer
back to that question rather than repeating yourself again.
For example, if your used Console.WriteLine in question #2 (and
explained how output works there) and also in question #5 you can
write something into question #5 making it clear that your solution
to question #5 uses console output and to please refer to your
explanation in question #2 for more details. If your solution
to question #5 used Console.Write you might refer to question #2 for
general information about output, then describe in detail how
Console.Write differs from Console.WriteLine (and why you're using
one rather than the other in you solution to question #5).
-
While it's ok to type out your
explanations (and ONLY your explanations - not the source code or
program output), I encourage you all to use equations, pictures, and
anything else that helps to clearly explain what's going on.
Because of that it may make more sense to write out your
explanations by
hand.
- You can write out some explanations(s)
by hand, and type out (and then print) other explanations.
- You're not required to produce any
particular length of writing.
BUT be aware that the instructor is expecting to get back an explanation
that's about 1/3 to 1/2 of page for
each concept (typed, single-spaced, with the 'normal' font for MS Word -
12 point Times New Roman or 11 point Calibri) . Going substantially under (or over) this is probably
a sign that you either haven't explained it well enough or else are
including extra, irrelevant, 'padding' verbiage.
- Make sure to be very, very clear which
question you're explaining.
You must print out a 'cover sheet' for each question; there's a box in
the top-right corner to put the question number.
- There may be some
suggestions about
what to include in your explanation at the bottom
of this document.
Again, you need to provide a correct, efficient solution to each question, and
then provide a thorough, thoughtful, informative explanation of all the concepts
that your solution uses.
Here are other, miscellaneous instructions for the exam:
-
You are NOT allowed to work with anyone else
on this. You need to write up your explanations on your own.
-
Any plagiarism
will result in zero points for everyone involved.
- You are allowed to
talk to each other about the PCEs. The smart thing to do is find a PCE
that covers the topic(s)hat the exam question covers, then work with
someone else to (re)learn that material. You can then do the exam redo
work individually.
-
How to assemble your exam for hand-in
- All your work needs to be handed in ON PAPER.
- Print out the
exam cover sheet (note that there's
one for BIT 142, and a separate
one for BIT 143), and make sure that
this page ends up at the top of the stack of pages.
- PLEASE put the staple in the box at
the top-left. I'm going to spend hours grading these and it
helps if I can actually see your work easily!
- The right-hand column is where the
instructor will accumulate the grades for the exam (for easy
reference while entering them into Excel). There may be a
rubric on the page which deals with exam-wide issues (such as: "Is
the overall appearance of your work professional?")
- Please arrange your answers in the same
order as the exam questions (e.g., #1, #2, #3, #5, #7, #8)
-
For each question:
-
Print out the
per-question cover sheet and make sure that this page ends up at the top of the stack of
pages for this question.
- Put your name on this just in
case it gets separated.
- Write the question number (from
the exam) in the top-right corner.
- You pages must be placed behind this page, in the order
that you want the instrutor to read them.
- You'll need to read through the
per-question rubric itself for
the per-question cover sheet to make sense. The idea here is
that the per-question cover sheet is a place to write your answer
and where the instructor can write in feedback, while the rubric
explains how the grading is actually going to be done.
-
Professional appearance
Make sure that your work is professional in appearance. If you
have questions please ask the instructor well before the due date.
A couple of common errors to watch out for here include:
- LEGIBLE HANDWRITING
You've got as long as you need to write this out, so write
everything clearly and readably. If you have to, print out
another copy of the
per-question cover sheet and rewrite your unreadable answer on
this new, fresh copy in a legible manner.
- No spagetti edges
If you hand-write supplemental pages make sure that the edges are
neat and clean. On the one hand it's not really a big deal -
it's the quality of your work that's important. On the other
hand nothing says "elementary school work" like spaghetti edges -
practice now before you lose a job interview to something dumb like
this!
-
The due date for this
is listed on the main page for the course.
This is a list of all the documents used for this 'Teach The Topic' style
take-home exam
-
This
document (the description of the exam)
-
An example of how to answer
a sample question
-
An example question, for
you to practice answering yourself.
-
Documents for the actual exam
-
Exam cover sheet
-
Checklist of stuff to double
check
I recommend doing this after finishing each question; definitely do it
before handing in the exam
-
Per-question rubric
(draft for the practice question)
-
Per-question cover sheet
-
Expecting about a page, typed, single-space, worth of explanation (+
/ -, but I'm expecting a good 1/3 of a page for each concept,
minimum)
-
Per-question rubric and answer page (final version for the actual exam)
Note: This is the first time that I've tried using a rubric to evaluate
an exam (as opposed to a grading key and/or technical checklist) so you
should anticipate improvements and revisions being made to the rubric
before it's used on the exam. That said, it's my intention to
preserve as much of the 'draft' rubric as possible -
(Based on question # - item 1 below talks about question #1 in the exam).
For each of the below points:
- I would strongly suggest that you explain this line by line, walking
through all the iterations of the program
- Make sure that you explain clearly how modulus works - you might
want to draw out the 'long
division' picture of how you arrive at your answer.
- Make sure that you're very clear about how the division works, the
exact value it produces, and why. You may be able to make use of
the long division that you did for the modulus operator
- Walk through this code (in your clear, intuitive, English explanation)
explaining why each line of the program is executed.
- Mostly you'll need to be very clear about why you're choosing the values
that you're choosing. On the last part, for example, explain clearly
why you chose the number that you're modding by, and why you choose the
number to subtract.
- For parts 1 and 2 use the description in the text at the top of the
page and IGNORE the comments in the code. Generating numbers that
the comments ask for you will get you zero points back.
- Make sure that it's clear what each line does (mechanically-"This line
allocates an array of n integers") and also make it clear
why you put each line in ("We need to first create the array here so that we
can fill it with the specified values later on")
- Same as #4
- Same as #4
- Also: Make sure to clearly explain how the division works.
Explain what your original error was (if you made this error), and how
you fixed it.
- "I'm using a double as a variable" is not a sufficient
explanation - explain how that changes the division,
- Also: Clearly explain how the parameters work - why you chose the
type you did, where the values come from in Main, and why this is useful
(i.e., what advantage do parameters provide, and how do we use that
advantage here). Why not just ask for user input in your method?
- Also: Clearly explain the return value - why you chose the type you
did, where the return value comes from, and why it is not sufficient to
simply print out the answer.
- Same as #4
- Same as #4
You will need to hand-write this one (the entire thing)
-
EXAM TODO
-
Double-check that the 'You should probably include' stuff is correct
-
Should I remove the 'find and fix' question(s)?
-
Should I have a single page for the per-question rubric, and then a
simple grading summary to actually be a header page?
-
Feedback
-
Clear rubric? Clear how to apply?
-
Any items for checklist?