Teaching Policies and Assorted Advice
Every course I teach has a webpage, accessible from my
The main ways to contact me are e-mail, phone, and coming to my office.
The easiest ways are e-mail and stopping by my office.
I generally respond to e-mails within a few hours,
depending on when it is sent.
Coming to my Office
If you want to see for help on anything, you have three choice, listed in order of
- Come to my office hours. There is no appointment necessary—just show up.
- Schedule an appointment using my Google Calendar.
For help, see
Setting up and appointment with a professor using Google Calendar.
If possible, request an appointment 24 hours in advance.
- Stop by my office and hope I am in and not busy. I am on campus by 8:30 most days
(but it is not guaranteed).
When I am not available, there are other places to get help:
Be resourceful when you run into problems—but always stay within
the appropriate boundaries.
- The Computer Science Help Center
- Reference books (A Java or C++ book, for instance)
- The Internet (Hey, if it's on the Internet it has to be correct!)
- Course webpage
- Links listed on the course webpage
- A tutor through the ASC
- Class Attendance
You are expected to attend every class. Anything you miss is your responsibility.
If you have questions about how anything is graded, please ask.
Grading questions must be resolved no more than 2 weeks after
the assignment is first handed back.
The course webpage contains a chart that gives the percentage
breakdown for the course.
I do not assign letter grades to individual assignments.
Final grades will be based on the scale in the table below—round your final percentage down at .49 and up at .50 (e.g. 83.49 rounds to 83 and is a B-).
- Extra Credit
I assign grades based on mastery of the material from the course,
and the assignments are designed to test that mastery.
Thus your grades will be based on those assignments and nothing else.
In other words, I do not allow for extra credit assignments.
- Handing in homework assignments
All assignments are due at the beginning of class on the due date.
- Written assignments must be brought to class. Written assignments
that are slid under my door, placed in my mailbox, or given to anybody but me
may be rejected.
- Programming assignments must be handed in by class time using
It is your responsibility to make sure that your files are handed in properly.
Unless otherwise specified, no hard copies of your code are required.
Write-ups related to the assignment should be submitted as a PDF with the code.
- Free Late policy
Unless otherwise specified, all of my courses have the Free Late policy in effect.
According to this policy, I will accept one (and only one)
assignment up to 1 class period late.
In order to use the Free Late, you must
This only applies to homework assignments, programming assignments, and lab reports.
It does not apply to term papers, quizzes, tests, etc.
- attend class on the due date, and
- hand in a piece of paper with
- your name,
- the phrase "I want to use my Free Late", and
- a one sentence reason/excuse.
Any reason/excuse is valid, but I would like to know what it is.
Note: If you arrive to class late when an assignment is due,
you will have to use your Free Late to turn it in.
Other than the one Free Late assignment, I will not accept late homework.
- Homework assignments
I reserve the right to deduct points from any papers which are disorganized,
illegible, or contain extraneous material. In other words, the homework
which you turn in should NOT look like scratch paper. After you have
worked through a solution, neatly re-write it on another sheet.
If possible or required, use a graphics-capable word processor.
Word or LaTeX are two good choices.
Homework assignments should be clear, concise, and organized.
You must show all of your work for each problem on a homework assignment,
even if a problem does not specifically say so. In other words, do not
just write down your final answer. Include all of the steps you needed to complete
to get the answer.
Problems should be in the order they appeared on the assignment, and
your assignment must be stapled together, preferably with your name appearing
on each page of the assignment.
You should use full English sentences where appropriate.
Charts/diagrams/drawings should be neatly drawn and clearly labeled.
Algorithms should be clearly written, documented and labeled
Mathematical proofs should be properly and neatly written.
Algebra ≠ Proof. Algebra+context=Proof.
Programming assignment grades
Program grades are usually based on the following criteria, as specified on each assignment.
For each criteria, I give a list of the sorts of questions I am thinking about as I grade.
The lists are by no means exhaustive, but should give you an idea of what I am looking for.
Some assignment may give additional criteria.
Does it compile?
Does it run properly?
Does it do everything according to the specification?
If specified, are the classes/methods/functions named properly?
Are the parameter types, etc. correct?
Is the input/output correct?
Did you follow all of the instructions?
- Code documentation:
If a specific guide was given for documentation (e.g. use Javadoc comments),
did you follow it?
Does each file contain the filename, author, class, date,
and an overview of what is in the file?
Are pre/post conditions given for each method/function?
Is each class and segment of code documented?
Is each variable explained?
Is each of your classes cohesive—that is, does each class represent one
specific and well defined thing, and does each method do one well defined thing?
Does your code involve a low level of coupling?
Is your GUI separate from the main program logic?
If applicable, is your code extendable?
Did you utilize inheritance where applicable?
Are you utilizing the appropriate data structures?
If you were given a specific style guideline to follow, did you follow it?
Are functions/classes used when appropriate, including proper and
intelligent use of variables, return values, and arguments?
Do the class functions make sense?
Are the names for variables/functions/classes descriptive?
Are loops indented properly?
Is the code neat and organized?
Has any extraneous code been removed?
Is your code understandable and as simple as possible?
Are errors dealt with in a sensible way?
Do you use complicated and/or long code when short and simple would suffice?
- Write-up or Analysis:
Is it in the specified form (README file, Word document, Text document, HTML)?
Does it have the required information (charts/diagrams/examples)?
Is a complete analysis performed as specified?
Did you fully answer all questions?
Is it well written (organization/grammar)?
- Performance or Efficiency:
Is each function implemented as efficiently as possible, both in terms of running time
and code length?
Is the overall runtime as it should be?
Did you utilize the proper data structures and algorithms for each given task?
- GUI or Interface:
How easy is it to use? Does it look good? Is the input/output clear?
Is the GUI user-friendly? Is it clear how to use it?
Are all inputs handled properly? Are errors dealt with in a way that
allows the user to fix their mistakes, including error messages
- Make-up quizzes/tests/exams
I generally do not give make-up quizzes or tests, so do not plan
trips during the semester or exam week.
This holds true of quizzes that are unannounced as well.
There are very rare exceptions to these rules
(college-related travel, for instance),
but visiting your girlfriend in Houghton is NOT one of them.
- Academic Dishonesty
You must do your own work! Although I allow students to collaborate on some
assignments, under no circumstance should any copying of material, whether written
problems, source code, etc., take place. In other words, you may discuss the assignment
verbally, using paper, etc. as visual aides, but you should NOT send or receive any
source code, either electronically or physically, exchange written answers, etc.
If you are unclear as to whether or not something is "cheating", be safe and ask
before you proceed. I place a very high value on integrity, and I will seek the maximum
possible penalty for any infractions.
You are responsible to make sure nobody has access to your work.
If somebody copies your homework or program, you will both
be held responsible and punished.
The first thing you should do is make sure nobody has access to the files, either
on your computer or on any department PCs or servers.
The second thing you need to do is make sure you don't leave scratch paper
or printouts of your work where others can obtain them. Tear up any paper
before you throw it in the trash/recycle bin.
There are four things that will help you do well in most courses:
A final tip: Neither I nor the textbook can teach you any subject.
Learning is usually accomplished through practice.
You will not learn by merely reading the textbook and/or paying attention during class.
This is particularly true with courses that involve mathematics.
The only way you will learn it is by working through problems—sometimes lots of them.
Learning is often like sports in that way—you don’t learn how to play basketball (or insert your favorite sport)
by reading books and/or watching people play it. Those things can be helpful, but you will never become a proficient
basketball player unless you practice. Practicing a sport involves running many drills to work on the
fundamentals and then applying the skills you learned to new situations.
Learning many topics is exactly the same—you first need to do lots of
exercises to practice the fundamental skills,
and then as your understanding of the concepts becomes more concrete you need to be able
to apply those skills to new situations.
Attitude: Your focus should not be on what grade you want/need
to get in a class, rather it should be on learning the material
as well as you can. If you focus on learning, generally the good grades will come.
Reading: Read your textbook and reference materials.
In many of my courses, I will not lecture through material during class.
I expect that you know how to read and can learn much of the material
by reading and doing suggested exercises (if they exist).
Class time will be spent discussing the more difficult topics or expanding
on what the book has to say.
If you are not preparing for class time, you will not get much out of class time.
If it is not clear what sections you should be reading, please ask.
Doing Problems/Programs: Do any suggested problems or programs.
It is much easier to
understand and remember concepts when you see them in practice.
Attend Lecture/Lab: Whether or not attendance is required,
you should always attend. There is always the possibility of missing
important information if you skip class.
In addition, my experience has shown that those who attend class
usually do much better than those who do not.
You are responsible for anything you miss during lecture, lab, or recitation.
- Course Evaluation
Hope College expects all students to assess each course in an effort to
continuously improve student learning. At the end of the semester,
you will be asked to assess how well this course met its stated goals.
Your responses will be kept anonymous, but I will take the collective
results seriously in thinking about how to provide Hope students the best
possible education. Your responses matter.
You are urged to participate in this important process.
- Americans with Disabilities Act
Any student whose disability falls within ADA guidelines should inform me
at the beginning of the semester of any special accommodations or
equipment needs necessary to complete the requirements for this course.
Students must register documentation with the Office of Disability Services
and/or Academic Support Center.
If you have questions, call Student Development at extension 7800.