CS 303e
Assignments



All your programming assignments will be posted here. Look for requirements that apply to all assignments below.

Assignment Due Date Topic
Project 1 1/25 at 11 pm Learning how to use the course software
Project 2
2/1 at 11 pm
Practice with arithmetic operations, user input, and printing
Project 3
2/9 at 11 pm
User Input, Output Formatting, Arithmetic Operations, Explicit Casts, Decisions
Project 4
2/16 at 11 pm
User input, conditional statements, loops
Project 5
3/1 at 11 pm
User input, functions, parameters
Project 6
3/20 at 11 pm
User input, loops, string processing
Project 7
3/29 at 11 pm
Functions, output formatting
Project 8
4/17 at 11 pm
functions, string processing
Project 9
4/26 at 11 pm
file processing, lists


CS 303e - Programming Assignment Requirements

Unless stated otherwise in the project description, programming projects must be done individually.

Note about cheating on programming assignments: Cheating on projects is an issue in CS 303e. We have discussed in class the plagiarism detection software that is used in this, and most, classes in the UTCS department. Most of you reading this do not cheat on projects, and it is important for your instructors to detect cheating and carry out penalties in order for you to be graded fairly in your classes. Keep in mind that MOSS (Measure of Software Similarity) is impervious to common ways of disguising code copying. It ignores differences in variable and method names, re-arrangment of code, shuffling blocks (like conditional blocks, for example), changes in spacing and comments. I suggest an experiment: get a Moss account (http://theory.stanford.edu/~aiken/moss/), take one of your class projects, and do everything you can to modify it so that it looks different from the original to anyone who might read it. Then: submit both programs to MOSS. This is what we do with every project you submit in this class.

Some projects may be completed with a partner. If you choose to work with a partner on these pair projects, you must follow the pair programming rules.  Each pair will turn in one project solution. Once you choose a partner for a project, you are not allowed to switch partners. If you decide that you cannot complete the project as a pair, you must notify your TA, and each student must complete the project individually. You may not switch to a different partner. When you are working on a pair project, at least 80% of your time on the project must be spent in the lab with your partner, and you must take turns sitting at the keyboard and typing.


No lab assignment may be turned in more than 3 days late. If the project is due at 11 pm on Thursday, it cannot be submitted after 11 pm on Sunday. You will have 4 slip/late days in 1 day units (i.e., 1 minute to 24 hours late = 1 slip day, etc.) for the projects, but you are not allowed to use slip days on the first or last assignment. You may divide the 4 slip days across the remaining projects however you like, subject to the 4 day total maximum and the 3 day maximum per project. Add the following to the header in your .py files:

Pair Name 1: Slip days used for this project: ____  Slip days used (total): ____
Pair Name 2: Slip days used for this project: ____  Slip days used (total): ____


Assignments will usually consist of a single Python file. The assignment descriptions will specify which files should be submitted. Assignments that are not in the correct format or are not named correctly will receive no credit. Assignments must be turned in via the microlab turnin program.

Programming assignments will be graded by class staff within one week of the due date. Within one week, your program grade will be posted on egradebook, and you will have a feedback file returned to you via the turnin program.

An assignment that does not compile receives no credit. A program that produces a runtime error loses all points allotted to program correctness.

Most assignments are worth 20 points. Programs are graded on correctness, design, clarity, and efficiency.

As discussed in the class syllabus, programming assignments will be checked for plagiarism and copying using Moss. Sharing code or algorithms with another student or obtaining assignment solutions from any source is cheating. The penalty for cheating is an F in the course and a referral to the Dean of Students office.

More on Academic Honesty - taken from the CS department Code of Conduct.

"The University and the Department are committed to preserving the reputation of your degree. It means a lot to you. In order to guarantee that every degree means what it says it means, we must enforce a strict policy that guarantees that the work that you turn in is your own and that the grades you receive measure your personal achievements in your classes:

Every piece of work that you turn in with your name on it must be yours and yours alone unless explicitly allowed by an instructor in a particular class. Specifically, unless otherwise authorized by an instructor:

If you are taking the course a second time, you are allowed to submit a previous solution that you authored unless that program was involved in a case of academic misconduct.  For any assignment where academic misconduct was found (whether the case was settled formally or informally), you have to write a new version of the program.

You are responsible for complying with this policy in two ways:

  1. You must not turn in work that is not yours, except as expressly permitted by the instructor of each course.
  2. You must not enable someone else to turn in work that is not theirs. Do not share your work with anyone else. Make sure that you adequately protect all your files. Even after you have finished a class, do not share your work or published answers with the students who come after you. They need to do their work on their own.

The penalty for academic dishonesty will be a course grade of F and a referral of the case to the Dean of Students. Further penalties, including suspension or expulsion from the university may be imposed by that office.

One final word: This policy is not intended to discourage students from learning from each other, nor is it unmindful of the fact that most significant work in computer science and in the computing industry is done by teams of people working together. But, because of our need to assign individual grades, we are forced to impose an otherwise artificial requirement for individual work. In some classes, it is possible to allow and even encourage collaboration in ways that do not interfere with the instructor's ability to assign grades. In these cases, your instructor will make clear to you exactly what kinds of collaboration are allowed for that class."

For CS303e the policy on collaboration is modified as follows: You are encouraged to study for tests together, to discuss high-level approaches for solving the assignments, to help each other in using the software, and to discuss methods for debugging code. Essentially if you talk about an assignment with any one else you are okay, but the moment you start looking at someone else's source code or showing someone else your source code you have crossed the line into inappropriate collaboration. You should not ask anyone to give you a copy of their code or give your code to another student. Similarly, you should not discuss your algorithmic strategies to such an extent that you and your collaborators end up turning in exactly the same code. Discuss high level approaches, but do the coding on your own. The exceptions to this are:

  1. You may use any code you develop with the instructor, TAs, or proctors.
  2. You may share additional test cases and expected results of test cases.

You are also allowed to post short segments of code (<= 3 lines) of code that are giving you syntax errors to the class listserv in order to get help on fixing the syntax error.

Plagiarism detection software will be used on all assignments to find students who have copied code from one another. 

For more information on Scholastic Dishonesty see the University Policy on Scholastic Dishonesty