COP 3503 (Computer Science 2) Preliminaries

Prerequisites: COP 3223, COP 3502, COP 3330

Essentially, I will assume that you are proficient with standard programming constructs in C and Java. However, we will solely use Java for all class assignments. All coding examples in class will also be in Java. (However I will occasionally use pseudocode to describe some algorithms.) Since I am assuming proficiency in Java, I will NOT teach Java syntax in class, nor will this be taught in recitation. I will assume that if you don't remember a Java construct, you have the ability to look it up in a book or online.

What is cheating?

Sometimes students will work on programming assignments together and not think that it's cheating. To make sure that there is no ambiguity when it comes to cheating, I will describe my definition of cheating as well as what I think is reasonable collaboration on homework and what is not.

All of the following are cheating on programming assignments:

1) Looking at a printout of someone else's code, in any stage of their code development

2) Copying any file that contains another student's code for your own use.

3) Sitting next to another student while working on the same assignment and figuring out each line of a program one by one.

4) Asking a student how they solved a particular problem and then looking at their segment of code that solves the problem in question.

The following are examples of reasonable homework collaboration:

1) Discussing which classes to implement for a program, along with what instance variables may be useful in each class, with another student.

2) After thoroughly testing and debugging your program, if you happen to have one or two simple bugs that you can't see, showing another student your code and asking them if they see the problem. In this situation, the student helping SHOULD NOT show you their solution, but rather just help you find the mistake in yours. This process should be interactive. You should be explaining your code to the student helping you and the two of you working together to find the small bug.

Why I don't like students cheating

1) Although in some disciplines you can learn without too much practice, computer science is NOT one of these. The ONLY way to truly understand an algorithm is to write and implement the algorithm YOURSELF. Only then will you truly understand the subtleties and complexities of the algorithm's implementation.

2) The more cheaters there are that I catch, the more time I have to spend on handling those cheating cases and the less time I have to prepare to teach class. Thus, the class as a whole suffers.

3) When students cheat on a programming assignment, they bypass learning how to debug. Debugging is a very essential tool in computer science, and the process of debugging is essential to ALL types of problem solving, even including how to determine what's wrong with the kitchen sink.

4) Cheating FROM other students is NOT fair to them. They put in a certain amount of work to solve a problem. Cheating is essentially STEALING the end product of that work from them. You get the same reward that they do, without any of the work that they put into it. Although I am not a fan of grades (I'

d be very happy if I didn't have to give grades to students at all), since I am required to give them, I'd like them to be an accurate reflection of the amount of work and proficiency that each of you achieve. Only then are the grades I give meaningful. If there are cheaters, that simply devalues the meaning of everyone's grades.