CS367: Introduction to Data Structures
ASSIGNMENTS - Lecs 1 & 2, Spring 2012

  • Assignments are to be submitted electronically in your handin directory.
  • Accounts are provided on the CS lab computers. See the Computer Labs page for more information.
  • You have one week after a graded assignment is returned to request a re-grade.


There are five programming assignments each worth 5% for a total of 25% of your final grade.


Programs can be done in pairs. You may have one partner for each programming assignment. Your partner must be currently enrolled in either section 1 or 2. You may have different partners on different programming assignments. You may not pair program with multiple partners on the same assignment. You must list your partner as a collaborator in the header comments of your source files (see commenting standards). Only one partner submits the program files, but both partners must submit and hand in the README.txt file. Here is a summary of pair programming.

Note that submitting someone else's work as your own is academic misconduct, which will be dealt with in accordance with University Academic Misconduct procedures.


Late Policy:

Programming assignments may be submitted late, but the following penalty applies:
  • 1 day late:   10% deduction, up to 24 hours late
  • 2 days late: 20% deduction, from 24 to 48 hours late
  • 3 days late: 30% deduction, from 48 to 72 hours late
  • more than 3 days late: no work will be accepted after 72 hours late

One day late is defined as a 24-hour period starting at the time the assignment is due (weekday or weekend). For example, if an assignment is due on a Tuesday at 4:00 PM and it is handed in after 4:00 PM on Tuesday but by 4:00 PM on the next day, a 10% penalty will be deducted.

You are also given three free days that may be used throughout the semester. They are automatically applied to reduce or eliminate a late penalty. Once your three free days are used, no additional free days will be provided. Consider them as insurance to be used in emergencies, such as when you may be unable to complete an assignment on time due to illness.


There are ten homework assignments each worth 2% for a total of 20% of your final grade.


Homework must be done individually. Collaboration on homework assignments is not allowed.


(soln*) means that the solution to the homework assignment has been posted on Learn@UW.

Late Policy:

Homework assignments are not accepted late.

How to Submit Assignments Electronically:

Assignments are turned in electronically so that you can submit your work at your convenience any time prior to the due date, to save paper. The last section on each assignment page lists what to turn in. All assignments are to be submitted as plain text files containing source code for programs or the answers to the homework questions.

Handin Directories:

A directory has been created for you to use to electronically submit your work. This directory is located at:

Where <YOUR_CS_ACCOUNT_NAME> is the login name that was assigned to you to access your computer science account. This is your main "handin" directory in which is found subdirectories (note the capital letters must be used where shown):

  • In location to submit homework and programs,
  • H1 for graded homework 1,
  • H2 for graded homework 2,
  • H3 for graded homework 3,
  • H4 for graded homework 4,
  • H5 for graded homework 5,
  • H6 for graded homework 6,
  • H7 for graded homework 7,
  • H8 for graded homework 8,
  • H9 for graded homework 9,
  • H10 for graded homework 10,
  • P1 for graded program 1,
  • P2 for graded program 2,
  • P3 for graded program 3,
  • P4 for graded program 4,
  • P5 for graded program 5

You will always turn your homework into the In directory.

Steps for Submitting Files:

There are five steps required for submitting your work from the CS lab computers. Assume you are turning in your first homework:

  1. Log into one of the CS lab computers
  2. Open a terminal window (click on the background)
  3. Change to your assignment directory as in this example:
       cd private/cs367/assignments/hw1
    Note: the private directory is already created for you; all other subdirectories (cs367, assignments, and hw1 in this example) would need to be created by you.
  4. Copy your files to your "handin" directory as in this example:
        cp <FILE_NAME> /p/course/cs367-hasti/handin/<YOUR_CS_ACCOUNT_NAME>/In
  5. Verify that your files are in your "handin" directory as in this example:
       ls -l /p/course/cs367-hasti/handin/<YOUR_CS_ACCOUNT_NAME>/In
  6. To double-check that the right files were submitted, you can look at the contents of a file using the less command as in this example:
       less /p/course/cs367-hasti/handin/<YOUR_CS_ACCOUNT_NAME>/In/<FILE_NAME>

