CPSC 225 Intermediate Programming Spring 2007

CPSC 225 Course Policies

You are expected to be familiar with the course policies stated below. Ignorance of a policy is not an excuse for violating a policy or being surprised when it is applied to you, and will not exempt you from its penalties.


Email/Web Policy

You are expected to regularly check your HWS email, the course web page, and the course wiki. Announcements, assignments, handouts, and other information relevant to the class as a whole will be posted on the course web page. Email will be used in the case of a particularly time-sensitive announcement (e.g. an announcement about a homework which is due in the next class meeting) or for matters which are only relevant to a few people in the class.


Attendance and Participation

You are expected to attend and participate in class and lab. Showing up late will count as an absence. "Participation" means that you are engaged in class - you are not expected to volunteer for everything, but you should contribute to the class in a meaningful way multiple times throughout the semester. Participation also includes participating in the discussion forums on the course wiki; you should contribute at least one substantive comment per week.

Unexcused vs. excused absences: "Unexcused" does not mean "didn't provide an excuse", but rather "didn't provide a sufficiently good reason". Things like being too busy, oversleeping, or leaving early for vacations are not good reasons. Absences due to things such as sports competitions, official Colleges activities such as musical performances or debate competitions, academically-related events such as attending a conference, religious observances, serious illness, or personal or family emergencies are considered excused absences.


Late Policy

The course material is cumulative and it is difficult to catch up if you get very far behind, so make a point of not turning work in late.

Late lab exercises (turned in more than one week after the lab in which they were assigned) will not be accepted.

Wiki contributions (both journal and discussion entries) can be made at any time, but only those made within a week of the event being discussed will count towards the journal or class participation requirement.

Late programming assignments will be penalized 5% if turned in by midnight on the due date and 10% per day thereafter, including weekend days and holidays. Percentages apply to the total points possible on the assignment, not the number of points you earned (i.e. a project worth 100 points will have 20 points deducted for being two days late).

Late exams will only be accepted as outlined in the "Make-Up Policy/Extensions" section below.

End-of-semester SuperDeadline: No work will be accepted after the end of the timeslot in which the final exam is scheduled.

Note that computer labs may not be available at all hours or over college holidays, so be sure to take this into account if you are relying on those facilities. Furthermore, labs tend to get very busy right before deadlines, especially at the end of the semester. "I couldn't get my work done because I couldn't find a computer!" is not a valid excuse.


Make-Up Policy/Extensions

Students are responsible for acquiring any notes, handouts, assignments, and other material missed as the result of an absence, whether excused or unexcused. This should be done promptly to avoid falling behind.

Rescheduling of exams and extensions on assignments will only be allowed in compelling circumstances (e.g. an excused absence on exam day, or a series of excused absences covering a significant portion of time before the due date). In particular, note that leaving early for a vacation is generally not a compelling reason, nor is being busy or having a bunch of assignments due at the same time.

In all cases, arrangements must be made in advance for non-emergencies. Plan ahead! Furthermore, making up a missed exam (when prior arrangements were not made) will only be allowed with documentation from an appropriate person (dean, doctor, etc).


Collaboration Policy

The Principle of Academic Integrity (see the HWS Catalog, p. 29) governs the work completed in this course. The following outlines specifically how this principle applies.

The purpose of exams is to determine what you individually know, and so are to be completed solely by the student whose name is on the paper. The only person you may discuss the exam with is the instructor, and you may use only those materials authorized in the exam instructions.

Labs and programming assignments are intended to be learning experiences. Because it can be very productive to work with one's peers to solve a problem, you may discuss these assignments with other students. (However, be careful not to rely too much on working with others, as you may find yourself at a disadvantage when it comes to exams.)

With labs you are, of course, allowed to fully collaborate with your lab partner - discuss solutions, program together, etc. You only need to hand in one copy of the assignment, and you do not need to acknowledge collaboration with your lab partner (other than to make sure both names are on the handin so that you both can get credit). However, you should make sure that you fully understand the solution and how it was achieved, and should be able to explain this to someone else. If you discuss labs with people other than your lab partner, the rules for programming assignments (below) apply.

Programming assignments are to be primarily the work of the student handing in the solution. You may discuss design ideas, specific C++ syntax, and debugging strategies with other students subject to the following rules:

  • acknowledge in writing who you worked with and in what capacity
  • fully understand any help you receive (you should be able to explain the solution to someone else)
  • write up the results of the discussion independently and in your own words (this helps you ensure that you really do understand the solution)

Note that using any part of someone else's written solution, design, or program as inspiration or a guide as you work on your own solution (even if you rewrite parts) violates the third point, and is not acceptable. Decompiling or reverse-engineering provided code counts as using someone else's solution, and is also prohibited.

You are welcome to use other materials (such as reference books or websites) as technical references or to get a different perspective on a topic when studying the course material or working on programming projects and labs. If these materials are used when working on an assignment, the same rules apply as if you were getting help from another person. (When acknowledging the source, provide a URL or author/title/page reference.) Be careful when using other materials for help on assignments - it is OK to look for examples of concepts, but not to look for solutions to assignments. See "Plagiarism in Programs and on Problem Sets" below for more information.

Journals are meant to be a discussion of your own personal thoughts, and so should be written entirely by you.

