CPS 202—Computer Programming II

2–3:15 TTh, Bareis 310

Fall 2009

Dr. Close

 

GENERAL COURSE INFORMATION

Revised 23-Aug-2009

 

REQUIRED TEXTS:

 

Savitch, Walter.  2010.  Absolute Java.  4th ed.  Boston:  Pearson Education, Inc.  ISBN:  0-136-08382-X.  Companion Web site:  http://www.aw-bc.com/savitch/.  

 

DePasquale, Peter.  2005.  Addison-Wesley's Java Backpack Reference Guide.  Boston:  Addison-Wesley.  ISBN:  0-321-30427-6.

 

MyCodeMate Student Access Kit.  3d ed.  2005.  Boston:  Addison-Wesley.  ISBN: 0-321-35697-7.  Companion Web site:  http://www.mycodemate.com.

 

N. B.  To reduce student costs, all three of the above items are bundled together in the Heidelberg bookstore (bundle ISBN:  0-136-12071-7).  The MyCodeMate Student Access Kit license itself is free when a new textbook is purchased from the Heidelberg bookstore or from the Addison-Wesley Web site.  If you buy separate copies of the Savitch and DePasquale on the Internet, you will need to buy a MyCodeMate Student Access Kit on the Addison-Wesley Web site.  The price is about $40.

 

RECOMMENDED REFERENCES:

 

Arnold, Ken, James Gosling, and David Holmes.  2006.  The Java™ Programming Language.  4th ed.  Upper Saddle River, N.J.:  Addison-Wesley.  ISBN:  0-321-34980-6.

 

Harris, Jay.  2003.  SparkCharts Java.  New York:  Barnes and Noble.  ISBN:  1-58663-916-1.

 

N.B.  Students are responsible for obtaining all hand-outs, assignments, software instructions, and class announcements.  “Required Texts” means exactly that.  If you don’t plan to buy the required books for this course, please drop the course and take something else—you’re wasting your money.

 

 

COURSE MOODLE:  This course requires enrollment in the course Moodle at  http://numu.heidelberg.edu/moodle/course/view.php?id=867.  Enrollment key:  22193.  The Moodle site is based on your Heidelberg e-mail address and you should check your Heidelberg e-mail on a daily basis to obtain important announcements from me, other instructors, and administrators.  Any e-mail communications from me will be made via your Heidelberg e-mail address.  Most hand-outs are available on the course Moodle.

 

 

CATALOG DESCRIPTION:

 

            A continuation of CPS 201.  The development of a disciplined approach to the design, coding, and testing of computer programs.  A study of object-oriented design.  Topics include arrays, strings, pointers, and recursion.  Prerequisite:  CPS 201.  

 

 

COMMENTS ON COURSE CONTENT:

 

            This course is designed to be the third of three introductory courses for Heidelberg’s Computer Science major as well as an important elective in the Computer Information Systems major.  CPS 202 is designed to meet the ACM’s Computing Curricula 2001 for CS1, the introductory model curriculum[1], as well as changes in computer science education that have occurred since the 2001 report.

            All aspects of the problem-solving and programming process will be cov­ered from the perspective of intermediate Java:  problem specification, algorithm design, coding, debugging, testing, and documentation.  The programming per­spective will be that of state-of-the-art principles of software engineering such as top-down design, model-view-controller design, GUIs, information hiding and data abstraction, object privacy, polymorphism and inheritance, dynamic binding, component encapsulation and component interfaces, cloning and deep copies, file I/O and object serialization, generics and templates, recursion, and linked data structures.  Since Java is the programming language of instruction in the prerequisite for this course, intermediate familiarity with Java syntax is assumed.  No mathematics beyond high school algebra is required. 

            This course is a good point to begin building a project portfolio for use in job hunting.  Programming is the coin of the realm in the field of computer science.  Make the best of this course!

 

 

COMPILER and IDE:

 

            The latest versions of Sun’s Java compiler, javac, and the Java bytecode interpreter, java, will be used in this course—currently JDK 6 Update 16.[2]  Our primary IDE (Integrated Development Environment) will be the most recent version of NetBeans (6.7.1 at this time), although students will have an opportunity to use javac and java from the command line.  We will also use the BlueJ 2.5.1 IDE as a support tool for constructing UML class diagrams.

 

