CS303E Assignments


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

Additionally, you can view the standard grading criteria here.

Due Date Topic
Assignment 1 6/14 Variables, Arithmetic Operators, and Print
Assignment 2 6/21 User Input, Output Formatting, Arithmetic Operations, Explicit Casts, Decisions
Assignment 3 6/30 User Input, For Loops, Output Formatting, Functions
Assignment 4 7/14 String Manipulation, Functions, Decisions, Loops
Assignment 5 7/21 Loops, Functions with Return Values, Algorithm Development, String Processing, Nested Loops
Assignment 6
8/2
Functions, Strings, Lists
Assignment 7
8/11
Lists, File I/O, Loops, String and List Methods, Functions


CS303E: Programming Assignment Requirements

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. Additionally, the assignment must contain the following information in the header or you will receive no credit:

# File: --name of file--
# Description: --a description of your program--
# Assignment Number:
#
# Name: --your name--
# EID: --your eid--
# Course Name: CS 303E
#
# Unique Number: --your section number--
#
# Date created:
# Date last modified:
#
# Slip days used this assignment:
# Total slip days used:


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 assignments. You may divide the 4 slip days across the assignments however you like, subject to the 4 day total.

Most assignments are worth 20 points and are graded on correctness, design, clarity, and efficiency. Programming assignments will be graded by class staff within one week of the due date. Within one week, your program grade will be posted in the gradebook on Blackboard, and you will have a feedback file returned to you via the turnin program.

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

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

There are some projects that 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. Add the following to the header in your .py files:

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



Note about cheating on programming assignments: While most of you reading this would never consider cheating, it is important for your instructors to detect cheating and carry out penalties in order for you to be graded fairly in your classes. As discussed in the class syllabus, programming assignments will be checked for plagiarism and copying using MOSS (Measure of Software Similarity). Keep in mind that MOSS is impervious to common ways of disguising code copying. It ignores differences in variable and method names, re-arrangement 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. It will detect that they are the same.
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 discussion group 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