TEACHING ASSISTANT
|
Xi Han
Computer Science PhD Student Email: xihan1@cs.stonybrook.edu Office: NCS 130 Office Hours:
If you are coming, it is highly recommended that you email your TA for at least 12 hours in advance regarding your issue. This offers your TA sufficient time to prepare in advance, so that your concerns could be handled swiftly during the office hours. |
SPECIFICATIONS ON HOMEWORK
-
Language, Library And Build System.
All programming tasks must be completed using
C/C++ and OpenGL.
- You must use GLFW as the designated window toolkit, and GLAD as the loading library. The use of alternative window toolkits or loading libraries is strictly prohibited.
- The designated build system for your program is CMake. It is imperative that your CMakeLists.txt script modifies nothing outside your submission directory. All desired functionalities for submission should be integrated into a single program. The resulting executable must be named hwx, where x represents the homework number (e.g., hw1, hw2, etc.).
- Program templates will be given for all programming parts in our homework; please refer to the "RESOURCES" section at the end of this page. Note that these templates are for your convenience and reference only. Please feel free to start from scratch (i.e., not utilizing these templates.) However, you should still observe the user interface (keyboard and mouse functionalities) as specified in our manuals.
-
Submission.
Please compress your contents into a zip file
sbuid_hwx.zip,
where
sbuid is your 9-digit SBU ID,
x is 1, 2, ...,
and submit via Brightspace.
Note: All names are case sensitive.
Please include:
- A pdf file named hwx.pdf (where x is 1, 2, ...), which consists of your answers to the non-programming questions. This file should be formatted by LaTeX, or converted from other document editors, e.g., Microsoft Word. This file must not contain any handwritten stuff, e.g., photos/scans of figures, tables, graphs, math formula, etc.
-
A README file (in Markdown format) for your program:
- Format requirements: Please follow the program templates;
- You are responsible for resolving any discrepancies between your README and your program. Please ensure that all your implemented features are checked with "x"s in the README Markdown table. Only features that have been checked will be considered for grading.
- Your source code.
Please do not include anything not mentioned above, especially (including but not limited to):- Dependencies. Note that libraries (e.g., GLFW, GLM, etc.) are dependencies and they should not be included directly in your project. As an exception, GLAD should be included in your project as it is designed to be used this way;
- Temporary files (e.g., CLion's cmake-build-debug directory, etc.);
- IDE-specific project files (e.g., CLion/PyCharm's .idea directory, Visual Studio Code's .vscode directory, etc.);
-
Structure Requirements.
After extracting the contents of the zip package,
your submission directory should adhere precisely to the specified structure below.
(Please note that all names are case-sensitive, with exceptions to be detailed later.)
Following the extraction, all your files must be consolidated within a single root directory
named sbuid_hwx.
It is crucial to avoid unzipping them into the parent directory
(i.e., the directory which contains your zip package):
-

- You have the flexibility to include as many headers and source files as needed. The inclusion of foo and bar is just for example and is not enforced. Additionally, you are permitted to create subdirectories to organize your source files. E.g., you could create an etc directory for configuration files and a var directory for temporary files. You could also consider placing your shader files in src/shader/.
-
- Platform. Testing of your submission will be conducted on a VMWare guest OS (ubuntu 20.04.1 amd64 desktop) with OpenGL 4.1 in core-profile mode (modern OpenGL). It is essential to refrain from using deprecated functions in immediate mode (legacy OpenGL). It is your responsibility to ensure that your code compiles and runs on the specified testing platform. To minimize compatibility issues, it is highly recommended that you complete the programming parts within the VMWare VM provided under the "RESOURCES" tab below.
-
Testing.
Your TA may compile and run the release build of your program
in the root of your submission directory, i.e.,
sbuid_hwx,
with the following commands (without the quotes):
"
mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release ..; make; cd ..; ./build/hwx". You will be responsible for any incompatibility with the aforementioned commands, e.g., shader file not exist error due to improperly-coded shader path. -
Penalties. Penalties are given as follows:
- For infractions against the general requirements outlined above, penalties will be imposed based on the specific circumstances;
- Penalties for violations of the same requirement will be doubled for subsequent instances. For example, a deduction of 10% will apply for the first occurrence, increasing to 20% for the second violation, and so forth;
- Late penalties will be administered in accordance with the guidelines established on the main course website.
RESOURCES
-
VMWare Virtual Machine (The Designated Environment for All Programming Parts in Our Homework):
- VMWare Hypervisor Software. First, please download and install VMWare Workstation Pro (for x84-64 platforms) or VMWare Fusion Pro (for ARM platforms, e.g., Apple MacBooks) from Broadcom.
- VM File. Please then download the VMWare VM file from Google Drive. You should be able to open this VM file with the VMWare Hypervisor software. Please note that this VM is of x86-64 architecture and will not boot on ARM platforms. The ARM version is too large to be distributed via Google Drive. Students with ARM devices are encouraged to visit the TA during the Office Hours and have the VM copied in person.
- This VM has all dependencies properly installed. Please simply use the system environment.
- Password for the "student" account is "123456" (without the quotes).
-
Templates for Programming Parts in Our Homework:
- Available on GitHub.
- OpenGL Demo Code: (Please note that, some of these demos have both C/C++ version and Python version. However, for this course, you must program in C/C++. The use of Python is strictly prohibited.)
- Tutorial Slides:
- Archive (From Previous Semesters):