CSE 143, Summer 2022 ERROR: Your web browser does not have JavaScript enabled. This web site requires JavaScript to function properly. If you are using an add-on such as NoScript or Ad-Block, you may need to add an exception for this web site. CSE 143: Computer Programming II, Summer 2022 Instructor: Taylor Ka (taylorka@cs.washington.edu) CSE 143 Main Page Syllabus Coursework Calendar Homework Exams Textbook Java Software jGRASP Tutorial Getting Help Course Staff Office Hours Message Board Practice-It! Wellness Check Grades Canvas Regrade Policy Other Links General Style Deductions Students in CSE143 are expected to demonstrate good programming style in their homework solutions. Every homework assignment will describe specific style requirements and expectations that students should keep in mind when writing their solutions. This page lists general style issues that are likely to be relevant to multiple assignments. This list includes common style mistakes but does not list every possible style mistake. TAs provide feedback on graded homework assignments and often give a "-0" warning to indicate a style issue that is not being penalized but might be in a future assignment. The list below indicates general style issues that will not be graded as "-0". Homework assignments are listed in reverse order because once a style issue is included for one homework, it is included for all future homeworks. The list is not meant to be exhaustive, although it includes the most common style issues. Homework 1: LetterInventory commenting errors: class header missing or doesn't describe both student and program method header missing or does not document pre and post-conditions method header does not describe exceptions that are thrown when preconditions are violated, including the specific type of exception and the conditions under which it is thrown method header does not document important behavior including subtle cases like an empty structure or a search value not found blind copying of text from assignment writeup readability errors: bad indentation some method or constructor does not have a blank line before it control structure errors: bad Boolean Zen data structure errors: extra data structures that aren't necessary bad usage of arrays (e.g., funky/incorrect indexing/usage) class design errors: extraneous data fields initializing non-final data fields outside of a constructor non-private data fields miscellaneous errors: using a specific numerical value when the value can be obtained in a more general way (e.g., even if an array called data is expected to be of length 100, code to manipulate it after construction should use data.length instead of 100) note: "e.g." should be read as "for example" and "i.e." should be read as "in other words" In general, once a class has been discussed, it is available for use by students. For example, the String class and the Arrays class were covered in the CSE142 course, so it is reasonable to assume that you can use methods from those classes without asking permission. Student should realize, however, that saying that you are not forbidden from using a certain construct is not the same thing as saying that it is a good idea to use a certain construct. We don't give advice to students about which constructs to use. You have to use your best judgement to decide and you might lose style points if you make a poor choice. In addition, there are some constructs that you are not allowed to use, as described in the next paragraph. Java has grown to be a complex language with many features. We don't have time to teach all of these features in CSE143. We have a general rule that students should not use "advanced" material that we have not covered in class. In addition, we have identified several Java features that we do not want students to use. It is not bad style to use these features, but we want to have a level playing field for all students. For any one of these features, we prefer that either everyone in the class knows about it and can use it or nobody is allowed to use it. The following features should not be used in CSE143 homework or exam solutions: break or continue return from a void method the System.exit method the switch statement try/catch annotations the var keyword Java 8 functional features (e.g., lambdas, streams, method references) Java 11 features (e.g., local variable type inference, String methods like repeat(n)) the toCharArray, join, and matches methods of String the StringBuilder, StringBuffer, StringJoiner, StringTokenizer classes the methods Arrays.fill, Arrays.asList, Arrays.copyOf, Arrays.copyOfRange, and Arrays.sort the toArray and clone methods of ArrayList the methods Collections.copy and Collections.sort package declarations System.console LinkedHashMap Many students find themselves wondering, "What is that feature you are describing?" If you don't recognize it, then you're unlikely to use it, so the best answer is, "Something that we have decided not to teach you in this class so that we will be able to focus on the really important concepts you need to learn."