Rules
Communication
- Reach me through my official U.M. email, not through blackboard.
- Always make sure your name appears, and say which class you are in.
Attendance
- This is an in-person class. Attendance is required. Watching by Zoom does not count.
- Attendance will be taken on random dates and will count towards your final grade.
- Arrive on time for the beginning.
Submitting Assignments
- Assignments must be submitted as word documents.
- They must begin with your name and which assignment it is.
- Next include the path, exactly where I can find it in your rabbit account
-
Continuing to work on it? Submit a copy with a name that will remind you not to change it.
- Then any comments or explanations for me.
- If resubmitting after feedback:
-
Remind me of what that feedback is,
- Tell me exactly where and what your changes are
- Include all of your code as plain text, not as screen-shot images.
- Make sure your code is readable, and that I will be able to copy and paste it somewhere if necessary.
- No dark backgrounds.
- No absurdly long lines. A line of code must only occupy one line of your document.
- And don't try to get around that with tricks. No tiny fonts either.
- Good coding practice: consistent proper indentation and spacing is required. Unreadable means ungradeable.
- Include useful thought-about test runs.
- Be sure that your test runs really test all the important features.
- Your test runs should also be plain text, not screen-shot images.
- Except that if you do produce some graphical output, then of course a regular screen-shot is OK.
- Faked test runs will be treated like any other form of cheating: a zero with no resubmissions allowed.
- All assignments are to be submitted through blackboard under Assignments.
- Grades will be posted on blackboard.
Do it yourself
- This is all about learning data structures. You must create them yourself.
- If an assignment is about vectors, you must implement your own vector.
The first assignment is an exception, it explicitly allows #include <vector>.
- Even a regular official C++ library is disallowed.
- Third party software is completely out of the question.
- In this class, you may always #include
<iostream>,
<fstream>,
<sstream>,
<iomanip>,
<string>,
<cctype>,
<cmath>,
<cstdlib>,
<cassert>.
<ctime>.
<cstdarg>.
- First exception: You may not use <vector> except for the first assignment where you must use it.
- Second exception: You may use <sstream> except for the first assignment where you may not.
- If you think I have left something out of that list, tell me. Don't just assume.
- Do not use auto and do not use iterators.
If you don't know what an iterator is, good,
but if you use something you found on the web, make sure it isn't using an iterator.
In the real world those things are OK, in class they are not.
- In particular input and output operations must be done the C++ way, not the C or Unix way.
Profeesional standards
- Programs must be properly laid out clearly readable.
- Don't let your lines get so long that they wrap around.
- Consistent indentation, enough to be clearly visible, is required (2 spaces is enough in a sensible font).
- Vertical layout: make sure separate things are physically separated, structs, functions, large parts, etc.
- Arbitrary blank spaces are not acceptable, they destroy the benefit of the deliberate ones.
- Internal spaces: use enough ordinary space characters to keep things from visually running together.
- Especially do not put your { immediately after the last character of the line. { and } must be easy to see.
- Give important things sensible names that reflect what they do.
- Do not add trivial comments. I do not want to see count++ // add one to count
- Do use comments when you have done something that is not obvious (took you some time to think up maybe)
- Try to keep functions small. If you can't see a whole function at the same time, it is too big.
Lateness
- There will be real deadlines for assignments.
- Assignments are graded out of 10,
For every day (or part of a day) it is late, the maximum grade will be reduced by 1.
- Extensions will only be granted for exceptionally good reasons.
- You are always given plenty of time to complete assignments,
If you don't start until the day it is due, you are asking for trouble.
Where to do your assignments
- You will all have accounts on the Unix server rabbit.eng.miami.edu
- You should do all of your assignments there; it is very important to be familiar with Unix
- If you insist on not following that rule, you must at least upload your work to rabbit,
and make sure it works there. Visual Studio sometimes fails to detect errors.
- When you submit an assignment, you must tell me exactly where to find it in your account.
Collusion and Plagiarism
- All assignments are to be individual effort. There will be no group work.
- When an assignment asks you to do something, you are expected to do it yourself.
- It is not acceptable to find something on the internet or in a book or anything like that.
- It is not even acceptable to find an official library function or class that does the job for you.
- Failure to follow these rules will result in a zero, without the possibility of resubmission.
Final Grades
- 40% of your final grade will come from the assignments,
- 40% of your final grade will come from examinations.
- 10% of your final grade will come class participation.
- 10% of your final grade will come from the attendance records.
- Therefore you will not be able to pass the course if you don't do the assignments.
- There will be two mid-terms and one comprehensive final.
- Most, maybe all, of the final will consist of opportunities to improve your mid-term grades.
The Book
- It is not absolutely required to buy the text-book,
but it is definitely recommended.
- Old versions from amazon and ebay are good enough and can be very cheap.