· Instructor:Jeff Salvage
· E-mail: jks29@drexel.edu
· WWW: http://www.cs.drexel.edu/~jsalvage
· Lecture:
· Office: Crossings 100E
· Office Hours: (Main Campus) Tuesdays and Thursdays from 8:30 - 9:30 AM and by appointment (Please note I am not on main campus Monday and Wednesdays)
(BCC Campus) Mondays and Wednesdays from 11:30 - 12:30 PM and by appointment (Please note I am not on BCC campus Tuesday and Thursday)
Teaching Assistants
· Kelly Blincoe
· TA email address: kelly.blincoe@drexel.edu
· Office: 147 UC
· Office Hours: 12-2 on Thursdays
· Intro to Design Patterns
Lab 1, due in class to be done in class. You do not have to do anything before. Please bring your laptops if you have them.
Due, TBD
Note on Homework #2, I forgot to remove the reference to composit. You may do so. This was there to combine features. I removed it to make life simple.
For class FeatureFactory, we need a constructor that takes a Renderer as a parameter.
On the UML, class Polygon is listed as having a y and radius, this is a mistake.
Final Exam
TBD
We expect that you will have access to these books for assignments.
Required
Design Patterns Explained: Alan Shalloway, Addison and Wesley
(0-201-71594-5)
The Pragmatic Programmer, by Andrew Hunt and David
Thomas. Addison-Wesley 2000. ISBN: 020161622X.
Design Patterns : Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 395 pages (October
1994) Addison-Wesley Pub Co; ISBN: 0201633612
Object-Oriented Design & Patterns by Cay Horstmann Wiley Text Books; 1st edition (April
3, 2003) ISBN: 047131966X.
Big Java, by Cay Horstmann,
Wiley, 2001, ISBN: 0471402486; or any other comprehensive text
that makes efforts to explain how to use Java features or class
libraries. If you are a good Java programmer then you may be able to work
with free documentation available over the internet alone. But this is
not a course that will take much time to explain features of Java; you are
expected to learn routine new features on your own with documentation. If
you find on-line documentation not to your liking, don’t waste your time and
hurt your class performance by trying to learn from it.
For some examinations, we will allow you to have a Java reference book to refer
to for details on the language. The book need not be a comprehensive
guide to class libraries, but it should allow you to write syntactically
correct Java.
Integrated Development Environment
The
IDE for this class will be Eclipse. You can download a free copy (having
already installed Java on your computer) from www.eclipse.org. Being implemented in Java, it should
(and does) run on Windows, Sun, Linux, and Macintosh. The reason why we
are using Eclipse is that we intend to use certain Eclipse plug-ins, such as
for program testing and style checking, which makes use of such additional
features straightforward across platforms. While you are free to develop your
implementation projects in any environment you wish, you must submit an eclipse
project when an implementation is called for (and possible for other kinds of
work as well, as will be announced in assignment handouts). Programs will
be tested by the grader to execute properly in Eclipse. You will not
receive credit for implementation assignments and projects unless your
submission can properly compile, execute, and pass required tests.
Objectives
of this course
This course is about good object oriented design and implementation. In the challenging projects that programmers face, the design stage is where the primary difficulties of programming are worked out. Implementation, the task of turning a design into a working program in a working programming language, is supposed to be very straightforward given a good design.
Object oriented programming(OOP) allows programmers to use write programs that is easier to reuse and easier to extend and maintain over a life cycle of usage. However, this power is achieved at the cost of making the program designer’s task more complicated, due to the richness, subtlety and peculiar limitations of OO classes and class inheritance. A major objective of this course is to bring students to a level of competency in OO design so that they can handle team or individual projects of moderate complexity ..Design skills students should acquire include the ability to decide which classes would be appropriate given only a problem specification, designing for ease of future code maintenance, being able to decide upon details of classes from a problem specification, finding well-known software patterns from typical problem specifications, and being able to communicate both static and dynamic aspects of designs using the Universal Modeling Language (UML).Design skills should be applicable to any of the OO languages in vogue (e.g. C++, Eiffel, Java). Grades for design projects will be based, among on other things, on the quality of the design and on the written explanation, description, and justification of the design.
Another object of this course is to make you confident and competent at implementing an OO design of moderate complexity, using coding techniques based upon generally recognized software engineering principles. Reasonable competence in Java includes a bit more than you may have used with Java or C++ in CS 171/172/260/265 (or their equivalent). We will cover additional features and class libraries of Java that are important in object oriented programming: abstract classes, exception handling, important frameworks, etc. as well as coding and testing practices (e.g. naming conventions for classes, variables, constants, and files, pre-conditions, what thorough testing means, etc.).Many of these features can be found in other OO languages. You will be asked to demonstrate such competence by constructing and thoroughly testing programs of moderate complexity on your own, from a design of your own devising. Grades for implementation projects will be based, among other things, on the quality of the coding, on correctness, degree of difficulty, quality of tests devised and provided, and written documentation, explanation, and justification of the code written.
A final objective of this course is to make you more self-aware, descriptive, and reflective about your programming and design. By learning about and practicing with design and quality rationales the course will present, you should be able to state, explain, judge, and justify design or implementation decisions in a way that would be generally acceptable among (at least) entry-level computing professionals. It is also a necessary step towards being able to continue to improve your skill in the future without the need for professors or formal classes.
Some
assignments will assume that you find it routine to implement programs that use
data structures such as trees or linked lists. Some assignments will ask that
you will be able to design and implement algorithms to solve simple problems on
your own, without extensive hints or outside help. This will probably require a
bit more mental effort on your part than many assignments from previous
courses, in that you will have to devise the solution algorithm yourself based
upon your prior experience with programming problem solutions. You can use the
first programming assignment as an indication of what you are expected to have
started with. If you have questions, please consult with the instructor.
Homework
will be submitted for test execution within Eclipse, but some activities (such as
using CVS) we will assume prior experience with Unix. We shall not be covering
Unix usage in lecture but you may ask the instructor or consultants during
office hours if you have questions about this. Every one enrolled in this
course is entitled to an CS Unix account if they do not already have one.
To get a Unix account, go to https://knave3.cs.drexel.edu/MakeStudentAuthAccount.php.
If you do not have a high-speed connection to the MCS systems it is probably most expedient to do most of your development on your personal computer, but it is still your responsibility to have the program work correctly with the reference computer and compiler. Leave enough time before the assignment deadline to do the port.
Your grade will depend upon a number of different items, cumulatively. The weighting will be roughly as follows. The instructor reserves the right to make modest adjustments (5% or 10% for a category) in the weighting used:
Homework Assignments 50%
Midterm exam 20%
Final Exam 30%
Students will receive a reduced or a failing grade for the course if in the instructor's judgment their performance on the midterm and final examinations indicates that they cannot express an adequate understanding of the material in the course. One criterion used for "adequate" is achieving at least a 40% mark on the final exam. Good quality in-class participation (being prepared to answer questions posed by the instructor during the class) will be taken into account as a compensating factor for a poor exam performance, but programming assignments will not be. Part of your assignment will consist of written answers rather than programs. Part of your assignment grade will be based on how you express yourself, as well as what you say. Your writing is expected to be of the quality comparable to technical writing done by a well-regarded computing professional..
Assignments will be made available on the class web pages, and will be due as described in each assignment. There will in the neighborhood of five assignments during the quarter, due at one or two week intervals. The programming assignments will be done in Java using Eclipse. There will also be written work that should be submitted as specified in the assignment. Most assignments will be submitted electronically via webCT. When assignments call for written responses, they should created using a text processor, written in intelligible, clear and correct English. Poorly written or sloppy work will be returned ungraded. Programs that do not compile and cannot be tested will receive little or no “partial credit”.
Late policy: assignments will be accepted late with a 20% penalty, by the late due date specified when the assignment is released.. After that, assignments will be not accepted for credit.
Part
of your grade is based upon being present and having good quality participation
in the class discussion. Some times the instructor will call upon people while
at other times he may choose among only those who wish to speak up. Good
quality class discussion means having done whatever reading has been assigned
for that day and done the work of understanding most of it on your own being able
to answer questions or problems posed by the instructor based upon prior work,
the reading, and the discussion in class advancing the understanding of the
class by asking questions that expand or clarify issues of interest to many
working on whatever in-class group projects are assigned for the day, and
participating in the presentation of the group’s work for the project. It is
not necessary to answer all questions correctly or speak up every day to
receive a passing grade for participation, but you need to establish in the
instructor's mind that you are typically prepared and can respond capably.
The university's Academic Honesty policy is in effect for this course. To visit the university's online handbook, go to http://www.drexel.edu/studentlife/studenthandbook2002/Judicial/acadhon.html.
You must be the sole original author of all assignments and examination solutions in their entirety, unless the instructor explicitly gives you permission to do otherwise in written directions on an assignment or exam. Design and implementation problems should be discussed with the instructor or the teaching assistants only. This means that you should have an implementation plan that leaves enough time for such consultation. As the university's policy explains, penalties up to and including receiving a failing grade for the course with no opportunity to withdraw will be given for first time offenses of plagiarism, fabrication, cheating, or other forms of academic dishonesty. Allowing another student to copy from your work (i.e. helping another student to cheat) is also a violation of the policy on academic dishonesty.
The standards for originality in a program are similar to those of other written works. Programs by different authors show clear and substantial differences as judged by most criteria, including but not limited to: choice of variable and procedure names, line spacing and indentation, choice of program structure, choice of algorithms, ordering of modules, style and content of documentation, module design, and ordering and choice of instructions. The original author of an assignment can explain each detail and how they came to create it on their own. Whenever you use references or sources (i.e. the Internet) for “inspiration” in your programs and designs, you must give a complete and proper citation of the source. Copying or close paraphrasing from other sources and claiming it is your own original work is a violation of the academic honesty policy.
It is your responsibility to avoid violating the university's policy. If you are unclear as to what the policy means in a particular situation, ask the instructor for clarification before you hand anything in.
In addition, be clear that if you electronically copy another person’s work and submit it as your own you are in violation of this policy and could be failed for the course on the first occurrence. If you solicit and/or hire someone to do your work, even if the work is not complete you are in a violation of this policy and could be failed for the course on the first occurrence. Any violation of this policy may also result in the matter being handed over to an external judiciary panel. Do not let this happen to you.
Syllabus Statement
In
compliance with the Americans With Disabilities Act of 1990, Section 504 of the
Rehabilitation Act of 1973, and
The statement should be the same format as other information provided on the syllabus, i.e. font size. The following statement is recommended:
Student
with disabilities requesting accommodations and services at
Kings/Queens/Candy Owers