Fall Quarter 2016
ECS175 Project Guideline
Important!!
The projects in this class will be graded using CSIF machine, please make sure your program compiles and runs as expected on CSIF computer before submitting. Programs that do not compile or run on CSIF machine will receive no credit (in other words, you will lose all points on ¡°correctness 40%¡±, ¡°completeness 40%¡± and ¡°UI 15%¡±). Also, please provide a detail readme file documenting how to compile and use your program.
To maximize your grade, you should follow 1.the project prompt along with 2.this guideline and 3.the information sheet for each project (will be published closer to project due date) when programming and submitting your projects. For more information, please refer to following sections.
Source Code
Please comment your source code, this will allow us to understand your program better and how you implement the algorithm. This will also enable us to give partial credit if your result appears incorrect (refer to Grading section). Your source code should be all files that you wrote to complete the project requirements as well as any extra libraries that you downloaded to assist you (ex. a linear algebra library for dot product). Note, you MUST implement the required algorithms specified in the prompt with YOUR OWN CODE to receive credit.
Input/Output File
Depending on the project prompt, your program might need to have the ability to take input from files and/or output (save) the program data to a file. Please specify the input and output file format in the README file. It will also be helpful if you can include at least 1 sample input file with your submission.
Readme File
Each of your submission should include a README (manual) file, it can be a txt or pdf file. Please remember your README file counts for 5% of your project grade. In the README file, you should specify at least:
1. Your name, ID, email
2. How to compile your project, name of executable after compilation
3. How to run your program, command syntax, input/output file format
4. Which lines in which file did you attempt to implement a specific algorithm (i.e. line
15-50 in source1.cpp is for DDA algorithm)
Also, to ensure you get credit for all your work, it will be helpful if you include:
1. Which part of the project you implemented, which part you didn¡¯t
2. Any attempt at extra credit
3. Any other information you felt we should know when running your program (i.e. is
there some weird core dump happening?)
Submission
You will be using ¡°handin¡± to submit your project. First save all the files you want to submit in one folder (ex. proj1) and create an archive (ex. proj1.tar.gz) using:
tar -zcvf proj1.tar.gz proj1/
After that, make sure the archive contains all your project files, including a detailed README. If you¡¯ve referenced outside library, please also make sure you include all necessary files to compile the project. Then, use the following command to submit the file (here assuming you are submitting project 1, for other projects, replace P1 with P2 or P3…)
handin cs175 P1 proj1.tar.gz
You can use ¡°handin cs175 P1¡± to check your submission
You are allowed at most 7 late days for each project. For each late days, 1 point will be deducted from your project grade. No projects will be accepted after the 7th late day, no exceptions.
Compilation
We will compile your project following the instruction in your README file, if there are no compiling instruction in the README file, we will attempt the following.
1. Compile the project with ¡°g++ source.cpp -lglut -lGL¡± if there¡¯s only one source file present.
2. Compile the project with ¡°make¡± if there¡¯s a makefile present.
If above 2 attempts failed, the program will be deemed un-compliable and receive no credit. If your code successfully compiled, we will run your program following the README given.
Grading
If your result appears correctly, we will check your code to make sure you implement the algorithm right, and no prohibited code used. Note, if your result appears correct but the algorithm is implemented incorrectly or you used prohibited code, you will receive LOW credit. If the result appears incorrectly, we will check your code to see how far you implement the algorithm to give partial credit, provided that you comment your code and we can understand your comments.
For each project, an information sheet will be published before the due date regarding specific requirements and it will include a breakdown of the grades as well as extra credit information.
If you have question with your grades, you have up to a week from the day your project scores are released to come talk to us and set up an appointment. At this point, if needed, we can conduct an interactive grading session to go through the specifics of your project. Regrade will not be conducted after a week after the grade is released and the grade will be considered final.
Each project grade will be out of 100 points.
Extra Credit
For each project, there are 2 types of extra credit possible, given at the discretion of the grader.
1. Each project we might establish some criteria and corresponding points value if you¡¯ve met the criteria (usually 5 – 10 points)
2. If you’ve done anything beyond the prompt requirement, please document in README, we’ll assess it and try to give you some extra point (usually around 1 – 5 points)
NOTE: please leave this until completing the required implementation, those part takes up the majority of your grade.
Helpful Resources
You can refer to the following resources when programming your projects:
Getting started on GLUT: http://ogldev.atspace.co.uk
GLUT specification, contains a list of useful GLUT methods: glut-3.spec.pdf on Canvas Interface Options (these are just examples, you don¡¯t have to use them):
Use glCreateMenu
mouse and menu interactions intro
http://www.cs.brandeis.edu/~cs155/OpenGL%20Lecture_04.pdf
menu example
http://www.opengl.org/discussion_boards/showthread.php/170702Creatingasimpleme nuinOpenGLGLUT
NeHe Productions LOTS of examples Keyboard
http://nehe.gamedev.net/tutorial/texture_filters,_lighting_&_keyboard_control/15002/
loading from file
http://nehe.gamedev.net/tutorial/morphing__loading_objects_from_a_file/16003/
External libraries GLUI http://www.cs.unc.edu/~rademach/glui/
Use mouse/keyboard commands to click/drag or hold button and rotate…etc
http://www.zeuscmd.com/tutorials/glut/02KeyboardInput.php
Some possibly useful links to create multiple windows using glut are listed here:
https://www.opengl.org/discussion_boards/showthread.php/140695Multiplewindows withGLUTtutor
http://www.codeproject.com/Articles/20107/GLUTSubwindowTemplate
Academic Integrity
All code submitted must be your own work except you may reference outside library for supportive purposes (i.e. a library for dot product, cross product). These projects are NOT team projects and you should not share code with your classmates. If you¡¯ve used any outside code/library for any purpose, please document it in your README file. If you have any concern regarding which outside code/library you are allow to use, please contact the TAs for clarification. Any suspected academic dishonesty will be referred to SJA.