The Problem Sets

The primary work for this course consists of a series of graded problem sets.

The problem sets are designed to reinforce the material and to encourage exploration of the tools and techniques we're studying this semester. They are not designed to trick you, make you feel stupid, cause you needless frustration, normalize the grading curve, or destroy your weekend.

Here are some general things to keep in mind:

  1. Problem sets vary in scoring. One week the set might be worth 10 points, the next week 30 points, the week after that 5 points, and so on. Generally, speaking, the number of points relates to how hard the assignment is.
  2. Most problem sets aren't "sets of problems" at all. For most of the course, the problem set will ask you to write a program to perform some task or to demonstrate your understanding of the material in some other way.
  3. "Trick questions" are, to my mind, bad questions. I purposely try to avoid writing problem sets that demand very narrow interpretations, remembrance of an off-hand comment in class, or things of that sort. However, when I grade problem sets I try to be as picky as the computer. The first thing I do when I grade a problem set is type your answer into the shell (or run the program you submitted).
  4. For this reason, it is an exceedingly good idea to test your answer by actually typing it into the shell. In fact, many questions in the beginning will require that you do this. (When we start programming, you'll have no choice but to run the program and see if it works).
  5. Be as adventurous as you can. Try it a few different ways. Break the code (or the command string) to see what happens. Add a feature. Write a related program. Do these kinds of things, and you'll get better faster.
  6. You are allowed to use any resource you like in pursuit of the answer—the books for class, your notes, google, friends and colleagues, anything—but you should always try to reason through the problem first before seeking help. It is true that this remarkably open policy introduces an ambiguous line between the honest search for pedagogically useful assistance and cheating. The important thing to understand is that plagiarism has nothing to do with how much you took, where you took it from, or (in the case of code) the nature of the information. Plagiarism is willfully misrepresenting another's words, ideas, thoughts, or expressions as your own. It is, in other words, a type of lying. The way you avoid the charge of plagiarism—which the University takes very seriously—is to be honest and forthright about how you arrived at the answer. There are nuances here, of course, but remember the core idea: if you are misrepresenting your work, you are probably doing something wrong.
  7. Stuck? Befuddled? Disheartened? Try to describe the difficulty you're having as throughly as you can—the things you tried, why you think your idea should work (even if it manifestly doesn't), your thought process while working through the problem, and anything else you think might help others to help you. You can often get partial credit (or even full credit) for giving it the Good Old College Try. I try to watch my email and the Canvas forum very closely over the weekends; your first line of defense should be the Canvas forum.
  8. Speaking of which, please try not to give away answers in the forum. This can be tricky sometimes, but most of the time, people just need a gentle nudge in the right direction. Similarly, when asking questions in the forum, try not to post large sections of code or otherwise give away the game.
  9. Problem sets are posted to Canvas shortly after the class in which they're announced. They are due no later than 8:00 pm on the announced due date (this is so I have sufficient time to look them over). No problems sets are accepted after this time, and there are absolutely, positively no exceptions to this rule.
  10. You pass in a problem set by sending me an email (at sramsay2 {at} unl {dot} edu). Your email should include the following:
    1. The name of the file in which your solution appears on spacely.
    2. The path to the file in your home directory.
    Please do not send the program itself through email (spam filters love code). I will not, generally, acknowledge receipt of your problem set; if I don't see it by the deadline, I'll usually contact you.
  11. Your final grade (or your grade at any particular point) is computed by dividing 100 by the total number of points accumulated and then multiplying the resulting number by the point total. The professor reserves the right to curve final grades and to adjust individual grades up or down based on class participation, the progress of the student's work, or any other standard metric.