For programming problems, there is usually more than one right answer,
hence it is important to present with your program evidence that it is correct.
Answers to programming questions will be scored on the following points:
\begin{itemize}
\item
elegance and clarity
(conciseness, using relevant techniques to modularize the solution,
making good use of language features, the creativity of your solution,
and how clear and convincing your argument is that the code is correct)

\item
correctness
(whether your program solves the given problem correctly
in the given programming language)
\end{itemize}
You should try to eliminate all syntax errors from your programs,
as they will affect both the correctness and clarity of your solution;
you may receive no points for programs with major syntax errors.
Run-time space and time efficiency of programs is not important,
unless the problem says so.
Also, checking of external inputs, prompting, labeling output, and other
conventions for dealing with humans are not important (for this class),
unless the problem says so.

The breakdown of points between these categories is roughly
as follows.
\begin{itemize}
\item
50\% for elegance and clarity
(using relevant techniques to modularize the solution,
making good use of language features, the creativity of your solution),

\item
50\% for correctness
(whether your program solves the given problem correctly
in the given subset of the given language)
\end{itemize}

You are encouraged to use auxiliary subroutines whenever they are helpful.
