CS140 -- Labs


  1. Lab Assignments
  2. Lab Submission Info
  3. Lab Grading
  4. How to Get Lab Help
  5. General Stuff
  6. Lab Attendance
  7. Late Labs
  8. Plagiarism Policy
  9. Commenting and Program Style

Lab Assignments

The dates in the following table are tentative. They could change depending on the pace at which material gets presented in the course. Your lab score will be determined as follows:

  1. Labs 0 and 0.5 are worth 50 points each.
  2. Labs 1-4 and 6-10 are worth 100 points each. Lab 5 is worth 200 points.
  3. The total of these labs is 1200 points. Your lab score will be determined as:
          lab percentage = lab score / 1100 * 100
        
    You can see that in effect one lab is an extra credit lab. Alternatively, if something comes up, such as an illness, something at work, the need to attend a conference, multiple exams in one week, etc., you do not have to submit a lab.
  4. Because I have built in a one lab cushion, please do not ask for any extensions. The answer will be no.

Date Lab Due In Lab Activity Top Coder Problem
8/22 Lab 0 - Learning Unix 6:00 AM, Monday, Aug. 27 Learning Unix ---
8/29 Lab 1 - Checkerboard & Moonglow 6:00 AM, Wed, Sept 5 Debugging With Print Statements Lab 0.5 - Counting Gold: The warm-up lab --Due : 6:00 AM, Saturday, Sept. 1--Hard deadline--No late labs accepted
9/5 Lab 2 - Fun with PGM files Due 6:00 AM, Wed, Sept 12 gdb SRM 350, D2, 250-Pointer (DistanceBetweenStrings) help file
9/12 Lab 3 - More fun with PGM files
  1. Partial Submission: Due 6:00 AM, Wed Sept 19 See lab write-up for which methods are due and which test cases must work for the partial submission. Hard submission deadline for the partial submission--no late partial submissions accepted.
  2. Complete Lab: Due 6:00 AM, Mon Sept 24
--- 1) SRM 587, D2, 250-Pointer (InsertZ): Hints
2) SRM 605, D2, 250-Pointer (AlienAndPassword): Hints
9/19 Lab 3 - More fun with PGM files - Continued
  1. Partial submission was due earlier today.
  2. Complete Lab: Due 6:00 AM, Mon Sept 24
Classes Problets. When the app comes up, select "classes" from the menu. A couple of the screens take a long time (e.g., 15 seconds) to load, so be patient. You are first given a short trial run that may not be class-related so that you get used to using problets. Then you are taken to the classes app. SRM 607, D2, 250-Pointer (BoundingBox): Hints
9/26 Lab 4 - Hash tables with open addressing Due 06:00:00 AM, Wednesday, Oct 3 Midterm 1 Coding Problems --- ---
10/3 Lab 5 - Bit Matrices
  1. All methods in Bitmatrix and BM_Hash: Due 6:00 AM, Wed, Oct 10 (Hard deadline--no late submissions for the partial submission)
  2. Sum, Product, Sub_Matrix, and Inverse: Due 6:00 AM, Wed, Oct 17
Pointer Problets. When the app comes up, select "pointer" from the menu. A couple of the screens take a long time (e.g., 15 seconds) to load, so be patient. SRM 583, D2, 250-Pointer (SwappingDigits): Hints
10/10 Lab 5 - Bit Matrices Partial submission deadline is past. Complete lab due 6:00 AM, Wed, Oct 17 gdb with pointers SRM 297, D2, 250-Pointer (PackingParts): Hints
10/17 Lab 6 - Candy Crush Due 6:00 AM, Wed. Oct. 24 gdb with linked lists SRM 610, D2, 250-Pointer (DivideByZero) Hints
10/24 Lab 7- A server to process codes
  1. Partial Submission: Due 6:00 AM, Saturday, 11/3. See lab write-up for which methods are due and which test cases must work for the partial submission. (Hard deadline--no late submissions for the partial submission)
  2. Complete Lab: Due 6:00 AM, Wed, Nov 7
--- SRM 499, D1, 250-Pointer (ColorfulRabbits) Hints
10/31 Lab 7- A server to process codes
  1. Partial Submission: Due 6:00 AM, Saturday, 11/3. See lab write-up for which methods are due and which test cases must work for the partial submission. (Hard deadline--no late submissions for the partial submission)
  2. Complete Lab: Due 6:00 AM, Wed, Nov 7
