Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
CS 2112/ENGRD 2112 Fall 2021 SEARCH: more options CS 2112 Fall 2021 Object-Oriented Design and Data Structures (Honors) Overview Info Schedule Assignments CMSX Ed Resources Java Java SE 11 java.base javafx.base javafx.fxml Java Language Spec JUnit 5 CS 2110 Java HyperText Announcements This website is under construction and much information has not been updated for 2021. Each student in this course is expected to abide by the Cornell University Code of Academic Integrity. Any work submitted by a student in this course for academic credit must be the student’s own work. Overview CS 2112/ENGRD 2112 is an honors version of CS 2110/ENGRD 2110. Credit is given for only one of 2110 and 2112. Transfer between 2110 and 2112 (in either direction) is encouraged during the first three weeks. We cover intermediate software design and introduce some key computer science ideas. The topics are similar to those in 2110 but are covered in greater depth with more challenging assignments. Topics include object-oriented programming, program structure and organization, program reasoning using specifications and invariants, recursion, design patterns, concurrent programming, graphical user interfaces, data structures, sorting and graph algorithms, asymptotic complexity, and simple algorithm analysis. Java is the principal programming language. Course Information Time & Place Lecture: Tuesdays and Thursdays, 10:10-11:00am, Gates Hall G01 Labs: Mondays 7:30-8:20pm, Hollister Hall 110 or Wednesdays 7:30-8:20pm, Hollister Hall 110 Discussions: Tuesdays 12:25-1:15pm, Schwartz Ctr- Perform Arts B21 or Wednesdays 1:30-2:20pm, Hollister Hall 366 You are expected to attend all lectures, one lab, and one discussion each week. Cornell guidelines related to health must be followed. Course Staff Placeholder for staff Prerequisites Very good performance in CS 1110 or an equivalent course, or permission of the instructor. If you are unsure whether CS 2110 or CS 2112 is the right course for you, please talk to the instructor of either course. Both courses cover similar material and satisfy the same requirements, but CS 2112 covers material in more depth and has more challenging assignments. It is aimed at computer science majors. Texts You are required to read the course notes posted on the web site. These will often contain more detail than what was presented in lecture. There is a recommended textbook, which is also the textbook for CS 2110. It is useful especially for examples of how to implement various data structures. • Data Structures and Abstractions with Java, 4th edition, Frank M. Carrano and Timothy Henry, Pearson Education, 2014. ISBN-10: 0133744051, ISBN-13: 9780133744057. See also the companion website for additional material. Other Sources • Data Structures and Problem Solving Using Java, 3rd edition, Mark Allen Weiss, Addison Wesley, 2006. ISBN 0-321-32213-4. See also Weiss's website for additional material. A required text from previous years. • Program development in Java: Abstraction, Specification, and Object-Oriented Design, B. Liskov and J. Guttag, Addison-Wesley, 2000. ISBN 0-201-65768-6. An excellent source of material on designing and specifying abstractions. • Java Precisely, 2nd edition, P. Sestoft, MIT Press, 2005. To access the entire book for free, login via the Cornell Engineering Library. • Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides, Addison Wesley, 1994. ISBN 0-201-63361-2. An extremely influential book on software engineering. According to Wikipedia, as of April 2007, the book was in its 36th printing and has sold over 500,000 copies in English and 13 other languages. • Java in a Nutshell, 5th edition, David Flanagan, O'Reilly, 2005. ISBN 0-596-00773-6. • Effective Java, 3rd Ed., Joshua Bloch. Addison-Wesley, 2018. This book is packed with good programming advice and even agrees with what we will cover in class (mostly). These titles are on reserve in the Engineering library, Carpenter Hall. The CS 2110 Java HyperText has many online learning aids and tutorial videos, including introductory videos on Java and Eclipse. Ed We will be using Ed as an online discussion forum. You are encouraged to post any questions you might have about the course material. The course staff monitor the forum fairly closely and you will usually get a quick response. If you know the answer to a question, you are encouraged to post it, but please avoid giving away any hints on the homework or posting any part of a solution—this is considered a violation of academic integrity. By default, your posts are visible to the course staff and other students, and you should prefer this mode so that others can benefit from your question and the answer. However, you can post privately so that only the course staff can see your question, and you should do so if your post might reveal information about a solution to a homework problem. If you post privately, we reserve the right to make your post public if we think the class will benefit. You can also post anonymously if you wish not to reveal your identity. The discussion forum is the most effective way to communicate with the staff and is the preferred mode of interaction. Please reserve email for urgent or confidential matters. Free-ranging technical discussions are especially encouraged. Broadcast messages from the course staff to students will be sent using Ed and all course announcements will be posted there, so check in often. CMSX We will be using the course management system CMSX for managing assignments, exams, and grades. Everyone who preregistered for the course should be entered, but if you did not preregister, you are probably missing. Please login here and check whether you exist. There will be a list of courses you are registered for, and CS 2112 should be one of them. If not, please send your full name and Cornell netId to the Administrative Assistant so that you can be registered. You can check your grades, submit homework, and request regrades in CMSX. Please check your grades regularly to make sure we are recording things properly. The system also provides some grading statistics. There is a help page with instructions. Please do not repost course materials released on CMS publicly. These materials are intellectual property and are meant for participants in the course. They are not free to the public. Announcements and Handouts Announcements will be posted to Ed. Homework and exam solutions will be available in CMS. Check frequently for new postings. Assignments & Exams Unless otherwise specified, assignments may be turned in late with a penalty of 10% per day up to 5pm on the day of the first grading session following the due date (Wednesdays this year). Extensions may be granted in case of illness or other acceptable excuse; please contact the course instructor. There will be one 1½-hour evening prelim and a 2½-hour final exam. Please check the schedule page for times and locations. Your final grade will be based on your assignment and exam scores according to the following weights: Participation 2% Assignments 50%    Assignment 1 5%    Assignment 2 6%    Assignment 3 6%    Assignment 4 6%    Assignment 5 7%    Assignment 6 10%    Assignment 7 10% Prelim 20% Final 28% Regrades Graded homework will be available on CMS. Graded exams will be available in the handback room, 216 Gates. Homework regrade requests can be submitted electronically in CMS. Exam regrades should be handwritten and submitted to the course staff. Graded exams will be available in the handback room in Gates 216. Please include a description of the grading error with your regrade request. Academic Integrity Each student in this course is expected to abide by the Cornell University Code of Academic Integrity. Any work submitted by a student in this course for academic credit must be the student’s own work. The utmost level of academic integrity is expected of all students. Under no circumstances may you submit work done with or by someone else under your own name or share detailed proofs or code with anyone else except your partner. However, discussions about general techniques or the requirements of the assignment are permissible. You must cite all sources, including Internet sources. You must acknowledge by name anyone whom you consulted (excluding course staff). You may not give nor receive assistance from anyone else during an exam. You may not give any hints or post any material that might be part of a solution publicly on Ed. If your question necessarily includes such material, post privately. If you are unsure about what is permissible and what is not, please ask. Academic Integrity Resources: • Cornell University Code of Academic Integrity • Computer Science Department Code of Academic Integrity • Explanation of AI Proceedings Special Needs We will provide appropriate accommodation for students with special needs or disabilities. Requests for accommodation are to be made during the first three weeks of the semester and must be accompanied by official documentation. Please register with Student Disability Services in 110 Ho Plaza (Cornell Health Building), Level 5 to document your eligibility. Course Schedule Placeholder for schedule Resources Course notes Java Interactive development environments (IDEs) Programming advice and resources Computer labs Support services Course notes Course notes for individual lectures and recitations can be found on the course schedule. The notes are also available as a single printable document. Java Java is one of the most widely used object-oriented programming languages, and programming skill in the Java language is in high demand. Nevertheless, this is not a course about Java. Java is simply a good vehicle for explaining many of the ideas on data structures, algorithms, and software engineering that will be covered in the course. Most of the ideas you will be exposed to in this course, and the skills you will develop, will transfer to other programming languages. Online Resources • The CS 2110 Java HyperText is a comprehensive collection of online modules introducing Java and Eclipse. • The Java API contains documentation for the extensive Java class library. • The Java Language Specification is helpful if you want to really understand how Java works. • Oracle has an official Java Tutorial. Brushing Up Review the introductory chapters in the textbook and the Java reference books listed on the course info page. For students with C++ experience, check out this Wikipedia page comparing C++ with Java. Java version We will be using the Java 11 Standard Edition (Java SE 11) platform, which consists of the Java Development Kit (JDK) and the Java Runtime Environment (JRE). If you are using an earlier version of Java, please upgrade. To find out which version of the JRE you are running, open a console window (in Windows, right click the Start button and choose Windows PowerShell, and in Mac OS, Applications > Utilities > Terminal) and type java -version at the command prompt: $ java -version java version "11.0.4" 2019-07-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode) This says I have version 11 installed. If you are on a PC running Windows and have never installed a version of the Java Development Kit (JDK) on your machine, you probably don't have it. If you are on a Mac, you probably do. To find out, type javac -version: $ javac -version javac 11.0.4 If you get an error message or the version is earlier than 11, you must (re)install the JDK. We recommend completely uninstalling any prior versions of the JRE or JDK before installing the latest one, to prevent problems later in the semester. Installing the JDK The JDK is already installed in CIT and ACCEL labs. However, installing it own your own machine will greatly facilitate your work. To download the JDK, visit Oracle's Java web site and download and install the appropriate version of the JDK for your platform. Compiling and Running from the Command Line Compiling:  Say your main class is MyProgram and it is contained in the source file MyProgram.java. If it is not in a package, navigate to the folder containing MyProgram.java and type javac MyProgram.java. If it is in a package (say myPackage), the source should be in a folder called myPackage. Navigate to the folder containing myPackage and type javac myPackage/MyProgram.java. Running:  From the same folder you compiled from, type java MyProgram if it is not in a package, and java myPackage.MyProgram if it is. Specifying a Classpath:  Sometimes you may need to inform Java where to find auxiliary classes. You can do this with the -cp option to the java command. Supply a sequence of folders telling Java where to look for classes, separated by : (Mac) or ; (Windows). Local Software Some Java libraries have been developed for use in CS 2110 and CS 2112 assignments. Feel free to use them. EasyIO: Support for easy console input and output, and for scanning input from a file or string (like java.util.Scanner, but more powerful). [ doc | jar | source ] Maybe is a better version of the Option pattern, developed for the CMSX project. The Option pattern is provided by Java in the class java.util.Optional, but Maybe throws a checked exception, which makes it both more foolproof and more efficient. [ doc | jar | source ] cs2110: Various types of queues, including a priority queue supporting in situ adjustment of priorities; a DelimitedStringBuilder similar to one found in OCaml; a module that runs an external script that takes a string on stdin and writes a string to stdout; and a module for easy access to a text resource file. [ doc | jar | source ] IDEs IDE stands for integrated development environment. The use of an IDE is the best way to develop Java programs. IDEs provide many valuable aids such as syntax checking, debugging, and refactoring that can save you a lot of effort. There are many good IDEs. We recommend IntelliJ, but you may use any one that you like, or none at all. IntelliJ is installed in all the labs. Early recitation sections will get you started with IntelliJ if you are not familiar with an IDE. Here are some links: IntelliJ Eclipse DrJava JCreator NetBeans JDeveloper You should follow the 2110 style guide for naming conventions and code format. IntelliJ users can download and install the IntelliJ style template used by the course staff. A legacy Eclipse style template is also available. Programming There are many valuable resources that can help you take your programming skills to the next level. Here are a few links: General Dictionary of Algorithms and Data Structures Dictionary of Computing History of Computers Software Development Methodologies Pair Programming Extreme Programming Debugging Null pointer exceptions List of common syntax errors Another list of common errors Just for Fun Please Don't Learn to Code Teach Yourself Programming in Ten Years Quines (Self-Reproducing Programs) Powers Of Ten Programming Quotes How To Write Unmaintainable Code History of Operator Precedence Software Bugs & Glitches Doom for System Administration The International Obfuscated C Code Contest The Easter Egg Archive OOP Criticism Esoteric Programming Languages Computer Labs CIT Labs Cornell Information Technologies (CIT) runs several computer labs across campus for all members of the Cornell community. The JDK and Eclipse are installed on these machines. Check here for locations and times of operation. ACCEL Lab You can also find the course software in the Academic Computing Center (ACCEL), located in the Engineering Library in Carpenter Hall. Any CS student may register for an account. Support Services Other Support Services PROGRAM DESCRIPTION Registrar's Office General services for the Cornell community. Engineering College Support services for Engineering students. Arts College Support services for Arts students. CIT Services offered by Cornell Information Technologies (CIT), including computer training. Cornell Health The Cornell University Health Service Center. For all health related concerns and counseling services. Learning Styles Not everyone learns the same way. If you are curious about how you learn, check out this collection. Assignments All source code will be available on CMS. Assignment 1 Introduction to Java Assignment 2 Ciphers and Encryption Assignment 3 Data Structures and Text Editing Other resources for programming assignments: Group project specification: Simulating Evolving Artificial Life constants.txt example-critter.txt grammar.txt Design Overview Guidelines (and example design overview) How to lose in CS 2112 ©2021 Cornell University