Syllabus
CSSE 220 – Object-Oriented Software Development
Winter 2008–09 (a.k.a. 200920)

Prerequisites and Course Content

Prerequisites

The formal prerequisite is: CSSE 120 – Introduction to Software Development. Either the 2007-2008 versions (Python and C) or an earlier version (Java) should suffice.

The main things you should bring into this course include:

Course catalog description

Object-oriented programming concepts, including the use of inheritance, interfaces, polymorphism, abstract data types, and encapsulation to enable software reuse and assist in software maintenance. Recursion, GUIs and event handing. Use of common object-based data structures, including stacks, queues, lists, trees, sets, maps, and hash tables. Space/time efficiency analysis. Testing. Introduction to UML.

CSSE Department's Official Learning Outcomes for CSSE 220

Students who successfully complete this course should be able to:

  1. Develop software that incorporates the following techniques:
    1. Inheritance and class hierarchies
    2. Interfaces
    3. Polymorphism
    4. Casting
    5. Exceptions
    6. Function objects
    7. Generics
    8. Collections
    9. Event-driven graphical user interfaces
    10. Exploring and using large-scale API packages such as Java’s Swing
    11. Recursion
  2. Perform the following steps of the software development cycle effectively:
    1. Design expressed as UML class diagrams
    2. Documentation before coding
    3. Unit and system testing
  3. Explain the implementation of sequential and linked lists
  4. Analyze the asymptotic worst, best, and average case run times of simple algorithms including search and sort
  5. Select basic data structures (e.g. arrays, sequential lists, linked lists, stacks, queues, hash tables and trees) based on the time and space complexity of typical operations.

Course meetings, Contact info, Outside help

Class Meeting Times and Places

Instructor

Curt Clifton – Assistant Professor of Computer Science and Software Engineering

Email: anderson <at> rose-hulman <dot> edu
Office phone: x8331
Office address: Moench F-210
Home page: http://www.rose-hulman.edu/~anderson
Office hours: I am usually on campus from about 7:30 AM until 5:00 PM. When I am not in class or meetings, I am usually in my office, and happy to talk with you. My detailed schedule is available from my homepage.
Link to my Online Calendar: Click here. Perhaps you will want to bookmark this page.
You can also open my calendar directly from Microsoft Outlook:
  In MS Outlook, go to Calendar, then click Open a Shared Calendar.

In-class Assistants

Photo of Chris Riley Chris Riley
rileycr <at> rose-hulman <dot> edu
Photo of Peter Lundgren Peter Lundgren
lundgrpb <at> rose-hulman <dot> edu
Photo of Jacob Schmidt Jacob Schmidt
schmidjw <at> rose-hulman <dot> edu

In addition, any of the lab assistants should be able to help you.

The Big Email Address

If you send mail to csse220-staff@rose-hulman.edu, it will go to all instructors and student assistants for the course. You are more likely to get a quick answer by sending to this address than to any of us individually.

Other Sources of Help

The CSSE lab, F-217, is staffed to assist students taking courses in the CSSE Fundamentals sequence, including 220. A detailed schedule of times when assistants should be available is posted. If you go to F-217 and can't figure out who the lab assistant is, you should be brave and ask!

Besides the instructors and assistants, other students in the course can often be a great source of help. And they will learn more if they explain things to you.

There is also the Learning Center.

Don’t try to be the Lone Ranger in this course, especially if you do not find the course easy. If you find that you have worked on a program for 20 minutes since you last made any progress, it’s probably time to seek help! Software development is a team sport. The best programmers know that a fresh set of eyes can often spot a problem right away.

Books

Required text

Big Java, 3E Cover Art

Big Java, 3rd edition, by Cay Horstmann

Paperback: 1204 pages
Publisher: John Wiley & Sons, Inc., 2008
ISBN: 978-0-470-10554-2

Links: Companion Site· Source code· Errata

 

"From the Source" Reference

Java Logo

The Java™ Tutorials, Sun Microsystems.

On-line: http://java.sun.com/docs/books/tutorial/
Publisher: Sun Microsystems (November 10, 2006)
Language: English

Another rich online source of books for learning and reference

Safari Logo

Safari Books Online – On-line access to Java (and other) books through the Rose-Hulman Logan Library web page

