Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
600.107: Introduction to Programming in Java Syllabus -- Summer 2012 Lectures: Mon-Tue-Thu-Fri 9:30-noon, Shaffer 1 Instructor: Dr. Joanne Selinski Office: New Engineering Building, Room 222, (410)516-4117 E-mail: joanne at cs.jhu.edu Office Hours: Monday, Tuesday and Thursday afternoons (roughly 1:30-3), or by appointment, or just drop in. Catalog Description: This course introduces the fundamental programming concepts and techniques in Java and is intended for all who plan to use computer programming in their studies and careers. Topics covered include control structures, arrays, functions, recursion, dynamic memory allocation, simple data structures, files, and structured program design. Elements of object-oriented design and programming are also introduced. Prerequisite: familiarity with computers. [General] 3 credits Course Web Pages: www.cs.jhu.edu/~joanne/cs107, blackboard.jhu.edu and a Piazza site for Q&A. These are VERY important sources of course information and must be checked regularly!! Required Text: Dean & Dean, "Introduction to Programming with Java: a Problem Solving Approach", McGraw-Hill Higher Education, 2008. Weekly reading and exercises will be assigned from this text. It is available in the JHU bookstore, and from various on-line sources. Supplemental materials will be available on the course webpage. Recommended Reference: Many students like to use a more reference style book when writing programs, and for later coursework in computer science/programming. Here are some popular ones. You can find them for purchase on-line. Be sure to get the most recent editions. The Java language class library documentation is also available on-line and serves as a great reference. D. Flanagan, "Java in a Nutshell", O'Reilly. Deitel & Deitel, "Java How to Program", Prentice-Hall. Arnold, Gosling & Holmes, "The Java Programming Language", Addison-Wesley Professional. Course Outcomes: Upon completion of this course students should: Understand the basic concepts and principles of structured programming. Understand the basic concepts and principles of object-oriented programming. Produce sample test cases, pseudocode or an incremental coding plan for a given programming problem statement. Be able to design, write and test a Java program to implement a working solution to a given problem specification. Understand the operation of common data structures and algorithms. Course Topics: We will cover basic concepts and techniques for programming including algorithms, variables, control structures (decision and looping), text files, method writing, simple class design and usage, and arrays. We will also introduce recursion, sorting and searching, polymorphism, and exceptions (if time permits). We will not cover any GUI material, however you are welcome to read and experiment on your own (just not in your assignments). A more detailed schedule is given below, and may be updated as the course progresses. Grading: Your course grade will be determined by the weighted average of your grades based on the following breakdown. in-class lab exercises & participation 15% weekly programming assignments 25% midterm: Chapters 1-4, 11 & 15 on 7/17 20% final: Chapters 5-10, 12-15, Appendix 6 & 8 on 8/3 40% Each programming assignment will be assigned a point value based on its level of difficulty and anticipated completion time. Your grade will be based not only on correctness, but also on style and good programming techniques. NO CREDIT WILL BE GIVEN FOR PROGRAMS THAT DO NOT COMPILE! NO CREDIT WILL BE GIVEN FOR LATE ASSIGNMENTS! If a program is not working perfectly by the due date, turn it in as is with detailed comments as to which parts are complete, and which are not. (Remember: It must compile!) Include pseudocode (as comments) for incomplete parts. Exceptions for illness will be given only by Dr. Selinski. Exceptions for poor planning or heavy workloads will NOT be given. Letter grades for the course will be subject to my evaluation of your overall class performance. Please keep your own record of your grades so that you will know your standing in the course and can double-check my records. Grades will also be available on Blackboard. Expect to spend roughly 1520 hours per week outside of class on your assignments and reading. Assignment Logistics/Computer Use: All programming assignments must compile with the standard Java compiler. Windows users can get it freely from the Java website. Mac users must get it through Apple. (Links for download are on the main course webpage.) You must use at least the Java 5 version. NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! Although many students prefer to write programs on their own computers, everyone should have access to the Krieger 160 campus computer lab. This lab has machines running some version of the Windows operating system. Do not store your program files on public machines - doing so will be considered a serious violation of the Ethics Code. You are strongly encouraged to use jGRASP (available on those machines, and from free online downloads at www.jgrasp.org) for program development. Assignments will be tested and graded in jGRASP. Assignment submission will be through Blackboard. You must keep a back-up copy of every program you submit. Collaboration: The only group work in this course will be problems solved during lectures, and written (ungraded) homework problems. You must solve your graded programming assignments without consulting other students. For homework help you may only consult the instructor, the teaching and course assistants, or tutors. You must abide by the Computer Science Academic Integrity Code (see below), as well as the University's Ethics Code. Attendance: You are expected to attend and actively participate in all class sessions. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. If you have trouble or need extra help, don't hesitate to contact me! Once you get behind, it is very difficult to catch up, especially during a summer session. Course Schedule: All items in this syllabus are subject to change to correct errors or if there is unanimous agreement that a change is desirable. Day Topic 7/2 & 7/3 Ch 1: Hardware, software, programming overview, course overview. Ch 2: Algorithms & Design 7/5 & 7/6 Ch 3: Variables, arithmetic operators, constants, strings, statements, input and output. Ch 11: More on data types and operators. 7/9 Ch 4: Decision statements (if, if/else, switch), relational operators, boolean expressions. 7/10 & 7/12 Ch 4: Repetition statements (while, do/while, for), nesting. Ch 15: Input and output text files, Buffered Reader input, StringTokenizer. 7/13 Ch 5: Math & Character classes, String & Random classes. Writing static methods in program classes. Appendix 6: Javadoc. 7/16 Ch 6 & 7: Writing instantiable classes, accessors & mutators. 7/17 Midterm on Chapters 1-4, 11 & 15. 7/19 & 7/20 Ch 8: Software engineering, helper methods. Ch 9: Class variables & methods. 7/23 & 7/24 Ch 10: One dimensional arrays of primitives, two dimensional arrays, arrays of objects. 7/26 Ch 10: Array algorithms: sorting & searching, analyzing performance. 7/27 Appendix 8: Recursion. 7/30 & 7/31 Ch 12 & 13: Interfaces, inheritance, OO Design. 8/2 Ch 14: Exception handling. Course wrap-up. 8/3 Final on Chapters 5-10, 12-15, Appendix 6 & 8 Computer Science Academic Integrity Code Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course, permanent transcript notation, suspension, and/or expulsion. Offenses may be reported to medical, law or other professional or graduate schools when a cheater applies. Violations can include cheating on exams, plagiarism, reuse of assignments without permission, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition. Ignorance of these rules is not an excuse. Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at anyone else's solutions (including program code) to your homework problems. However, you may discuss assignment specifications (not solutions) with others to be sure you understand what is required by the assignment. If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated. Falsifying program output or results is prohibited. Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor, TA or CAs, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received. On every exam, you will sign the following pledge: "I agree to complete this exam without unauthorized assistance from any person, materials or device. [Signed and dated]". Your course instructors will let you know where to find copies of old exams, if they are available. For more information, see the guide on "Academic Ethics for Undergraduates" and the Ethics Board web site (http://ethics.jhu.edu).