COURSE MECHANICS:

 

            To succeed in this course, you must do the homework for each of our meetings.  Computer programming is a skill and must be acquired like any other skill, viz., through constant practice.  If you attempt to limit writing code to two or three times a week, you are very likely to fall behind.  This cannot be overemphasized.

 

Examinations and Quizzes:  There will be a midterm worth 20% of the final grade.  The midterm is tentatively scheduled for October 8.  The final examination is worth 25% of the final grade.  The final examination schedule is established by the College.  Please consult it.  I cannot change the date of your final exam.  There will be two quizzes worth 5% each.  Tentative dates are September 17 and November 24.  Quiz make-ups will not be given except in cases of serious illness, family emergency, or absences excused by University policy.  (Social events and family vacations are not emergencies!)  Make-up procedure:  (1) call my voice mail, at 419-448-2281 (out-of-town:  800-925-9250 ext. 2281), by 12:00 PM of the day you miss lecture; (2) on the day that you return to classes, contact me no later than 12:00 PM to arrange a quiz make-up, should you have missed a quiz.  If you are unsure, please talk to me.  I strive to be rational!

 

Programming Assignments:  There will be between six and ten programming assignments worth a combined total of 35% of the final grade.  Details will be announced in lecture.

 

Code Workshops and Homework Assignments:  In-class coding workshops will be conducted from time to time.  Homework will be assigned regularly, but will not normally be collected.    All in-class code workshops as well as any homework problems collected for a grade will be worth a combined total of 10% of the final grade.  No make-ups or extensions will be given.

 

Attendance:  While attendance per se is not a component of your final grade, regular attendance is absolutely essential to the successful completion of this course.  I expect students to be fully prepared for each lecture.

 

Dead Week:  I observe Dead Week in all of my undergraduate courses.  This means that I do not schedule any quizzes or examinations during the last week of the semester.  It is my view that the last week of classes should be devoted to preparing for one’s remaining lectures and studying for the final examinations.

 

 

PROGRAMMING STYLE:

 

Style conventions and documentation standards will be presented in lecture.  Code which does not conform to the conventions may be returned ungraded.  Your attention to these details reflects the sort of requirements you will typically find in the workplace.  Conventions will be reviewed in lecture.

 

 

ACADEMIC ETHICS POLICY:

 

Definition:  Intellectual honesty is critical to the very life of the scholarly community.  “Academic dishonesty” means cheating of any kind associated with scholarship and study.  It includes, but is not limited to,

 

1.       allowing another student to access your “Drive M” disk space without proper College authorization,

2.       “working together” on individual graded assignments,

3.       theft of intellectual property,

4.       falsification or distortion of data,

5.       submitting another person’s work or work product as your own, including direct copying or paraphrasing of someone else’s work  (plagiarism),

6.       copying on tests or other graded assignments,

7.       copying or mimicking the computer work, or program code or design of another student,

8.       working with another person in any of the above actions.

 

All assignments in this course are individual unless I specifically identify an assignment as a group project.