On-line: http://proquest.safaribooksonline.com/?uicode=rosehulman/

Safari On-line books that may be helpful for CSSE220 include:

How to Access Safari Tech Books Online

These on-line books are only accessible from on-campus or via the Rose-Hulman VPN. From off-campus, see IAIT for more information on connecting to the VPN.

From on-campus or once the VPN is connected, find Safari Books Online by following these steps:

  1. Go to the Logan Library page. (You can also get there from the Rose-Hulman homepage, by choosing “Logan Library” from the QuickLinks menu.)
  2. On the Logan Library page, go to the Databases drop-down list at the top, and choose Safari Tech Books online.
  3. You may have to click Go.
  4. Look for the books you want. If you don't see any books, click Library near the top of the page.

Course Materials Online

I will use ANGEL to post grades and materials that require restricted access (like quizzes and homework solutions). All materials for the course will be

Many of the materials in ANGEL are actually links from ANGEL to AFS files, and are thus they are available via several mechanisms for accessing public AFS data. You can get to these materials:

Homework and Projects

When I give a reading assignment, I seriously expect you to read it. In-class discussions will assume that you have done the reading and understood the “easy stuff” before class. Please ask about any details that you don’t understand; answering questions is one of the best parts of my job. But developing software is hard. The more class time we can devote to hands-on work, the more I can help you to succeed. Time spent covering material that you can learn from the book takes away from the hands-on time in class. I strongly believe that reading the textbook will help you.

Big Java includes some excellent Review Exercises at the end of each chapter. For each reading assignment, I’ll ask you to contribute to the Big Java Review Wiki on ANGEL. See the Welcome page of the Wiki for more information. Hopefully the Wiki will let us cover the basics of the reading outside of class so we can focus on the harder parts in class.

Your solutions to programming problems should be well-designed and well-documented. I will suggest working on some programming problems with another person; however I will designate most problems as individual assignments.

I will assign several written homework problems and in-class exercises. They will usually be short thought problems, mathematical analyses, or algorithm-design exercises. I expect you to think through them carefully and write your answers legibly and clearly (if you can’t write it neatly, type it). On some problems, not only the correctness but also the quality of your solution will determine your grade. Some of the problems will be straightforward practice with concepts from the course; others will require creative solutions. Don’t put them off until the last minute!

When problems are designated as allowing you to work with a partner, if you need help finding people to work with, let me know, and I will put you in touch with other students who indicate a similar need. If you do an assignment with someone else, it is your responsibility to not allow anyone’s name (including your own) to be placed on the submitted program if that person does not understand the solution.

Each submitted program file should include your name(s), and a description of the file’s contents in comments at the top of your files. They should have reasonable and consistent comments, style, and indentation. Your programs should not contain lines that are more than 80 characters long (causing wraparound and general illegibility of printouts).

Grades for programming problems will be based on correctness (mostly), efficiency (some), and style.

Late Assignment Policy

Quizzes (reading and in-class), wiki contributions,  and written problems must be completed on time if you want credit for them.

However, we all have days when we are extremely busy, or times when a program takes longer to complete than we expect it will. To account for this, I give each student a “late day bank account” that starts with two late days.

  1. Using (withdrawing) a late day allows you to turn in any programming assignment up to 24 hours after the time it is due. It is up to you to turn in work within that time frame, if it falls on a non-class day.
  2. You may earn (deposit) a late day by turning in an assignment at least 24 hours early. There is no limit to the number of late days you can save up.
  3. Only one late day may be used or earned on any given assignment.
  4. Unused late days disappear at the end of the term.

Notification for a deposit or withdrawal: just complete the Late Day Bank Survey on ANGEL before the assignment is due. That is so I can know when it is okay to post a solution or discuss an assignment in class.

Some particular assignments may be designated as ”no late days“ assignments. This might happen because:

Grading

Weight Criteria
10% Big Java Review Wiki participation
35% Homework, programming problems and projects, in-class exercises
10% Team mini-project
5% In-class quizzes
11% Exam 1
11% Exam 2
15% Final Exam
3% Citizenship

Final grades are also contingent on the following:

I will do my best to conform to the Rose-Hulman definition of the various grades, as described in the Academic Rules and Procedures. Note in particular that the phrase “thorough competence to do excellent work” appears there in the description of the “B” grade (not “A”), and it further states that “B” and “B+” will not be given for mere compliance with the minimum essential standards of the course.

