Homework Assignments
There will be 5 homework assignments. Homework 0 is smaller and worth fewer points than the other four homeworks. You will have 2-3 weeks to complete each of Homeworks 1-4, so be sure to manage your time effectively. On the weeks no homework assignment due, you will instead be required to post an informal but informative progress status report with sample output images (which may still be buggy) on the Submitty Discussion Forum. The progress post(s) will be worth approximately one quarter of the homework grade (points awarded for effort and progress), so make sure you have plenty of real progress to report. The full homework submission (your code & README.txt) will be submitted to the homework web server via a private git version control repository.
The homework assignments (posted on the Calendar) involve a significant amount of C++ programming. You will submit all of your source code files (ending in .h, .cpp, .m, etc.), your CMakeLists.txt file, and a plaintext README.txt file (using the provided template) -- which includes a preliminary self-grading of the homework. The README.txt will document:
-
completed homework assignment features,
-
any known bugs in your code,
-
any new features or extensions you've added (include instructions for use and test cases or screenshots of sample output as appropriate),
-
how long it took you to complete the assignment, and
-
the extent of your collaboration with other students or outside sources.
Collaboration Policy
We encourage you to discuss the assignments with other students in the class. Please acknowledge your collaborators in your README.txt file. However each student is responsible for implementing the assignment on his/her own. You may assist each other in debugging, but this should absolutely not involve sharing files or "cutting and pasting" code. Likewise, consulting the assignment solutions of students from previous terms is not allowed. You may certainly use the internet as a resource for learning the material, but you may not submit or "borrow from" code found online. Please read the Academic Integrity policy for this course and speak with the instructor if you have any questions.
Compilers
To streamline grading your code must compile and run under gcc/g++ (available for Linux, FreeBSD, Cygwin on Windows, and Mac). If the grader must spend time editing your files in order to compile or run your code, you will receive no more than half credit for the assignment. Please see the instructor in office hours if you need help writing portable code.
We will be using CMake, a cross-platform, open-source make system. The provided homework code will be developed on MaxOS using CMake/g++, but should also work on Linux using CMake/g++, and Windows using CMake/VisualStudio. See these detailed instructions for installing, building, and running the code:
Homework Late Policy
Homework progress posts are due on Thursday nights at 11:59pm on the Submitty Discussion Forum. Progress posts will not be graded if they are submitted late. (Unless accompanied by a written excuse from the Student Experience Office).
Final homework submissions are due on Thursday nights at 11:59pm on Submitty. Submission times will be judged from the timestamp on the web server. You may submit the assignment multiple times; we will only grade your last submission. Each student will be given three days (whole or partial) of grace for late homework assignments. These grace days should be used carefully. Once the late days have been exhausted, late assignments will not be accepted without a written excuse from the Student Experience Office.
Electronic Submission
-
To get started, log in to Submitty, using your RPI RCS username & password to log in (whatever you normally use to get your @rpi.edu email). Select the appropriate assignment.
-
At the top of the page will be the instructions to clone your private repo from Submitty for this assignment. It will be something like:
git clone https://submitty.cs.rpi.edu/git/s21/csci4530/hw0_ifs/MYUSERNAME SPECIFY_TARGET_DIRECTORY
Replace MYUSERNAME and SPECIFY_TARGET_DIRECTORY as appropriate.
This repository will contain the provided files in the provided branch. You should do your work in the `main` branch. We will be grading the work in the `main` branch.
-
Now you're ready to work! Follow the specific assignment instructions for writing, testing, debugging, and commenting your code.
-
When you're ready to submit (or just save & backup your work-in-progress to the Submitty server): Add any new files you've created to the repository, commit the new files and changes to existing files, and then push your commits to Submitty. (Use the Google to learn more about git as needed.)
Make sure to include:
the CMakeLists.txt file (edited appropriately if you added any .cpp files to the project),
all of your .cpp and .h source code files,
your plaintext README.txt file (please fill out the self-assessment grading in the provided template),
(optional) new input test cases and/or screenshots of your program output.
Note: You should not submit the executable or any intermediate compilation files. You should not commit your build subdirectory
-
IMPORTANT! Don't forget to press the "Grade My Repository" button on Submitty.
Pushing your commits to the Submitty git server does not trigger automated compilation, automated testing, and automated grading. Furthermore, your files will not be viewed by the TA/Instructor for additional manual grading. To request automated compilation, automated testing, and automated grading, press the "Grade My Repository" button.
Once submission & testing is complete, you will receive confirmation of your submission and a list of all the received files. Make sure each submitted file is prefixed by the "src/" directory name. Review the results of the automated testing.
If you find a mistake in your homework, you can fix it and re-submit using the same procedure. We will only grade the most recent submission. Please ask the instructor if you need help preparing your assignment for submission.