Most work for this course involves programming assignments. These assignments are significantly more challenging than the assignments in COMP 15 and COMP 40, but most of them are also much smaller: many solutions take 10 to 40 lines of code. Many of the assignments will use software that comes with the text by Ramsey.
The course will also have two exams: a midterm and a final.
Your homework grades will be based on the course staff's judgement of the quality of your work and your mastery of the material. Grades are assigned on the same scale used by the National Science Foundation:
Excellent documentation will address exactly the key issues, and degree of detail will be exactly appropriate.
Excellent code will be very well thought out and implemented. Excellent code will show mastery of new language features and idioms. On the rare larger assignments, Excellent code will show evidence of thorough attention to abstraction and modularity. Excellent code will be so simple that it obviously has no faults. Instructors will see no obvious ways to make excellent code shorter or simpler. Layout will be consistent and will make good use of scarce vertical space. Excellent code will be of such high quality that the course staff would be happy to maintain it.
Very good documentation will address most key issues, with a good amount of detail.
Very Good code will show correct, idiomatic use of new language features. On the rare larger assignments, Very Good code will show that some attention will have been paid to abstraction and modularity, although one or two opportunities may have been overlooked. Very Good code will contain well chosen names for functions and their parameters, so that it is easy to guess what functions do. Instructors may see one or two ways to make Very Good code shorter or simpler. Layout will be consistent and will make good use of scarce vertical space. Small errors may be evident from reading the code.
Good documentation will cover some key issues, but significant issues may have been overlooked or may have been covered with insufficient detail. Vague generalities may appear where precise specifics are expected.
In Good code, individual functions will be well organized and readable. Most names will be well chosen, but there may be some exceptions. On the rare larger assignments, opportunities for abstraction and modularity will probably have been overlooked. Good code will get the job done, but possibly in a way that could be shorter or simpler. Layout may be inconsistent in a few places. Errors may be evident from reading the code, but instructors will believe that code could be made correct with only modest changes.
Fair documentation will show evidence of effort, but the degree of coverage and detail will be significantly short of what the course staff believe is needed to foster success.
Fair code will contain significant faults. Instructors may not be able to figure out what all functions do. Layout may be inconsistent or waste scarce vertical space (e.g., every other line may be blank). Fair code may show evidence of a 'clone and modify' approach to program construction. Names may be poorly chosen. Possibly a Fair program could be replaced by code half its size. Given Fair code, instructors may believe major changes would be required to make the code correct, or instructors may be unable to understand why the code might be correct.
Poor documentation may fail to address key issues or may address them perfunctorily.
Poor code may be undocumented or inappropriately documented (e.g., overcommented). Poor code will often be lengthy, out of proportion to the problem being solved. Poor code may be laid out on the page in a way that is hard to read. Poor code often shows evidence of its history: extra copies of functions, unused logic left lying around, old code commented out, and so on. Poor code may be so complex that it has no obvious faults.
You will receive No Credit for work that you cannot explain.
No Credit will be received for work that is deemed to be plagiarized. Code submitted for Comp 105 may be examined for potential plagiarism using automated heuristics. Plagiarism is a form of academic fraud, which is unacceptable at Tufts. If academic fraud is suspected, appropriate steps will be taken. Submitting someone else's work as your own is likely to lead to suspension or expulsion.
An examination should test not only your mastery of familiar material but also your ability to apply your knowledge to unfamiliar situations. To do well on my exams, you must
When you take one of my exams, expect not to know all the answers.
Each exam consists of multiple problems; you may be expected to read and write code. Each problem is worth a certain number of points; the number depends on how hard I think the problem is and how long it takes to complete the problem. Most problems are in multiple parts of varying difficulty:
It is very rare for an answer to earn all points available on a problem.
Every exam is unique, but on average, if you earn two-thirds of the available points, your grade will probably be Good or Very Good.
Your course grade is based on my judgment of the quality of your work and the degree of mastery you demonstrate. My judgment is influenced by your written work, by your class participation, and by your examination scores, but I give heavy consideration to written work, as indicated by the following approximate system of weights:
Participation in classroom activities and recitations 10% Office-hour visit to the course instructor 5% Homework assignments 59% Midterm exam 7% Final exam 19%
This weighting may be adjusted at my discretion.
When determining final course grades, I consider the total picture including not only all of your work but any grading tendencies I have observed during the term. My goal is the final course grades should reflect a consistent standard, consistently applied.
In a typical class, a consistent record of Very Good homework, together with commensurate examination grades, will lead to a course grade in the A range. If a significant portion of work is rated Excellent, a grade of A+ is possible. Work rated Good corresponds to a wide range of passing grades centered roughly around B. Work rated Fair will lead to low but satisfactory course grades; if a significant fraction of your work is Poor, you can expect an unsatisfactory grade (D or F).