Syllabus
CSSE 220 – Fundamentals of Software Development II
Fall, 2007-08

 

General Course Information

Prerequisites

The formal prerequisite is: CSSE 120 – Fundamentals of Software Development I.

The main things you should bring into this course include:

In addition, you should bring some familiarity with Java. For example, I expect you to have (or quickly obtain):

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.

Meeting times and places

Instructor

Claude Anderson – Professor of Computer Science and Software Engineering

Email: anderson@rose-hulman.edu  
Office phone: (812) 877-8331
Office address: Moench F-210
Home page: http://www.rose-hulman.edu/~anderson
Office hours: I am usually  on campus from 8 a.m. until 5 p.m. When I am not in class or meetings, I am usually in my office, and happy to talk with you. If my door is shut, just knock. Sometimes I will be in the F-217 lab working with students, and sometimes I will be in F-222 working with Curt and Delvin on CSSE 120. Feel free to look for me in either place. My Outlook Calendar is public; you can look at it to see when I have scheduled meetings.

Lab Assistants

Michael Mrozek mrozekma@rose-hulman.edu

Jarrod Stormo stormojm@rose-hulman.edu

Other Sources of Help

The CSSE lab, F-217, is staffed Sunday through Thursday , 7pm–9pm, and MTR hours 8-10 (additional hours pending), to assist students taking any courses in the Fundamentals sequence, including CSSE 220.

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

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 something for 30 minutes without making any progress, it’s probably time to seek help!

Texts

Required text

Weiss 3E Cover Art

Data Structures and Problem Solving Using Java, 3rd edition by Mark Allen Weiss

Hardcover: 960 pages
Publisher: Addison Wesley; (February 14, 2005)
Language: English
ISBN-10: 0321322134

Links: Errata     Source code

Other References

Java Logo

The Java™ Tutorials, Sun Microsystems.

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

Course Materials

I will  use Angel to post grades, materials that require restricted access (like homework solutions), and links to the course schedule, assignment descriptions, slides, quizzes, and handouts. Many linked materials are available via any of the several mechanisms for accessing Public AFS data. Thus, you can get to the majority of course materials:

CSSE Department Learning Outcomes for CSSE 220

Students who successfully complete this course should be able to:

1. Develop software that incorporates the following techniques:
      a. Inheritance and class hierarchies
      b. Interfaces
      c. Polymorphism
      d. Casting
      e. Exceptions
      f. Function objects
      g. Generics
      h. Collections
      i. Event-driven graphical user interfaces
      j. Exploring and using large-scale API packages such as Java's Swing
      k. Recursion

2. Perform the following steps of the software development cycle effectively:
	a. Design expressed as UML class diagrams
	b. Documentation before coding
      c. 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.

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. You may of course ask about any details that you do not understand. I strongly believe that reading the textbook will help you. (You may be able to “get by” without reading the text. But did you come to Rose to “get by” or to be the best?)

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 some 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. They should not contain lines that are more than 80 characters long (causing wraparound and general unreadability of printouts).

Grades for programming problems will be based on correctness, style, and efficiency.

Grading

Weight Criteria
55% Homework, programming problems, quizzes, in-class exercises
20% Midterm Exam
25% Final Exam

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 state 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 5 percent, based on your citizenship in the CSSE 220 learning community. This includes attendance, promptness, preparation for class, positive participation in class, 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. After two unexcused absences, you must discuss continuation of the course with the instructor. Three unexcused absences will result in automatic failure of the course.

Late Policy

Unless I offer a "grace period" for a particular assignment, all assignments  must be turned in on time if you want credit for them.

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 to me, please begin the Subject: line with CSSE 220:, so that I can quickly pick it out from among the dozens of daily email messages that I receive. Then I can respond more quickly.

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.

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, you can use the anonymous suggestion survey that I will provide in ANGEL.

Electronic Distraction Policy

I will do my best to keep class interactive. 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.

We strongly encourage you to turn off IM and email software and only use other software for things directly related to class. If you choose to use non-class-related software during class, then you must sit in the third row. Doing so will prevent your classmates from being distracted by 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. 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.

In general, you should not look at another student’s code 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.