There are five projects given out during the Academic Term for this course. With the exception of the last project, the projects are due at 22:00 (10:00 P.M.) of the Tuesday immediately following the week with the corresponding laboratory. Projects are submitted through Learn. For the first four projects, when the drop box closes, a late box will open that will be available for two hours until midnight. Late projects will receive a maximum grade of 70%.
Project | Due Date | Weighting | Comments |
---|---|---|---|
1 | Due Tuesday, January 16 at 22:00 (10:00pm). | Linked Lists | |
2 | Due Tuesday, January 30 at 22:00 (10:00pm). | Stacks, Queues, and Deques | |
3 | Due Tuesday, February 13 at 22:00 (10:00pm). | Trees | |
4 | Due Tuesday, March 13 at 22:00 (10:00pm). | Hash Tables | |
5 | Due Tuesday, March 27 at 22:00 (10:00pm). | Graphs |
Each project will be given by a list of requirements and sample test code. The sample test code must be such that passing the sample test code will guarantee a grade of 50 % on the project. That is, it will test that member functions are named correctly and that the basic functionality is present. Students are expected to do their own testing, though testing tools and some minimal tests will be provided.
If you receive a grade less than 70 in Projects 1, 2, 3, and 4, you may meet with the course instructor to determine what is wrong with your project. Assuming you have made significant progress toward a complete submission, if you can determine yourself the problem and come up with a solution, the maximum grade you can get is 70. If you cannot determine the cause of the errors, you may still meet with the course instructor and together you will determine the short-comings of your code. In this case, your maximum grade will vary between 50 and 60, again, depending on your input and your awareness of the issues at hand.
The course instructor will examine all Project 5 submissions that achieve a grade less than 70 to determine if there is merit for a grade up to a maximum of 70.
You may:
Library Header File | Functions and Classes |
---|---|
#include <iostream> | All functions and classes. |
#include <cassert> | assert( predicate ); |
#include <algorithm> | std::min( T, T ); std::max( T, T ); std::swap( T&, T& ); |
#include <cmath> | All functions. |
#include <cfloat> | All constants. |
#include <climits> | All constants. |
All testing will be performed on the Unix server ecelinux and it is a requirement that your submissions compile and run on that machine. Source code which compiles using a Windows IDE but does not compile under g++ will receive a mark of 0.
If you were late for your submission, you can still submit the project two hours after the deadline. You will receive a maximum grade of 50% in the project. Suppose you are an engineer working on a project that has specified deadline with penalties in place if you are late. Is the party contracting with you going to relieve you of your obligations under the contract? In the same way, you should consider these projects your contractual obligations with this course.
The purpose of the projects is to help you learn the course material and to help you begin to implement your own personal library of tools. Many of the subsequent projects will rely on previous ones (for example, you may be asked to specifically use your linked list classes to implement more complex data structures).
The following programming style is required for all projects.
Your name and ID must appear at the top of all files which you have created or modified.
Write clear and understandable code. Improve the clarity of your code by using vertical and horizontal spacing, meaningful variable names, proper indentation and comments.
Precede each function with comments indicating:
You are allowed to add whatever private or public class functions you feel are necessary.
Each project will be submitted as a gzipped tar file through LEARN UWATERLOO. The naming convention for each of the four projects is:
uwuserid_pM.tar.gz
where uwuserid is your UW User ID, M is the project number, and p and tar.gz are in lower-case characters.
For example, a student John Smith with the UW User ID j99smith would submit the third project as j99smith_p3.tar.gz
The commands executed will always be
tar -cvf uwuserid_pM.tar file1.h file2.h etc.h gzip uwuserid_pM.tar
In the first command, file1.h file2.h etc.h represents all header files that you created and that are required to work with your project. If you reuse a previous class, for example, Single_list.h, you must include it in your submission. If you introduce a helper class that was not specified in the project description, you must include it, as well. The output of the gzip command will be a file with the name uwuserid_pM.tar.gz.
If you make a mistake during a submission, you may simply resubmit and the original submission will be overwritten. All other files are ignored, including those with, for example, a capital P instead of a lower-case p. They will not be considered as submissions.
Many students submit the project in the form
You are not allowed to use any standard libraries other than, where indicated iostream.
If you receive a mark of less than 70% in any of the projects, you have the opportunity to meet with the course instructor. You should first determine what went wrong with your submission and try to fix as much as you can. You are welcome at this point to get your friends to help you correct your code. When you meet with the course instructor, you will discuss what went wrong, and discuss strategies for moving forward. Depending on your responses, you can receive a grade of up to 70%.
Instructions for finding and testing the executable from Visual Studio.NET are provided here:
>> cd C:\ECE250\project2\debugwrite the name of the project followed by '<' followed by the name of the data file, e.g., in the same example, write
>> project2 < sl01