Midterm 2 Coding Problems ---
11/7 Lab 8 - Linked Lists Due 6:00 AM, Wed, Nov 14 --- 1) SRM 467, D2, 250-Pointer (SuperSum) : You should be able to implement calculate() as a recursive method directly from the definition, even though it is super-inefficient.
2) SRM 596, D1, 250-Pointer (IncrementAndDoubling): Hints. Use recursion to solve this one. There are multiple recursive ways to solve this problem. The hints give one way.
11/14 Lab 9 - Recursion (Shape Shifter!!) Due 6:00 AM, Wednesday, Nov 21 --- SRM 679, D1, 250-Pointer (FiringEmployees): Hints.
11/21 LabA (Lab 10)- Binary Search Trees
  1. Partial Submission Due 6:00 AM, Sat. Dec. 1--Insert, Height, Depth, Preorder, and Postorder (test cases 1-30) (Hard deadline--no late submissions for the partial submission)
  2. Complete Lab Due 6:00 AM, Wed. Dec. 5
--- SRM 480, D2, 500-Pointer (InternetSecurity) Hints
11/28 LabA (Lab 10)- Binary Search Trees Partial submission due 6AM, Sat. Dec. 1. Complete lab due 6:00 AM, Wed, Dec. 5. Both deadlines are hard deadlines. No late submissions will be accepted Final Coding Problems ---


Lab Submission Info

You will submit your code using Canvas. Your lab submission should always be a single tar file containing all of the files you were asked to submit for that lab.


Lab Grading

Your lab grade will be determined as follows:


How to Get Lab Help

There are three ways to get lab help:

  1. Visit me during my office hours or make an appointment.
  2. Visit the TAs in the programming clinic during their office hours. See the TA web page for their office hours.
  3. Post a question to Piazza. This is the best way to get help during non-office hours, and during the evening and the weekends. Please do not post code publicly to Piazza. If you have a query about code, please make it a private post to me and the TAs. When you make a private query about code, please post all of your code, not just a code snippet. It is usually impossible to debug a program from a code snippet since it is almost always the case that the bug occurred somewhere else in the program and is only manifesting itself in that snippet of code.

Please remember that both the TAs and I have obligations outside this class, and do not expect immediate answers to your Piazza questions. We will do our best to monitor Piazza and answer questions as expeditiously as possible. On evenings and weekends you may well be on your own but everyone in the class is strongly encouraged to answer Piazza questions. When it comes time to adjust borderline grades, I will look favorably on those of you who have actively answered questions on Piazza.


General Stuff


Lab Attendance

Lab attendance is mandatory for the entire time of the lab. Each lab has either an in-class lab or a number of top coder questions for you to complete. If you complete the top coder questions, then you should start on the current week's lab assignment. If you have a time conflict throughout the semester (e.g., a class conflict) that does not allow you to attend the entire lab period please get an excused absence from me.


Late Labs

You can submit your lab up until 3 days after the due date but 10 points per day will be deducted from your final score. As I indicated earlier, please do not ask for extensions. If you plan your time well, you should have the lab pretty much complete before the last day. If you put off the lab to the last minute and then something comes up, such as an illness, then you will need to submit the lab late. Also, please give yourself several minutes before the 6:00AM deadline to submit to Blackboard. If you try to submit at 06:00AMm and for some reason it does not submit properly, you will lose 10 points for lateness.


Plagiarism Policy

You must write your labs alone. Obviously, you may talk about your labs with the TA's and with other students, but ultimately you must write your own code. Otherwise, it is plagiarism.

A few notes:


Commenting and Program Style

In the real world your program will not be a one-and-done affair like it is in this course. Instead other people may have to maintain it after you have moved on to other projects. You therefore want to always strive to make your code as readable and well-organized as possible. Here are the thoughts of a number of people on writing clean code. I expect you to read each of their opinions, especially mine! The grading of your code will be based on a composite of these three pieces. Please note that non-meaningful variable names, especially one letter names, are a special pet peeve of mine and you will lose points for using such names.

  1. Writing Nice Code by Prof. Ian Horswill, Northwestern University and Prof Lynne Parker, Univ. of Tennessee.
  2. Commenting Your Code by Prof. James Plank, University of Tennessee.
  3. Writing Clean Code by Prof. Brad Vander Zanden, University of Tennessee.