Penalties:  Evidence of academic dishonesty results in an automatic F for that grade component and may result in an `automatic F for the course, given the severity of the offense (copying another student’s computer program, theft of an examination, gross plagiarism such as submitting a purchased or borrowed term paper as one’s own, etc.).  In any case, a second offense results in an automatic F for the course.  Failure to have read this policy does not excuse or forgive any violations of the policy.  This means in part that “I didn’t know that that was wrong” is not a justification for cheating.

 

To the Person Who Is Tempted to Cheat:  If a student is tempted to cheat, it almost invariably means that he or she is having trouble with the material and mistakenly believes that there is no other choice.  The correct response is to ask me for help with the material.  My goal is to help you learn.  Write me, come see me, or call me at home. 

 

To the Person Who Is Asked to Participate in Cheating:  If you are approached by another student seeking to copy your work or “work together” on an individual graded assignment, you must refuse, just as you would refuse to participate in any other unethical activity.  Since such a person is frequently a friend or close acquaintance, the situation can be very difficult for you.  In such situations, you will have to be blunt.  For example, you can say to the person, “This looks like a dangerous area to me.  I really don’t want to get involved in it.”

 

Nota bene:    The philosopher Bertrand Russell’s ninth commandment for beginning philosophers is useful:  be scrupulously truthful, even when truth is inconvenient.  Dishonesty is bad for the soul and has destroyed many careers.

 

 

CLASS PREPARATION:

 

            The standard rule-of-thumb for undergraduate preparation is three hours outside of class for each hour of lecture.  (This yields a figure of forty-five hours per week for undergraduate preparation, based on five 3-hour courses.) 

            A great portion of this course is skill-based.  Skill acquisition requires practice; brightness alone will not suffice!  The most efficient way to practice is in several shorter practice sessions per week rather than one or two keyboard marathons.

 

 

ELECTRONIC DEVICES IN CLASS:

 

            Short version:  none!  Focus on your studies!  Cellular phones and MP3 players must be turned off and put away out of sight.  Headphones must be put away out of sight.  PDAs, pagers, radios, and similar devices must be turned off and put away out of sight.  Calculators, computers, and voice recorders are prohibited without my written permission.

 

 

ATTENDANCE:

 

            I assign grades strictly on your scholarship (excepting the partially punitive course grade of F for academic dishonesty).  Like most things in life, attendance is your decision.  Please attend.  I like you to attend class!  Note that since many classes will have some graded activity occurring, attendance will be very important.  No absences are excused other than those due to illness, family emergency, or those excused by College policy.  I expect all students to take quizzes and exams at the scheduled times unless there is an emergency.

 

N.B.  College sports events are not emergencies, nor is there any College policy that excuses athletes from completing course requirements because of their choice to participate in intercolle­giate athletics.  Family vacation plans, imprudently purchased airplane tickets, social events, early rides home for the holidays, etc., are not emergencies.

 

 Warning!  If you are scheduling holiday travel now, do not plan a flight/ride prior to your last scheduled final examination.  If you are unsure, please see me.

 

 

GRADING SCALE:

 

            I grade on a 50-pass scale:  50, 62.5, 75, 87.5 are the lower-limit cut-offs for D, C, B, and A, respectively.  Do not mistakenly conclude that my courses are therefore “easier” than those of a professor who uses a 60-pass or 70-pass scale.  Grading scales are all equivalent and are purely a matter of personal taste.  Like Fahrenheit and Celsius, one scale can be easily converted to another with a pencil and a calculator.  What makes a course relatively easy or difficult is determined by the actual distribution of grades by a specific instructor.  A rough, but reliable indicator of grade achievement difficulty is the location of the class mean for a given grade component.  For a normal distribution, we should expect the class mean to fall in the very middle of the C-range of that instructor’s grading scale.

 

 



ACCESS VIA OFFICE HOURS:

Office:  Bareis 335

 

M         1:00 – 2:00, 2:50 – 4:00

T          by appointment only

W         1:00 – 2:00, 2:50 – 4:00

Th        by appointment only

F          1:00 – 2:00, 2:50 – 4:00

 

Office visits by appointment are also available.  This schedule is subject to change.  Check my Web site for the most current version at http://bright.net/~dclose.

 

ACCESS VIA E-MAIL:  dclose@heidelberg.edu

 

ACCESS VIA PHONE:

 

Office phone:  419-448-2281, or 1-800-925-9250 ext. 2281

Home phone:  419-927-2514 (please call before 10 PM)

 


WEB PAGE:

 

          I maintain a home page on the World Wide Web.  This page contains links to the courses that I am currently teaching in a given semester, a link to the Heidelberg College Home Page, and other useful links.

 

http://bright.net/~dclose

 


 

 

 

USEFUL REFERENCES

 

CPS and CIS majors should consider investing in one or more of the following Java text/reference books. 

 

Introductory Level Texts:  These books do not assume any programming experience, but may omit or gloss over some programming topics such as threads and concurrency control, binary file I/O and object serialization, model-view-controller design, generics and templates, clones and deep object equality, GUI programming with Swing, etc.

 

Barnes, David J., and Michael Kölling.  2006.  Objects First with Java:  A Practical Introduction Using BlueJ.  3d ed.  Harlow, England:  Pearson Education Limited.  ISBN 0-13-197629-X.

Dale, Nell, and Chip Weems.  2008.  Programming and Problem Solving with Java.  2d ed.  Sudbury, MA:  Jones and Bartlett Publishers.  ISBN 0-7637-3402-0.

Dean, John, and Raymond Dean.  2008.  Introduction to Programming with Java:  A Problem Solving Approach.  New York:  The McGraw-Hill Companies.  ISBN:  0-07-304702-3.

Guzdial, Mark, and Barbara Ericson.  2007.  Introduction to Computing & Programming with Java:  A Multimedia Approach.  Upper Saddle River, NJ:  Pearson Education, Inc.  ISBN 0-13-149698-0.

Savitch, Walter and Frank M. Carrano.  2008.  Java: An Introduction to Problem Solving & Programming.  5th ed.  Upper Saddle River, NJ:  Pearson Education, Inc.  ISBN 0-13-613088-7.

 

Comprehensive Texts:  These books do not assume any programming experience, but generally include substantial coverage of intermediate and advanced programming topics.

 

Eckel, Bruce.  2003.  Thinking in Java, Revision 4.0.  3d ed.  Upper Saddle River, NJ:  Pearson Prentice-Hall.  Available free online at http://www.faqs.org/docs/think_java/TIJ3_c.htm.  ISBN:  0-13-100287-2.

Liang, Y. Daniel.  2009.  Introduction to Java Programming, Comprehensive Version.  7th ed.  Upper Saddle River, NJ:  Pearson Education, Inc.  ISBN 0-13-208494-5.  Companion Web site:  http://prenhall.com/liang/details2.html.

Savitch, Walter.  2010.  Absolute Java.  4th ed.  Boston:  Pearson Education, Inc.  ISBN:  0-136-08382-X.  Companion Web site:  http://www.aw-bc.com/savitch/.

 

Java Reference Books:

 

Arnold, Ken, James Gosling, and David Holmes.  2006.  The Java™ Programming Language.  4th ed.  Upper Saddle River, N.J.:  Addison-Wesley.  ISBN:  0-321-34980-6.

Bloch, Joshua.  2008.  Effective Java.  2d ed.  Upper Saddle River, N.J.:  Addison-Wesley.  ISBN:  0-321-35668-3.

DePasquale, Peter.  2005.  Addison-Wesley's Java Backpack Reference Guide.  Boston:  Addison-Wesley.  ISBN: 0-321-30427-6.

Flanagan, David.  2004.  Java Examples in a Nutshell.  3d ed.  Sebastopol, CA:  O’Reilly Media, Inc.  ISBN 0-59600-620-9.

Flanagan, David.  2005.  Java in a Nutshell.  5th ed.  Sebastopol, CA:  O’Reilly Media, Inc.  ISBN 0-59600-773-6.

Gosling, James, Bill Joy, Guy Steele, and Gilad Bracha.  2006.  The Java™ Language Specification.  3d ed.  Upper Saddle River, N.J.:  Addison-Wesley.  ISBN:  0-321-24678-0.

 

Java Resources on the Web:

 

·        Fred Swartz' Java Notes (http://www.leepoint.net/notes-java/index.html)

·        Bruce Eckel's free Java textbook, Thinking in Java (http://www.faqs.org/docs/think_java/TIJ3_c.htm)

·        http://www.javaworld.com/

·        http://www.netbeans.org/index.html

·        http://www.cafeaulait.org/

·        JavaRanch Forums (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi)

 

 

 

 

 

 

 

No part of this document or associated Web pages may be reproduced

in any form without permission of the author.

Permission may be obtained by e-mail at dclose@bright.net

Copyright Ó 2009 Daryl Close

All rights reserved



                [1] Joint Task Force on Computing Curricula.  2001.  Computing Curricula 2001:  Computer Science.   IEEE Computer Society, Association for Computing Machinery, 15 December, http://campus.acm.org/public/comments/cc2001.pdf.

                [2] As of May 8, 2007, Sun Microsystems has released its Java compiler, interpreter, and most the Java Class Library as free and open source under the GNU General Public License.