Many of you are at Tufts because while you were in high school, you became extremely good at getting A’s. But I didn’t come to Tufts to worry about handing out A’s; I came to Tufts to make it possible for you to learn great stuff. I want to give you an A, but I insist that you earn the A by showing me (and my staff) that you’ve learned a lot. (If you can get an A without working hard, either you are cheating yourself or your instructor is cheating you.)
Of course you will want feedback, and my staff and I will provide it: you will receive formative assessments that help you get better and summative assessments (grades) that tell you where you are. That’s our end of the bargain. Your end of the bargain is that you will show us not only that you will have learned something about the subject matter, but that you have applied the methods and tools for learning that we will teach you. We’re drawing on years of study about what methods work best and help students learn most effectively. We don’t want to waste your time, and we don’t want to waste ours either. In order to receive grades, you must agree to The Bargain.
I take The Bargain so seriously that I actually expect you to print it out, sign it, and bring it to your first lab session. Your signature acknowledges that you have read and understood the bargain and its implications. I’m not interested in the letter of the law; as long as you live up to the spirit of the bargain, then throughout this semester, my staff and I will stand by you.
In almost every lecture, there will be a quiz. The topic of the quiz will typically be drawn from the reading and will be stated in advance. The purpose of the quiz is to help you prepare so that you come to class with your brain fully loaded and in the On position. To reward you for your preparation, my staff and I will grade some of the quizzes—probably about 10 or 15. Quizzes will be graded pass/fail.
Almost every week, there will be a homework or project. A “homework” is a collection of small problems. A “project” is a single big problem (although it may be broken into parts). For example, a homework might ask you to design several different functions that could be used in a GPS device. A project might ask you to do something like design and build a program that can tell what natural language a Web page is written in.
Once a week you will have a lab that gives you hands-on experience which helps you use tools or put ideas into practice. For each lab, you will receive a grade that will be based on your self-assessment of two questions:
You may find these questions hard to answer at first. Don’t worry; course staff will be on hand to teach you how to answer them.
I need to write a page on that. It should cover
Form
Mechanisms for submission
Except for the first homework, we will have some form of electronic submission. However, the department’s standard electronic-submission tool is barbaric, and if I can avoid subjecting you to it, I will. I’m still looking for a solution that can be integrated with DrRacket.
A finger exercise is a short problem is assigned as part of the homework, but that you don’t turn in.
Do the finger exercises as you read the book.
Do as many as you can. (For some it’s enough to use pencil and paper; others demand that you play with DrRacket.)
Discuss finger exercises with your classmates, and you may share solutions to finger exercises only.
When you ask for help with a homework problem, we may ask you to solve a related finger exercise (or to explain its solution).
The word “finger exercise” comes from music practice. If you’re an athlete, not a musician, think of finger exercises as calisthenics.
Homeworks and labs may include optional problems called karma problems. A karma problem provides extra challenge to those who want it. We’ll be happy to look at your solutions to karma problems, but they don’t affect your grades. However, if you have a habit of doing karma problems, we will certainly notice this habit—and such a good habit may improve the final letter grade you receive for the course.
That said, if you want a high grade for the course, the effective path to earning high grades is to do well on regular problems, not karma problems. Tackle a karma problem only after you’ve finished the rest of a homework or lab.
Without going into all the science behind it, it is known that when a grading scale has too many choices, the scale becomes extremely difficulty to apply consistently and fairly. For that reason, all your work will be graded on a simple five-point scale. (It is the same scale that the National Science Foundation uses to judge proposals.)
Excellent work bears all the hallmarks of systematic design and is also outstanding in some respects. To be judged excellent, the work must truly excel; that is, it must exceed expectations in some way. Excellence may be achieved through unusually simple code, through exceptionally thorough and well-directed testing, through insightful data analysis and description, through exceptional use of helper functions or other apparatus, or by some other accomplishment that impresses the course staff.
(By definition, it is not possible for the entire class to excel. The normal top grade is Very Good, and students who consistently produce Very Good work earn A’s. Grades of Excellent are awarded only in cases of true distinction.)
Very Good work is of high quality in nearly all respects. Very Good work need not be flawless, but it shows the marks of systematic design almost everywhere. Very Good code uses purpose statements, template structures, and tests to make its behavior and correctness transparent to a reader.
Good work demonstrates quality and significant learning. It shows the results of systematic design, but there may be several flaws or oversights which show that systematic design may not have been applied everywhere throughout the work. Work may also be judged Good if it gets the job done in a way that could result from systematic design but could also have been done in a much more concise or simpler way.
Fair work shows a systemic lack in one or more aspects of the design process; key issues need to be addressed. “Fair” is the lowest satisfactory grade.
Poor work shows little evidence of effort, is substantially incomplete, or has other serious deficiencies. “Poor” is an unsatisfactory grade.
A sixth grade, No Credit, is assigned to work that is not turned in, for parts that are incomplete, or for work that is non-functional or appears to bear no relation to the problems assigned.
This scale will seem strange to you at first. Roughly speaking, Excellent corresponds to A-plus, Very Good corresponds to an A or A-minus, Good corresponds to something in the B range, Fair corresponds to something in the range from B-minus to C-minus, and Poor corresponds to a D or F. No Credit is a zero.
Sometimes there is a small fault in an assignment that is not severe enough to warrant lowering the grade from, e.g., Very Good to Good. In this case I may instead mark a “deduction” for the fault. If you believe in “points,” then a deduction is roughly equivalent to a “point off” of a 100-point assignment.
If we have made a mistake in grading a homework assignment, you have seven days after the return of the assignment to call the mistake to the attention of your TA or instructor. In such cases, we will reassess the entire assignment and assign a new grade. The new grade may be higher or lower than the original grade.
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 quizzes, labs, homeworks, and projects, and by your learning portfolio. I plan to weigh the elements of your work roughly as follows:
Quizzes 15% Labs 15% Homework and projects 40% Learning portfolio (in lieu of a final exam) 30%
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.
Mostly. I recognize that college life occasionally interferes with on-time submission. If you can’t get a homework in on time, here’s what we’ll do for you:
At the beginning of the term, you are automatically issued three “extension tokens.” If you need to turn a homework in late, you can get an automatic 24-hour extension by expending one extension token.
At most ONE extension token may be expended on any single assignment. This rule enables me to give you feedback in the next class after the deadline.
Not every assignment is eligible for extension tokens. In particular, the first assignment and the final assignment (your learning portfolio) may not be extended using tokens.
When you are out of tokens, late homework will no longer be accepted. It will be returned ungraded, and you will receive No Credit for the work.
If you can’t finish a homework by the deadline, turn in an unfinished homework. Half a loaf is better than none.
There are two situations in which I will permit you to turn in work late without expending an extension token:
If a serious illness affects your ability to complete homework on time, your first step is to report the illness using the “Illness Notification Form” that is available in WebCenter for Students. We will then make suitable arrangements.
In case of extraordinary events such as bereavement, family emergencies, or other catastrophes, your first step should be to make contact with your associate dean for undergraduate education. You must take this step before the assignment is due. Ask your dean to drop me an email or give me a call, and we will make arrangements that are suited to your circumstances.
Once your dean is involved, all kinds of arrangements become possible. Until then, I’m a hardass.
The class has two lectures per week. Lecture is highly recommended. If you are an experienced Tufts student and you find you can do all the labs, homeworks, and projects without attending lecture, more power to you. (If you miss lecture, you will miss a quiz, and some quizzes count toward a small part of your grade. But don’t let that stop you.) If you are new to Tufts, or you are not doing great on the labs, homeworks, and projects, then if you miss lecture, you are fool. Not everybody understands that college is not like high school: if you don’t come to class, nobody’s going to complain—and if you fail the course and you haven’t come to class, nobody’s going to care.
To help maximize the value of lecture time, please comply with two requests:
If something puzzles you, ask a question. Questions are always welcome; if you have a question, chances are other people in class have a similar question.
One question that is always legitimate is “why are we doing this?”
During class, please put your cell phone on vibrate. If you must take a call, please leave the classroom and do not return until you have finished your call.
You must go to lab once a week. The lab is scheduled for 75 minutes, but if you finish the lab exercises sooner, you are welcome to leave early. Lab times are posted on the class home page; you will sign up before the first lab. Because lab space is very tight, you should always go to your assigned lab. If you go to another lab, there may not be room for you. However, if there is a real emergency that keeps you from lab, we will try to accommodate you in another lab.
You need DrRacket version 5.3.6, and you need a CS account. These basics are covered in quick-start guide on the course’s home page. If you don’t have your own computer or you don’t want to install DrRacket, DrRacket is already installed in Halligan labs 116 and 118 but not in 120 (don’t ask). In principle, you can use DrRacket by logging in remotely to the server homework.cs.tufts.edu
. In practice, I expect this to be difficult—you need a mysterious thing called an “X server connection,” and getting one is not as easy as it should be.
Computing is not a solitary profession. To maximize your chances of success, interact with others:
To reach the course staff, post your question to Piazza. If your question contains any of your code or your test cases, you must make it private to the instructors. Posting code or test cases in a public question is a violation of academic integrity which I am required to report.
If your question doesn’t contain code, please to make your question public. Public questions create opportunities for everyone to learn from your question, and they give your classmates a chance to help you by answering them.
Please never email the course staff directly to their personal accounts. Many students don’t understand that if you send mail to nr@cs
, it may go unread for several days. I keep far better track of Piazza questions than I do of my inbox.
It is OK to send me instant messages via Skype; my id is norman-ramsey
. But I don’t promise to be watching.
I hold scheduled office hours twice a week; if you want to see me outside those hours, post a private question on Piazza and I’ll accommodate you.
The teaching assistants will hold office hours six days a week. Once we have a schedule, it will be accessible from the course home page.
Spend time in Halligan hall. You will encounter plenty of classmates, teaching assistants, other students, and even faculty who can help you.
Form a study group. It will enrich your experience well beyond COMP 50. Some of the people you study with may become lifelong friends. And if you embark on a career in technology, these will be the people with whom you will start your first company.
Problem-solving and program design are creative processes. You must reach your own understanding of problems and discover your own paths to their solutions. During this time, please do discuss your ideas with friends and colleagues—you will do much better in the course, and at Tufts, if you find people with whom you regularly discuss problems. But those discussions should take place in English, not in code. If you start communicating in code, you’re violating academic integrity.
When you reach the coding stage, therefore, group discussions are no longer appropriate. Each program must be entirely your own work.
Similar guidelines apply to the final stage of the design recipe: your test cases. When you are figuring out how to test the solution to some problem, it is entirely helpful and appropriate to discuss testing with others. But when you start to write down your actual test cases, group discussions are no longer appropriate. Each test case must be entirely your own work.
I don’t want anyone to violate academic integrity through carelessness. To avoid a violation, please adhere to these guidelines:
Do not, under any circumstances, permit any other student to see any part of your program, and do not permit yourself to see any part of another student’s program. In particular, you may not test or debug another student’s code, nor may you have another student test or debug your code. (If you can’t get code to work, ask for help from me or from a teaching assistant, for example by posting a private question to Piazza.) Using another’s code in any form or writing code for use by another violates the University’s academic regulations.
For this class there is one exemption: you may freely share code that you have written for finger exercises only.
Do not, under any circumstances, permit any other student to see any of your test cases, and do not permit yourself to see any part of another student’s test cases.
Again, test cases for finger exercises are exempt.
Do not, under any circumstances, post a public question to Piazza that contains any part of your code or any part of any test case. Private questions directed to the instructors are OK.
Finger exercises are not exempt—it is unfair to your classmates to post a question whose presence might inadvertently deprive them of the benefit of doing a finger exercise.
Do acknowledge, in writing, those with whom you discuss problems. Just as in a professional setting, collaborations must be acknowledged.
The most heinous violation of academic integrity is plagiarism (submitting someone else’s work as your own). We may examine your work for potential plagiarism using automated heuristics.
If I or a member of my staff suspect a violation of academic integrity, we are required to report our suspicions to the University’s Judicial Officer, who will investigate and adjudicate the case. Be careful! As described in the handbook on academic integrity, the penalties for violation can be severe. A single bad decision made in a moment of weakness could lead to a permanent blot on your academic record. In particular, if you plagiarize, you may be suspended for a year or even expelled from Tufts.
You may look in the library (including the Internet, etc.) for ideas on how to solve homework problems, just as you may discuss problems with your classmates. Library sources must be acknowledged when you submit your homework, even if you find little or nothing useful.
Some students rely heavily on the library. Although this is permitted within the letter of the rules, I discourage it. I assign homework problems not because I want to know the answers, but because doing homework is the best way for you to learn. While library skills are important in our profession, the homework in this course is designed to develop other skills that are even more important. Remember, when you go on job interviews, you will not have the library with you!
For help writing these policies, and sometimes for the very words themselves, I’m indebted to Matthias Felleisen, Carmen Lowe, Andrew Myers, and Olin Shivers.