CPS 202—Computer Programming II
2–3:15 TTh, Bareis 310
Fall 2009
Dr. Close
Revised
23-Aug-2009
REQUIRED TEXTS:
Savitch,
Walter. 2010. Absolute Java. 4th ed.
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.
Harris, Jay.
2003. SparkCharts
Java.
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
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
All aspects of the problem-solving and programming
process will be covered from the perspective of intermediate Java: problem specification, algorithm design,
coding, debugging, testing, and documentation.
The programming perspective 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 intercollegiate
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.
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.
Dale,
Nell, and Chip Weems. 2008. Programming and Problem
Solving with Java. 2d
ed.
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.
Savitch,
Walter and Frank M. Carrano. 2008. Java: An Introduction to
Problem Solving & Programming. 5th
ed.
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.
Liang,
Y. Daniel. 2009. Introduction to Java
Programming, Comprehensive Version.
7th ed. Upper Saddle River,
Savitch,
Walter. 2010. Absolute Java. 4th ed.
Java Reference Books:
Arnold,
Ken, James Gosling, and David Holmes.
2006. The Java™
Programming Language. 4th
ed.
Bloch,
Joshua. 2008. Effective Java. 2d ed.
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.
Flanagan, David. 2005. Java in a Nutshell. 5th ed.
Gosling,
James, Bill Joy, Guy Steele, and Gilad Bracha.
2006. The Java™
Language Specification. 3d
ed.
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.netbeans.org/index.html
·
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
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.