Exam 1 has two parts: Paper-and-Pencil and On-the-Computer
Paper-and-Pencil part
  1. What sort of questions should I expect?

    The Paper-and-Pencil portion of the exam contains problems in which you:

    • Trace code by hand, where such code contains function calls, function definitions, and FOR .. RANGE statements.
    • Write short snippets of code to do various things, including:
      1. loop according to a pattern with a FOR .. RANGE statement (we may restrict you the the SINGLE-parameter form of RANGE),
      2. construct an object that is an instance of a class new to you,
      3. call methods on such an object, and
      4. reference instance variables on such an object.
    • Indicate what names (variables) are valid at what places, thereby demonstrating your understanding of scope.
    • Write a short but complete implementation of a function whose specification you are given.

    plus possibly other problems similar to the above.

    Here is a sample of the paper-and-pencil portion of Exam 1.

  2. What are its rules?

    The rules for BOTH parts apply, of course. Additionally:

    The ONLY external resource that you may use beyond those listed for both parts of the exam is a Hint Sheet, as follows:

    • Your Hint Sheet must be a single 8.5 x 11-inch sheet of paper, with whatever you want on it, typed or handwritten or a combination of the two.
    • You must have prepared your Hint Sheet before beginning the exam.
    • It is best if you create your own sheet (working with someone else is fine) as that will probably maximize both your learning and your score on the exam.
    • If (and ONLY if) you lack access to a printer, you may create an electronic document that is the equivalent of the above sheet of paper and you may access that document while taking the exam.
  3. Taking the Paper-and-Pencil part:
    • You do the Paper-and-Pencil part first.
    • When done, turn it in by handing it to the proctor in the room.
    • Most students spend about 45 minutes on the Paper-and-Pencil part.
    • You may NOT return to the Paper-and-Pencil part after beginning the On-the-Computer part.
On-the-Computer part
  1. What sort of questions should I expect?

    The On-the-Computer portion of the exam contains problems just like the ones you have done in your PyCharm exercises. Concepts that will be assessed include (but are not limited to):

    1. Implementing functions that sum (possibly conditionally) or count the numbers in a range that satisfy some property.
      • You are restricted to the SINGLE-parameter form of the RANGE expression.
      • So come prepared to determine how many times the loop must run, and what expression of the loop variable gives the desired sequence of numbers to check.
    2. Implementing functions that call other functions. The functions to be called might be built-in functions, or defined in a library like the math library, or defined in the current module.
      • Wherever practical, you should CALL a function instead of COPY-AND-PASTING its code.
    3. Implementing functions that require iterating through a RANGE expression, with the same restriction to SINGLE-parameter RANGE expressions as in the rest of the exam.
    4. Implementing functions with a specification for which:
      • Its parameters might be numeric or instances of classes defined in the rosegraphics library.
      • You construct new instances of classes defined in the rosegraphics library.
      • The characteristic of those newly-constructed objects may be independent of the parameters or computed by using one or more of the parameter's instance variables.
      • You apply methods to the given and newly raw the newly-constructed objects, e.g. to draw the objects and do other things that methods in the rosegraphics library do for you.
        • Using the DOT trick and pop-up to learn how to construct objects from rosegraphics that you have not yet seen, and/or apply methods and reference instance variables from objects of classes familiar to you as well as ones new to you.
    5. Same as the previous item, but where the objects that you construct and draw form a simple pattern (and are constructed and drawn inside a loop).
    6. Given a specification of a function, write code that would TEST that function (by computing by hand or with a calculator the expected value to be returned by the function on arguments of your own choosing, and printing both the expected value and the actual value returned by the function on those arguments.
  2. What are its rules?

    The rules for BOTH parts apply, of course.

    Additionally, for the On-the-Computer part, you may use any of the following:

    • Any written material you choose to bring to the exam: books, handouts, notes, etc.
      • Please organize any handouts you bring so that they are not spilling over into a neighbor’s workspace.
    • Your computer and anything on it, including (but not limited to) your own code from previous PyCharm projects.
    • Your own Git repositories on the gitter server.
    • Anything in our course's Moodle site.
    • Anything directly reachable from the CSSE 120 Home Page (including but not limited to the Session Preparation pages, the course Piazza site, and the official Python documentation).
    • You may NOT use any search engine (like Google)
  3. Taking the On-the-Computer part:
    • You begin the On-the-Computer part after turning in the Paper-and-Pencil part.
    • You get the On-the-Computer part as usual, by doing VCS ~ Update Project in PyCharm.
    • Commit-and-push frequently, but AT LEAST every time that you continue to another module.
    • Turn in the On-the-Computer part in the same way you have turned in other PyCharm projects:
      1. Commit-and-push your final version.
      2. In Moodle, turn in ALL the files in your src folder in the usual way.