Follow the instructions above. Trying to use the file browser to drag and drop your file into your handin directory will result in an error message.

Write permission will be enabled for your In after an assignment is released and disabled after the due date and time passes. You may submit your files multiple times. You may re-submit a file, by overwriting the one already in your handin directory. You do not have permission to delete files from your handin directories, and neither do the course TAs. This ensures that accidental deletion of your work cannot be done. If you want a file(s) removed, email the course instructor specifying your login name and the name(s) of the file(s) you want removed.

For homeworks, after the due date and time, your submission is moved to the corresponding homework subdirectory HN, where N is the particular homework number. For programs, after the due date and time, your submission is moved to the corresponding program subdirectory, for example, P1. Late programs are moved and a note is made indicating the number of days late. You have permission to read from from these handin directories except while we are grading.

You may also submit your work remotely by using a file transfer application, such as the one included with SSH. You'll need to configure this application to connect to one of the CS lab computers. Then you will be able to use it to transfer your files to your handin directory.

Assignment Grading:

Assignments are graded by the course TAs using specified grading standards. After an assignment has been graded, general grading standards for that assignment are posted on Learn@UW. See the grader named in your grade report if you have questions about the grading of your assignments.

Re-Grades Requests:

You may request a re-grade of your assignment, if you believe it wasn't correctly graded. Contact the grader named in the assignment's grade report within one week after the graded assignment is returned.

Assignment Grade Reports

A grade report is generated for each assignment and is named gradeReport.html found in the particular assignments handin subdirectory. For example:

contains the grade report for program 1 for the student whose CS account name is seuss. This is called the full Linux path name for gradeReport.html file. From the lab computers, one way you can see your grade report is by entering in a terminal window:
firefox /p/course/cs367-hasti/handin/seuss/P1/gradeReport.html

Viewing Grade Reports

There are several ways you can look at your reports (in addition to the way given above), depending on where you are:
  • CS Lab: Start Firefox, select File-->Open File..., navigate to the grade file, and select open.
  • Home: Download the grade.html file to your machine (use SCP). Using your web browser select File-->Open File... (or equivalent), navigate to the downloaded grade file, and select open.
  • Either CS Lab or Home: Log into a CS lab computer (from home use SSH). View the contents of the file with the Linux command lynx <filename> where <filename> is the full Linux path name (lynx is a terminal-based browser) .
    (Note: you can use the commands cat <filename> or less <filename> to view any text file. If you use one of these commands with an html file, you will see all of the html tags.)

Summary of Pair Programming:

The following is a summary of successful pair programming taken from a paper by Williams and Kessler:

  • Pair programming involves two people working together at one computer, continuously collaborating on design, coding, and testing. One person types; the other either provides directions ("Now we need to write a new method that does ..., Now we need a loop to do ...") or constantly reviews what the typer is doing, and provides comments.
  • Pair programming has proved successful both in classes and in industry. Programmers usually report having more confidence in their solutions and enjoying programming more when working in pairs.
  • It is important to switch roles often (slide the keyboard back and forth). Because pair programming can be quite intense, it is also a good idea to take breaks (to check e-mail, go for a walk, have a snack).
  • It is important to provide honest but friendly feedback. To be effective, there needs to be some healthy disagreement and debate, but pairs also need to be respectful of each other, and try to avoid becoming defensive when receiving criticism.
  • Inevitably, programmers do some independent thinking/working. For best results, that work should be reviewed by both partners (and perhaps revised) when they start working together again.
  • To be successful, pair programmers must realize that the benefits of working together outweigh their usual preference for working alone, they must confidently share their work, accepting instruction and suggestions for improvement in order to improve their own skills and the code they are writing, and they must accept ownership of their partner's work and thus be willing to constructively express criticism and suggest improvements.
Last Updated: 5/15/2012     ©2012 Beck Hasti