Facilitating academic dishonesty by providing unauthorized help or allowing someone to copy your work is also considered a violation of the policy even if you didn't gain anything from the collaboration. This means that giving someone a copy of your solution incurs the same penalty as the person who used your solution.

If you have any questions about what is allowed collaboration, ask before you get into a questionable situation.

There are no exceptions to this policy. Violations will result in a minimum penalty of a 0 on the assignment and may be referred to the Committee on Standards. Ignorance of the policy and desperation ("It was the night before it was due and there wasn't anyone else to ask!") are specifically not excuses for violating the policy. Having to deal with academic dishonesty is time-consuming and annoying, so don't go there!


Plagiarism in Programs and on Problem Sets

As with papers, verbatim copying of programs and problem solutions constitutes plagiarism. Also as with papers, plagiarism is not limited to verbatim copying - copying the significant ideas and structure of someone else's program/problem solution also constitutes plagiarism.

But aren't all programs which solve the same task/solutions to the same problem pretty much the same, so won't my program/solution look like everyone else's even if I worked by myself?
It is true that programming languages are simpler and more structured than human languages like English, and so two independently-written programs solving the same problem will be more similar than two independently-written papers on the same topic. However, "more similar" doesn't mean "the same" - there is still flexibility in many aspects of the program, and each programmer will express themselves somewhat differently. It is clear when two programs were derived from the same source, and I routinely run a plagiarism-detection tool on all handins.
Problem sets are similar - there is enough room for variation in most solutions for it to be clear when solutions were derived from the same source.

Programming/problem solving techniques are often explained via examples - what's the difference between using an example and "copying the significant ideas and structure"?
Nothing - the whole point of examples is to provide the significant ideas and structure of the solution, with the idea that the details would be modified for the particular situation.

OK, then, so I can't use any examples because that constitutes plagiarism?!
No, not exactly. What is and isn't allowed is a matter of degree. Let's first define "example" and "solution":

  • An example illustrates a technical point or problem-solving strategy, applied to a different problem instance than the one you are trying to solve. An example can't be used as-is to solve your specific problem, but can be adapted to address some aspect of the problem. For example, an example demonstrating the proper syntax for a while loop is OK to use when writing a program which involves a while loop (as long as the point of the problem isn't to write exactly the while loop given in the example).
  • A solution gives a significant amount of the answer to your particular problem (or an extremely similar problem). Quantity is relevant here - you may view something as just an example (because it doesn't solve your exact problem), but if a single source covers most of what you need to do, it may well be what I consider a "solution".

Using "examples" (as defined above) is generally OK but using "solutions" is not.

There's a fuzzy middle ground here, and I'm still not sure exactly what is OK and what isn't.
Then ASK! - before you get into whatever situation you are wondering about. A few additional guidelines which may help:

  • Any materials provided as part of the course (examples in the textbook, from class, and directly posted on the webpage) are acceptable to use/adapt (unless specifically forbidden, such as on exams).
  • Any solutions written by another student (either this term or in previous terms) are not acceptable to use as "inspiration" or a guide when you are working on the same assignment. (Looking at someone else's work later, after the assignment has been handed in, is fine.)
  • Use caution with materials from other sources - think "examples, not solutions" and ask if you have any questions. In fact, ask even if you are sure something is allowed. (Specifically looking through other materials to find solutions to problems you've been assigned is not acceptable.)
  • Use common sense - the purpose of assignments is for you to practice and gain understanding of the material, and for you to demonstrate what you have mastered. If you are mostly just tweaking something written by someone else, then that is plagiarism.


Center for Teaching and Learning (CTL)

Hobart and William Smith Colleges encourage you to seek the academic collaboration available to you to demonstrate your best work. Students who would like to enhance their study skills, writing skills, or have any academic inquiries can contact the CTL. If you are a student with an identified disability and you would like to receive accommodations, please provide me with the necessary documentation from the CTL at the start of the semester (students with disabilities have to register at the Center), so that I can best accommodate your needs. CTL staff encourages each of you to stop by Harris Hall to learn what is available to you at this academic resource. Please contact the CTL at 781-3351 to make an appointment or stop by Harris Hall (on South Main, next to Merritt Hall) to meet with Center Staff.


Extra Time on Exams or Other Accommodations

If there's something about the course that would serve you better (e.g. course material in other formats), let me know!

If you need extra time on exams or other accommodations, see the section on CTL above. You must provide me with documentation in advance in order to receive accommodations.


Tutoring/Extra Help

If you have questions or feel that you need extra help with the course material, your first stop should be office hours - just show up during regular office hours, or schedule an appointment if you cannot make those times. You may also request a CTL tutor, but note the following from the CTL Tutoring Guide:

"The CTL tutoring program is designed to supplement academic support services offered by the instructor and teaching assistants of the department in which the course is offered. An integrated approach, with the instructor, teaching assistants, and CTL working together, has been shown to be the most effective way to insure that tutoring is successful. Therefore, a CTL tutor will be assigned only after a student has met regularly with his or her instructor, attended review sessions, and taken advantage of departmental tutoring offered in conjunction with the course. If, at this point, the instructor and student determine that additional help is warranted, the student should contact Sam Vann at The Center for Teaching and Learning to pick up a CTL tutoring form."


Valid HTML 4.01!