600.107: Introduction to Programming in Java
Syllabus -- Fall 2008


Lectures: Mon & Wed 3-4:15pm, Shaffer 3

Instructor: Dr. Joanne Houlahan
Office: New Engineering Building, Room 314, (410)516-4117
E-mail: houlahan at cs.jhu.edu

Course Web Pages: webct.jhu.edu and www.cs.jhu.edu/~houlahan/cs107
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 programming language class library documentation is also available on-line and serves as a great reference.

Course Objectives:

Course Topics: I plan to cover basic concepts and techniques for programming, including variables, control structures (decision and looping), text files, method writing, simple class design and usage, and arrays. We will also introduce polymorphism, exceptions and recursion. We will not cover any GUI material, however you are welcome to read and experiment on your own (not in assignments). A more detailed schedule is available below, and may be updated as the course progresses.

Grading: Your final grade will be determined by the weighted average of your grades based on the following breakdown.

weekly programming assignments 25%
test1, Chapters 1-4, 11 & 15 on 10/15, in class25%
test2, Chapters 5-9, Appendix 6 on 12/18, 9am25%
test3, Chapters 10, 12-14 & Appendix 8 on 12/18, 9am25%

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. Houlahan (not by any TA/CAs). 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 WebCT. Expect to spend roughly 5-8 hours per week outside of class on your assignments and reading.

Assignment Logistics/Computer Use: Course assistants will be available in the Krieger 160 campus computer lab to assist you with assignments. This lab has machines running some version of the Windows operating system. You are strongly encouraged to use jGRASP, which relies on the standard JDK, (both available on those machines, and free downloads from the web) for program development. Programs will be graded in jGRASP with the standard JDK. You can download both of these through the links on the main course webpage. Assignment submission will be through WebCT. Printed copies of all program files are also to be turned in during class lectures. You must keep a back-up copy of every program you submit. Do not store your program files on public machines - doing so will be considered a serious violation of the Ethics Code.

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 a course teaching assistant (CA or TA) or me. Please don't wait until you're hopelessly behind.

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
9/8 & 9/10 Ch 1: Hardware, software, programming overview, course overview.
Ch 2: Algorithms & Design
9/15 & 9/17 Ch 3: Variables, arithmetic operators, constants, strings, statements, input and output.
Ch 11: More on data types and operators.
9/22 & 9/24 Ch 4: Decision statements (if, if/else, switch), relational operators, boolean expressions.
9/29 & 10/1 Ch 4: Repetition statements (while, do/while, for), nesting.
Ch 15: Input and output text files, Buffered Reader input, StringTokenizer.
10/6 & 10/8 Ch 5: Math & Character classes, String & Random classes.
Writing static methods. Appendix 6: Javadoc.
10/15 Happy Fall Break Day!
Test 1 on Chapters 1-4, 11 & 15 (wednesday).
10/20 & 10/22 Ch 6 & 7: Writing instantiable classes, accessors & mutators.
Ch 8: Software engineering, helper methods.
Ch 9: Class variables & methods.
10/27 & 10/29 More class writing practice.
Ch 10: One dimensional arrays of primitives, two dimensional arrays.
11/3 & 11/5 Ch 10: arrays of objects, common array operations.
11/10 & 11/12 Ch 10: Array algorithms: sorting & searching, analyzing performance.
11/17 & 11/19 Appendix 8: Recursion.
11/24 (No class on 11/26 - Happy Thanksgiving!)
Ch 12 & 13: Interfaces, inheritance, OO Design.
12/1 & 12/3 Ch 12 & 13: more interfaces, inheritance, OO Design.
Ch 14: Exception handling.
12/8 Course wrap-up.
12/18 Tests 2 & 3 will be taken as one exam during the scheduled final slot.

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).