There are eight weekly assignments plus a pre-assignment, scheduled approximately as follows:
(click for details)
|2||June 3||To be posted.|
|3||June 10||To be posted.|
|4||June 20||To be posted|
|5||July 2||To be posted|
|6||July 8||To be posted|
|7||July 15||To be posted|
|8||July 22||To be posted|
The Practice Assignment
Although the practice assignment (assign0) will not be marked, you should submit it anyway. This is to make sure the system is working with and for you. Even a minor mistake in the submission process can cause your assignment to fail completely.
We will do our best do help students having trouble with the system. If you have trouble handing in assign1 and didn't do assign0 because it wasn't worth any marks we will not be sympathetic.
Assignments are due before 1200 (12:00 noon) on the dates given above (generally Monday).
Late submissions are not accepted except by special permission from either Dennis Peters or Stephen Foote.
Resubmits are permitted on some assignments.
- Resubmits are only for students who submitted the assignment in the first place.
- Resubmits are not accepted from students who didn't submit the assignment in the first place.
- This is not an extended deadline but rather an opportunity to resubmit an assignment on which you did very badly.
- Style will not be marked again. The assignment will simply be run again.
- Resubmits are due at 5:00pm on the day shown in the assignment table above. The queue is open once the resubmit notice is posted. Note that resubmits will cost you one mark, that is your grade will be the better of either your original grade or your original style grade + your resubmit testing grade - 1.
For all assignments, you must submit a file called "
where n is the assignment number. For example, for assignment1, you
must submit a file called
assign1.cpp. Be sure to use exactly the correct file name
(capitalization and spaces matter) since the testing program will not
find it otherwise. This file must contain the following:
- An initial comment block, including the following information:
- the course name and number,
- assignment number,
- assignment due date,
- your name,
- your student number,
- your username (i.e., the login that you use on the computers in EN3000),
- your lab section number,
- a brief description of what the program does,
- any other information that you feel is pertinent.
- The definitions for the key function(s).
- Declarations and definitions for any other functions needed.
Assignments are to be submitted electronically using the
web submit system. Do not submit anything other than the
The behavior of your submitted assignment will be checked by an automated testing program that will not, in general, be made available to you. You are responsible for testing your own program to ensure that it works correctly.
Well written C++ code usually should compile and work the same regardless of the compiler used. However, many compilers differ slightly for various reasons and we cannot make the testing program accommodate all variations. So, in the case of a disagreement, the Eclipse environment with the MinGW toolchain, as available in your lab, will be the final arbitrators. You should always compile and test your program in that environment.
For some of the assignments you will be working with the Pololu 3pi robot and will be exptected to demonstrate to the TAs in the lab that your program works on the robot. More detailed instructions will be given in the assignments.
An essential component of learning to program is writing and debugging your own code, so sharing of assignments or working in groups is NOT permitted unless explicitly authorized. If we detect any instances of copying, they will be treated as plagiarism and dealt with under the university regulations on academic dishonesty. Note that allowing someone else to copy your assignment is treated the same as copying an assignment from someone else. Normally, in the first instance, this will result in a grade of 0 for the assignment.
That said, discussing problems with your friends and classmates can significantly enhance your learning experience, and so it is strongly encouraged.
For some assignments you will be working in pairs. In these cases you are expected to work together on the assignment on a single computer (not divide up the work) and should submit only one assignment copy. Both students will receive the same grade. Pairs will be set up through D2L and you'll use the same pair throughout the course.
Your programming assignments will be graded in two parts, as follows:
- Behavior (7 marks).
- Your program will be tested using a standard set of test cases. You will not be given the test cases in advance, so it is your responsibility to ensure that your program works correctly in all cases.
- Style (3 marks).
- The teaching assistants will evaluate your code for style. Some of the
points they will be looking for are:
- Mnemonic variable and function names.
- Appropriate comment blocks for functions and files.
- Meaningful, balanced comments, which mean neither too little nor too
much. For example, a typical worthless comment would be
x = a + b; // Add a and b
The purpose of comments is to illuminate your code rather than clutter it up.
- Consistent and appropriate indentation.
- Clean, simple structure. Spend time on your structure and get it right- you'll find that in the long run you do less debugging; convoluted code is difficult to get right.
Lab/tutorials are held in your assigned lab. They are designed to help you work on your assignments. As they are fairly brief you are expected to review and make a start on your assignment before going to the lab.
Because of the large no. of students being taught in St. John's, there is a help centre for those sections only. It is held in the lab and is run at various hours during the week. See the engineering undergraduate page for the help centre schedule.