Syllabus (General Information and Policies)
CSSE 221 – Fundamentals of Software Development Honors
Fall 2008–2009

Welcome!

This challenging Honors course focuses on object-oriented software development in Java, with a short introduction to C to contrast it with Java. We move through course material quickly, so as to have time for students to create a large software project developed by small teams as well as to research and present course material to classmates.

Prerequisites and Course Content

Prerequisites

CSSE Department's Official Learning Outcomes for CSSE 221

Students who successfully complete this course should be able to:

  1. Develop software that incorporates the following techniques:
    • Inheritance and class hierarchies
    • Interfaces
    • Polymorphism
    • Casting
    • Exceptions
    • Function objects
    • Generics
    • Collections
    • Event-driven graphical user interfaces
    • Exploring and using large-scale API packages such as Java's Swing
    • Recursion
  2. Perform the following steps of the software development cycle effectively:
    • Design expressed as UML class diagrams
    • Documentation before coding
    • 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 canonical searching and sorting algorithms.
  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.
  6. Describe the differences between implementations of a given program using a dynamic, interpreted, memory-managed language (e.g. Java) and a static, compiled, low-level language (e.g. C), considering language features such as:
    • type declarations
    • string representations
    • arrays vs. lists
    • explicit pointers vs. implicit references
    • parameter passing
  7. Explain the tradeoffs between the use of the languages from outcome 6 in the solution of a given programming problem.
  8. Solve small programming problems in each language described in outcome 6.
  9. Design, specify, and implement a small-to-medium-size (2 to 3 weeks long) software product using object-oriented design and structured (functional) decomposition.
  10. Demonstrate the central elements of team building and team management.
  11. Verbally communicate technical material in an effective manner.

Course meetings, Contact info, Outside help

Class Meeting Times and Places

Instructor

David Mutchler, Professor of Computer Science and Software Engineering
Photo of David Mutchler Email:   David.Mutchler <at> rose-hulman <dot> edu
Office phone:   (812) 877-8426
Office address:   Moench F-204 (top floor)
Home page:   http://www.rose-hulman.edu/~mutchler
Office hours:   Feel free to stop by whenever I'm in the office. You can call or email first to see if I'm in the office.

Course Assistants

Section 1

Photo of Eric Crockett Eric Crockett Photo of Mark Jenne Mark Jenne Photo of Peter Lundgren Peter Lundgren
Email:   crockeea
<at> rose-hulman
<dot> edu
Email:   jennemj
<at> rose-hulman
<dot> edu
Email:   lundgrpb
<at> rose-hulman
<dot> edu
IM: TBA IM: TBA IM: TBA

Section 2

8th and 9th periods on Monday, Wednesday, and Thursday in Olin 167. Student assistants:
Photo of Molly Richardson Molly Richardson
Email:   richarme
<at> rose-hulman
<dot> edu
IM: TBA

Both sections

Grader:
Photo of Mike Mrozek Mike Mrozek
Email:   mrozekma
<at> rose-hulman
<dot> edu
IM: TBA

In addition, any of the students who staff the CSSE lab F-217 should be able to help you.

The Big Email Address

If you send mail to

	csse221-staff <at> rose-hulman <dot> 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. This email address isn't set up quite yet - stay tuned.

Other Sources of Help

The CSSE lab, F-217, is staffed to assist students taking courses in the CSSE Fundamentals sequence, including 221. A detailed schedule of times when assistants should be available is posted.

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.

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! Software development is a team sport. The best programmers know that a fresh set of eyes can often spot a problem right away.

Books and Software

Required texts

Big Java, 3E Cover Art

Big Java, 3rd edition, by Cay Horstmann

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

Links:   Companion Site   ·   Source code   ·   Errata

 

C: The Complete Reference, 4th edition, by Herbert Schildt

Paperback: 805 pages
Publisher: McGraw-Hill Osborne Media, 4th edition (2000)
ISBN-10: 0-07-212124-6
ISBN-13: 978-0-07-212124-7

Links:   Source code

“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)

Another rich online source of books for learning and reference

Safari Logo

Safari Tech 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/


