Syllabus
CSSE 221 – Fundamentals of Software Development Honors
Fall 2010

Prerequisites and Course Content

Welcome!

This challenging Honors course focuses on object-oriented software development in Java. We move through course material quickly, so as to have time to create a large software project developed by small teams, research and present course material to classmates, and still have time for a short introduction to C at the end of the course, so as to contrast it with Java and prepare you for courses that require C.

Prerequisites

CSSE Department's Official Learning Outcomes for CSSE 221

Students who successfully complete this course should be able to meet the same outcomes as those from CSSE 120 and CSSE 220. From 220:

  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. Explain the concepts of asymptotic worst, best, and average case run time.
  5. Predict the performance of simple algorithms, including search and sort, given their asymptotic worst, best, and average case run times.
  6. Select basic data structures (i.e., arrays, sequential lists, linked lists, stacks, queues, and dictionaries/maps) based on asymptotic time and space complexity of typical operations.
  7. Work in a team of 3–4 students on a small-to-medium-size software development project including at least three iterative development cycles, demonstrating effective:
    1. Use of team roles
    2. Team decision making
    3. Division of labor
    4. Conflict resolution
CSSE120's outcomes pertain to basic software development concepts, but two outcomes pertain to CSSE221. We will draw comparisons with Java, not Python:
  1. Describe the difference between the implementation of algorithms using Python and C, considering language features such as:
    1. type declarations (or not),
    2. string manipulation,
    3. arrays vs. lists,
    4. explicit pointers vs. implicit references, and
    5. structures vs. objects
  2. Solve small programming problems in both Python and C.

Course meetings, contact info, outside help

Meeting times

Instructor

Matt Boutell, Assistant Professor of Computer Science and Software Engineering
Email: boutell (at) rose-hulman.edu
Office phone: (812) 877-8534
Office address: Moench F-224 (top floor)
                       MB	
          Crapo ============
                        ||(Lab F217: extra help here)
           (Quad)       ||
Res.                    ||
Halls   Olin167 ========||
Home page: http://www.rose-hulman.edu/~boutell
Office hours: feel free to stop by whenever I'm in the office (I have class MTRF1 and MTR6-9 plus a few weekly meetings). Email also works.

Lab assistants

Andrew and Jimmy are great sources of help, as is Kurtis Zimmerman, the grader.

There will also be lab hours in Moench F217. See ASCII map above for directions. This lab is also a great place to meet upperclass CSSE students who love this stuff!

The Big Email Address

If you send mail to csse221-staff (and let Outlook find it; it's an alias for csse221-staff@mailman.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.

Discussion forums

Discussion forums on ANGEL are a place where you can discuss various aspects of the course, including the assignments, with other class members.  Sometimes you can get even quicker answers to questions from your classmates! Posting thoughtful questions, answers, and comments to the forums is part of being a good citizen in the course.

Resources

Required text

Big Java, 3E Cover Art

Big Java, 4th edition, by Cay Horstmann

Paperback: 1132 pages
Publisher: John Wiley & Sons, Inc., 2009
ISBN: 978-0-470-50948-7

Links: Companion Site· Source code· Errata

Required software

  1. Eclipse, a tool for software development.
  2. Tortoise SVN: A Windows client for version control
  3. Subclipse: an Eclipse plug-in for version-controlled code.

These are pre-installed on freshmen laptops. Upperclassmen can following instructions here: http://www.rose-hulman.edu/class/csse/resources/.

Other resources

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 in ANGEL, 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 are thus they are available via several mechanisms for accessing public AFS data. You can get to these materials:

Homework and Projects

Your solutions to programming problems should be well-designed and well-documented. I will suggest working on some programming problems with another person and on other programs individually.

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. They 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 and written assignments 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

Note: You must earn a C or better in the course to receive the 8 credits for the course. You also need to earn a C or better to meet the prerequisite for CSSE230.

 
Weight Criteria
5% In-class quizzes
40% Weekly assignments (programming and written) and the capstone project
15% Student presentations, or "capsules"
40% Exams

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!

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

Do things that will enhance your (and everyone's) learning, for example: Try to avoid things that will detract from your learning or that of people around you, for example:

Take responsibility for your own learning

Jones, Valdez, Nowakowski, and Rasmussen (1995) describe indicators of engaged learning:
"In engaged learning settings, students are responsible for their own learning; they take charge and are self-regulated. They define learning goals and problems that are meaningful to them; have a big picture of how specific activities relate to those goals; develop standards of excellence; and evaluate how well they have achieved their goals. They have alternative routes or strategies for attaining goals--and some strategies for correcting errors and redirecting themselves when their plans do not work. They know their own strengths and weaknesses and know how to deal with them productively and constructively. Engaged learners are also able to shape and manage change."

Follow the course computer use policy

Even in the best classes, it is sometimes hard to stay focused for 105 minutes, especially with a laptop in front of you! Laptops are necessary for this class. However, IM and news can draw you in longer than you might have hoped, so that you lose valuable class information.

Research also shows that people are not as good as multitasking as they think they are! (Rubinstein et al., "Executive Control of Cognitive Processes in Task Switching", 2001; http://archives.cnn.com/2001/CAREER/trends/08/05/multitasking.focus/ )

Therefore, I strongly encourage you to turn off communications (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 please sit in the next-to-last row (no one should sit in the last row). This 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.”

For this class, collaboration is encouraged, and sometimes required, on assignments. When you collaborate, you must: Failure to properly acknowledge collaboration can be considered cheating. The departmental statement on academic honesty has more detailed advice.

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.

If you have any questions, please ask.

Written by Matt Boutell, based on lots of wording and format from Curt Clifton and Claude Anderson.

Caveat: I reserve the right to modify the course content, schedule, policies, etc. outlined in this syllabus.