Programming assignments are primarily an instructional mechanism, not an assessment mechanism. Nonetheless, programming assignments will be graded and, in fact, will be graded strictly. There are two reasons for this. First, the grades will provide you with an assessment of how well you know the material. Second, experience has shown that students do not always make decisions that are in their own best interest, and often do not complete ungraded assignments :)In other words, in this course, programming assignments are designed to: (1) help you learn the materials; (2) help you understand what you have and have not learned; and (3) encourage you to do the work that is necessary for learning to occur. Unambiguously, the best way for you to achieve the second objective is for you to complete programming assignments entirely on your own, occasionally asking questions of a general nature (i.e., about the topics you need to understand in order to complete assignment but not specifics about the assignment itself).
Hence, you may discuss programming assignments with other students who are currently enrolled in your class, but you should limit the amount of collaboration and you should keep a careful record of it (so that you can assess yourself). You must not discuss the programming assignments with students who are not currently enrolled in your course, except for the designated TAs or lab assistants. You also must not discuss programming assignments with tutors of any kind – paid or volunteer, local or remote. Finally, you must not submit (even before the due date/time) another student’s work as your own. In other words, the code you submit must be written/typed entirely by you and you alone. Failure to comply with these policies is a violation of the SU Honor Code.
Though you are entitled to discuss the programming assignments with other people, you must be courteous. Most importantly, students are not required, or even encouraged, to provide assistance. So, if asked, you should feel free to decline such a request and, if asking, you must not take offense if such a request is denied. In addition, neither the instructor(s) nor lab assistant(s) may provide as much assistance as you want. Most frequently, this happens when they think the assistance you have requested will prevent you from learning an important concept. Again, you must not take offense if a request is denied.
A. Students are to work on their HW without consulting with anyone that is not explicitly approved by the instructor. You can always ask for help from TA, grader and the instructor.
B. Students are allowed to discuss the meaning of HW programs or problems together but are expected to work totally independent of anyone that is not explicitly approved by the instructor when working on the solutions to a program or problem and when doing their coding.
C. In some cases, the instructor may distribute a written policy (possibly as a part of their syllabus) that specifies how much cooperation and joint work is permitted on their HW.Policy A is the default policy that will be used unless the instructor specifies otherwise in writing (e.g., in their syllabus or in assignment instructions) indicating that one of the other policies will be followed. Violation of this policy will result in reporting for academic integrity violations. Students are to clarify with their instructors any questions they may have about how much cooperation and joint work is permitted on HW.
Writing a program is in many ways just like any other piece of writing: you want to be clear and to the point, you want the general organization to reflect your intent, and you want to have particular audiences in mind for a particular piece of writing.The programs written for this course will have two distinct audience :)
The first will be made up of the Java compiler (javac) and the Java interpreter (java). These guys are picky on small matters of syntax and semantics, but beyond that they don't care what nonsense you shove at them.
The second audience for your work will be the person grading it, meaning the TAs and the professor. The course staffs typically have a huge stack of assignments to wade through. When he or she picks up another one of these assignments, she wants to quickly ascertain certain things.
Additionally, sometimes, we will use JUnit test classes to asses the correctness of your program. Hence, it is very important that you read the instructions of homework handout very careful and do everything as excatly required by the handout, so your program does not disqualify when it is auto-graded by a script.
Finally, for submitted programs (including labs and homeworks), you need to write your name in the class documentation section of the Java class that you will be writing. If you DO NOT include your name at the top of the java file, few points will be deducted, based on the grading rubric mentioned in the handout.
In general, the above are what anyone looking at another person's code would want to see.
- Administrative details
- Who is this assignment from and what course-section are they in?
If this is a multi-part assignment, is it clear what part of the document at hand handles the particular parts of the assignment?
- Program comments
- Are there enough comments and documentation (including preconditions, postconditions, return-conditions, ...) so that it is clear what each part of the program is intended to do? Is there a general write up for the assignment?
- Program formatting
- Is the code formatted in a way that makes it easy to read and figure out what is going on?
(See the Styleguide for better understanding. Also, various IDEs will handle this for you.)
- Testing and correctness
- If the assignment asks for specific tests, were they done and did they give correct results?
Is the code correct and fully exercised?
If part of the program is not working, is there a note on this in the assignment?If there is no such note, then the grader may assume that you didn't realize something was wrong or are trying to hide the problem.- Quality
- Beyond correctness, is the solution particularly nice or particularly dreadful?
How good is the general presentation?
- Relevancy
- Does the submission include irrelevant junk?
Example. An assignment asks you to modify a particular class and this class makes use of 16 other classes which do not get modified. If you hand in the source code for the modified class and the source code for the 16 unmodified classes, then the latter is irrelevant junk and you will be marked off for including it.
Academic IntegritySyracuse University's academic integrity policy reflects the high value that we, as a university community, place on honesty in academic work. The pilot policy in effect at the College of Engineering and Computer Science defines our expectations for academic honesty and holds students accountable for the integrity of all work they submit. Students should understand that it is their responsibility to learn about course-specific expectations, as well as about university-wide academic integrity expectations. The pilot policy governs appropriate citation and use of sources, the integrity of work submitted in exams and assignments, and the veracity of signatures on attendance sheets and other verification of participation in class activities. The pilot policy also prohibits students from submitting the same work in more than one class without receiving written authorization in advance from both instructors. Under the pilot policy, students found in violation are subject to grade sanctions determined by the course instructor and non-grade sanctions determined by the School or College where the course is offered. SU students are required to read an online summary of the university's academic integrity expectations and provide an electronic signature agreeing to abide by them twice a year during pre-term check-in on MySlice. For more information and the pilot policy, see: academic integrity
The expectations for this course are the same as those given in the pilot policy: you should (1) credit your sources, (2) do your own work, (3) communicate honestly, and (4) support academic integrity.
Finally, review the academic integrity policies for this course here.
Everyone enrolled in the course should already have an SU NetID and password. If you do not already have a NetID (or have forgotten your password), click here and follow the instructions.
Java
Web based IDEs
Gitpod Repl.it How to install
How to install JGrasp (HIGHLY recommended for this course)
Code Editors
Text editors with syntax highlighting and additional features to help you code.
- Atom: Modern minimalist editor with a clean UI.
- emacs Command line editor of hackers who don’t use vim.
- vim: Command line editor of hackers who don’t use emacs. Tutorial
- nano: barebones command-line text editor. Tutorial
Integrated Development Environments (IDEs)
Fully integrated environments for coding and managing software projects.
- DrJava: IDE designed for students.
- jGRASP: A lightweight IDE with visualizations to help with development.
- IDEA IntelliJ: Modern IDE supporting Java and Kotlin out of the box.
- Eclipse: Open source extensible IDE for Java and every other language ever written.
- Netbeans: IDE developed by Oracle, the folks who develop Java.
Command Line
- Lifehacker command line for beginners tutorial
- UNIX for Mac OS X users
- UNIX/Linux tutorial for beginners
Practice Java
Data Structure and Algorithm Animation
- Resources for the text: Open Data Structures by Pat Morin
- Java resources
- The Theoretical Computer Science Cheat Sheet [PDF].
- Data structure and algorithm animations