How to Access Safari Tech Books Online
  1. If you are off-campus, you must connect to the Rose-Hulman VPN:
    	Start ~ All Programs ~ Nortel Networks ~ Contivity VPN Client
    
    (See IAIT for more information on connecting to the VPN.)
  2. Go to the Logan Library home page.
    • You can also get there from the Rose-Hulman homepage, by choosing “Logan Library” from the QuickLinks menu.
  3. On the Logan Library page, go to the   -->Databases<--   drop-down list at the top and choose Safari Tech Books Online.
  4. Press Click To Go.
  5. Look for the books you want. If you don't see any books, click Library near the top-left of the page.
  6. When you are done, Logout (using the link on the upper-right of the page).

Note: If you get a message indicating that we have reached Rose-Hulman's limit on the number of concurrent users, tell your instructor so that we can try to get that limit increased. (We don't think that we have hit that limit, so far.)

On-line books currently in Rose-Hulman's subscription to Safara Tech Books that may be helpful for CSSE221 include:

Safari Tech Books Online has thousands of other books that are not part of Rose-Hulman's subscription. If you find one that you want (e.g., by using Search Safari at the top-right of Safari's home page), email your instructor to see if it can be added to Rose-Hulman's subscription.

A great reference book on C

C: A Reference Manual (5th Edition)

C: A Reference Manual (5th Edition), by Samuel P. Harbison III and Guy L. Steele

Paperback: 560 pages
Publisher: Prentice Hall, Fifth Edition (2002)
ISBN-10: 0-13-089592-X
ISBN-13: 978-0-13-089592-9

Links:   Companion Site   ·   Source code   ·   Errata (2nd printing),   (1st printing)

Software that we will use

See Homework0 (emailed to you before the first session of class) for instructions for obtaining and installing the following (all of which are free):

Course Materials Online

I use ANGEL to post grades and materials that require restricted access (like quizzes and homework solutions). All online materials for the course will either be in ANGEL itself, or linked from ANGEL, or in Subversion repositories that I will create for you.

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

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 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.

As a student in this course, you are expected to...

Attend class and participate actively in the learning experiences.

Each week will normally include:

Assist classmates with their learning.

Avoid electronic distactions during class.

During class, please don't:

Take responsibility for your own learning

“Successful, engaged learners are responsible for their own learning. These students are self-regulated and able to define their own learning goals and evaluate their own achievement. They are also energized by their learning; their joy of learning leads to a lifelong passion for solving problems, understanding, and taking the next step in their thinking. These learners are strategic in that they know how to learn and are able to transfer knowledge to solve problems creatively. Engaged learning also involves being collaborative--that is, valuing and having the skills to work with others.”

-- From the North Central Regional Education Laboratory at www.ncrel.org/sdrs/engaged.htm, describing research by Jones, Valdez, Nowakowski, and Rasmussen (1994).

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.

Maintain 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.

Revised by Curt Clifton, written by Matt Boutell, based on format and lots of wording by Claude Anderson, and wholeheartedly supported by David Mutchler.

Grading

If you work hard in this class, you will earn a grade that you are proud of; if you don't work hard, you will probably not be happy with the grade that you earn.

That said, here is how I will calculate your grade: First, I calculate your score for each of the following 4 categories:

Weight Category
15% Written homeworks, short exercises, and short quizzes
40% Software development projects, including the capstone project
15% Student presentations and citizenship (“capsules”)
30% Exams, including the final exam

Let Smallest be the smallest of those 4 scores. Let Average be the weighted average of those 4 scores. Then your overall score is the smaller of Average and Smallest + 10.

For example, perhaps your average on the written homeworks (et al) is 84, your average on the projects is 98, your average on the presentations is 76, and your average on the exams is 94. Then Smallest is 76 and Average is 84*0.15 + 98*0.40 + 76*0.15 + 94*0.30 = 91.4. Since 76 + 10 = 86 is smaller than 91.4, your overall score is 86.

I convert your overall score to a letter grade. I use the standard 10-point scale: 90 and up is an A, 85 to 90 is a B+, 80 to 85 is a B, and so forth. So in the example above, your final grade would be a B+.

Note that citizenship counts, where “citizenship” means participation in the CSSE 221 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.

One more note: The in-class time in this course constitutes an important learning experience. You should attend class. 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 using the Communications tab in ANGEL.)

Late (and early) Assignment Policy

Here is the normal schedule of due dates.

It is to your advantage to complete assignments by their due dates. However, we all have days when we are extremely busy, or times when an assignment 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 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 happend because:

Acknowledgements

This syllabus, and indeed this course, draws upon ideas from many people. Many of the words in the syllabus are taken from the CSSE 120 and CSSE 220 syllabi.

Particular thanks go to: