Exams

Final Exam

Scores:

You should have received an email containing your midterm score. If not, please contact the instructor. You can get your midterm back this week by asking your TA in lecture.

The average score was around 74% and the median was 78%. There will not be a curve on the final exam.

Regrade Policy:

If your exam score was added up incorrectly, take it to your TA or instructor and they'll fix it for you.

If you disagree with the grading, such as if you think your solution actually does work, or that your solution is more nearly correct than it was given credit for, the procedure for regrades is the following:

  • If your complaint is about the correctness of your solution to a programming question, try running it in the interpreter first, using one of the following test programs, fixing any trivial syntax problems first. Run it for yourself and see how nearly correct your solution is.
  • If you still think your grade is incorrect, submit your exam to the instructor for a regrade. (Slide it under my office door.) You must include a cover page with a brief written explanation of what specifically you think was misgraded and why. If your complaint is about overly harsh grading on a programming question, you should also submit a printout of your code being run in the interpreter, along with the test case results, to us so that we can to verify its correctness. We will not accept any exam for a regrade unless it includes this cover page, and we will not re-evaluate grading of the correctess of any programming questions without a typed copy of your solution from the interpreter being shown to us first.
  • Also note: When you submit an exam for a regrade, we will regrade your entire exam. If we notice anywhere that you were mistakenly given too many points, we will also correct this, up to a maximum penalty of -2 for the entire exam. So it is possible (though unlikely) that a regrade request will result in you receiving a slightly lower mark than what you started with.
  • All midterm regrade requests (other than simple score addition errors) must be submitted by Friday, January 7, 2011.

Time/Place:

  • Date: Thursday, December 16, 2010
  • Time: 8:30 - 10:20am (110 minutes)
  • Place: in normal lecture room, MOR 220

Practice Exams (with answer keys):

Sample final exams posted here are intended to be very similar to the actual exam. The number of problems and type of problems on the actual exam will be much like what is seen on these practice exams. We do not promise that the final exam will cover exactly the same topics as the practice exams, or utilize exactly the same set of syntax. But it will all come from material we have covered.

Topics:

In general, all of the major topics we covered in lecture are considered "fair game" on the exam except the ones in the "NOT" list below.. You definitely WILL be tested on the following topics:

  • ML: recursion; pattern matching; tail recursion; list manipulation; use of higher-order functions; curried functions; composition of functions; options; equality types; raising exceptions
  • Scheme: basics; let, let*; lists and pairs; higher-order procedures; code as data; symbols; anonymous functions (lambdas); error; mutation via set! and define; thunks; streams; macros
  • JavaScript: basics; types; strings; arrays; functions; anonymous functions; higher-order functions; creating and using objects; prototypes; this keyword; regular expressions; duck typing

The following topics are guaranteed NOT to be tested on the final exam in any form:

  • ML: structures and signatures; functors or other material beyond book section 8.2; references, vectors, arrays, or any Ch. 7 material beyond book section 7.1; file I/O (any material from Chapter 4); while loops; mutation constructs; handling exceptions
  • Scheme: anything to do with BASIC or parsing or interpreters; writing a REPL loop; symbolic differentiation; list mutation (mcons, set-car!, set-mcdr!, etc.); quasi-quoting; continuations; handling errors
  • JavaScript: inheritance via prototypes (e.g. Point3D "extends" Point); Underscore library; Base2 library; details about closures; bad parts (with, eval, semicolon insertion, etc.); throwing/catching exceptions
  • general: merge sort implementation, details of type safety (lecture 9), dynamic scoping, memoization; garbage collection

Midterm Exam

Scores:

You should have received an email containing your midterm score. If not, please contact the instructor. You can get your midterm back this week by asking your TA in lecture.

The average score was around 82.5%. 21 people got an "A" (90-100) and 22 people got a "B" (80-89). There will not be a curve on the midterm exam.

Regrade Policy:

If your exam score was added up incorrectly, take it to your TA and they'll fix it for you.

If you disagree with the grading, such as if you think your solution actually does work, or that your solution is more nearly correct than it was given credit for, the procedure for regrades is the following:

  • If your complaint is about the correctness of your solution to a programming question (#4-9), try running it in the SML interpreter first, fixing any trivial syntax problems first. Run it for yourself and see how nearly correct your solution is.
  • If you still think your grade is incorrect, submit your exam to the instructor for a regrade. (Either give it to us in lecture, go to our office hours, or slide it under our office doors.) You must include a cover page with a brief written explanation of what specifically you think was misgraded and why. If your complaint is about overly harsh grading on a programming question, you should also submit a printout of your code being run in the SML interpreter, along with the test case results, to us so that we can to verify its correctness. We will not accept any exam for a regrade unless it includes this cover page, and we will not re-evaluate grading of the correctess of any programming questions without a typed copy of your solution from SML being shown to us first.
  • Also note: When you submit an exam for a regrade, we will regrade your entire exam. If we notice anywhere that you were mistakenly given too many points, we will also correct this, up to a maximum penalty of -2 for the entire exam. So it is possible (though unlikely) that a regrade request will result in you receiving a slightly lower mark than what you started with.
  • All midterm regrade requests (other than simple score addition errors) must be submitted by Monday, November 22, 2010.

Time/Place:

  • Date: Wednesday, November 3, 2010
  • Time: in lecture, 50 minutes
  • Place: in normal lecture room, MOR 220

Practice Exams (with answer keys):

  • icon practice midterm #1 (this was given as section handout #5)
  • icon practice midterm #2
  • icon practice midterm #3
  • icon practice midterm #4
  • Sample midterm exams posted here are intended to be very similar to the actual midterm. The number of problems and type of problems on the actual exam will be much like what is seen on these practice exams. We do not promise that the midterm will cover exactly the same topics as the practice exams, or utilize exactly the same set of syntax. But it will all come from material we have covered.

Topics:

  • In general, all of the major topics we covered in lecture are considered "fair game" on the exam. You will definitely be tested on the use of higher-order functions, curried functions, composition of functions, list manipulation. But you may also be tested on topics such as tail recursion, options, equality types, structures/signatures,
  • The following topics are guaranteed NOT to be tested on the midterm in any form:
    • functors or other material beyond book section 8.2
    • references, vectors, arrays, or any Ch. 7 material beyond book section 7.1
    • material from Chapter 4 (file I/O)
    • merge sort
    • details of type safety (lecture 9)
    • dynamic scoping