Citizenship Counts!

I may adjust your overall average up or down by up to 3 percent, based on your citizenship in the CSSE 220 learning community. This includes attendance, promptness, preparation for class, positive participation in class and the online discussion forums, constructive partnership in pair and group assignments, timely completion of various surveys, and peer evaluation of other students’ code and of your team members for group projects.

The in-class time in this course constitutes an important learning experience. You should be there. Two unexcused absences will affect your Citizenship grade. After three unexcused absences you must speak with me about whether you can continue in the course.

Bug Reports

If you find errors in the textbook or any of my course documents, please report them via the Bug Reports discussion forum on ANGEL. I will give a small number of extra credit points to the first person to report a given bug. The number of points will depend on the severity and subtlety of the bug that you report. I recommend that you subscribe to that discussion forum. (You can do that from the Communications tab or the Course tab in ANGEL.)

Communication

I usually check email several times per day, and do my best to respond quickly. It is a good way to get answers to simple questions. I expect you to check your email daily (not necessarily on weekends, although even that is not a bad idea). When I send mail to you, I will use your Rose-Hulman address. If you do not currently read mail that is sent to that address, please have it forwarded to wherever you do read mail.

When you send course-related email directly to me, please include 220 in your subject line (and include a real subject line), so that I can quickly pick it out from among the dozens of daily email messages that I receive. Then I can respond to you more quickly.

Some examples of good and bad subject lines:

Bad: When is Assignment 1 due? 
Bad: CSSE 220
Good: CSSE220: When is Assignment 1 due?

Don't forget the csse220-staff@rose-hulman.edu address. Your mail will go to me and to all of the student assistants.

Discussion forums on ANGEL are a place where you can discuss various aspects of the course, including the assignments, with other class members.  The student assistants and I will read the discussions and sometimes respond to your posts.  One way to enhance the Citizenship part of your grade is to post thoughtful questions, answers, and comments to the forums.  I will often use these forums when there is a need to communicate with the entire class between class meetings.  Therefore, I recommend that you subscribe to them.

I welcome your suggestions for the course.  Please tell me about things in the course that help you to learn, and things I might do to improve the course for you. If there is something that you'd like to tell me, but don't feel comfortable with me knowing who it comes from, you can use the Anonymous Suggestion Box survey that I have provided on ANGEL.

Electronic Distraction

I will do my best to keep the class interactive and relevant. But I recognize that sometimes it is hard as a student to stay focused on the class. With laptops in class, there are many more ways to become distracted. Unfortunately these distractions are much more pernicious, since it is very easy to get drawn into things like IM conversations or RSS feeds.

In the classroom I strongly encourage you to turn off IM and email software and only use other software for things directly related to class. If you must use non-class-related software during class, then you should sit in the next-to-last row (no one should sit in the last row). Doing so will keep you from distracting your classmates with what is on your screen.

Academic Integrity

Recall the Institute policy on academic misconduct:

“Rose-Hulman expects its students to be responsible adults and to behave at all times with honor and integrity.”

Exams and homework will be done on an individual basis except when explicitly noted. The simple rule of thumb for individual work is:

Never give or use someone else’s code or written answers.

Such exchanges are definitely cheating and not cooperation. The departmental statement on academic honesty has more detailed advice.

We encourage you to discuss the problems and general approaches to solving them with other students. However, when it comes to writing code, it should be your own work (or the work of your group if it is a group or partner assignment). If you are having trouble understanding how some library code works or pinning down a run-time or logic error in your program, by all means talk to someone about it.

If you use someone else’s ideas in your solution (or any other work that you do anywhere), you have to:

If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with your instructor beforehand. This is a very serious matter that we do not take lightly. Nor should you.

You should never look at another student’s solution to get ideas of how to write your own code. Beginning the process of producing your own solution with an electronic copy of work done by other students is never appropriate.

Plagiarism or cheating will result in a negative score (i.e., less than zero) for the assignment or exam. Egregious cases will result in a grade of “F” for the course. More importantly, such dishonesty steals your own self-esteem. So don’t cheat.

Curt Clifton, Matt Boutell, and Claude Anderson have contributed to this document. Latest revision by Claude Anderson, November, 2008.