CSSE 221 - Fundamentals of Software Development Honors
General Information and Policies

  1. Rose-Hulman Institute of Technology
  2. Computer Science & Software Engineering

Also known as the "Syllabus"

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.

Prerequisites

Instructor, assistants, meeting times and places

Matt Boutell, Assistant Professor of Computer Science and Software Engineering
Email: boutell@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   Olin169 ========||
Home page: http://www.rose-hulman.edu/~boutell
Office hours: feel free to stop by whenever I'm in the office. You can email first to see if I'm in the office.

Section 1

1st and 2nd periods on Monday, Tuesday, and Thursday in Olin 169. Jason Sauppe and Jonathan Rogers are assisting.

Section 2

3rd and 4th periods on Monday, Tuesday, and Thursday in Olin 169. Amanda Stephan and Brad Wehmeier are assisting.

Texts and software

Required text
Data Structures and Problem Solving using Java, 3rd edition, by Mark Allen Weiss.
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.

You will receive instructions for installing these free tools via email.

Recommended resourcece
The online Java Tutorials on the Sun web site.

Learning outcomes

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 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.
  6. Design, specify, and implement a medium-size software product using object-oriented design.
  7. Verbally communicate technical material in an effective manner.
  8. Describe the differences between implementations of a given program using a memory-managed language (Java) and a low- level language (C), considering language features such as:
    • string representations
    • explicit pointers vs. implicit references
    • parameter passing
    • appropriate applications of each language
  9. Solve small programming problems in each language described in outcome 8.

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 90 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 back row. This will prevent your classmates from being distracted by what is on your screen.

Grading:

Some class info will only be distributed via email. You are responsible for checking for class email daily on Angel. (Hint: this is easily done by having Angel forward your email to another account, as taught during laptop orientation.)

Your grade will be based on your demonstration of the learning outcomes, as measured by:

  1. Programming projects and the capstone project (35%)
  2. Weekly written assignments (15%)
  3. Student presentations, or "capsules" (15%)
  4. Exams and daily quizzes (30%)
  5. Class participation and citizenship(5%)

Citizenship is an integral part of the course. The baseline citizenship grade for someone who comes to class but doesn't interact will be 70%. Asking and answering questions will raise your grade; skipping class and not paying attention while there will lower it.

Furthermore, the in-class time in this course constitutes an important learning experience. After two absences (~7% of the course), you should discuss continuation of the course with your instructor. Subsequent unexcused absences may result in automatic failure of the course, at the instructor's discretion.

All assignments and exams must be turned in on time if you want credit for them. Of course, if serious circumstances keep you from finishing a program on time, please see your instructor in advance.

Who to ask for help

    Your best sources of help, by far, are the instructors and the CSSE 221 assistants.

    Don't hesitate to contact them, in person or via email.

    There are no dumb questions. It is better to ask, than to assume - assumptions can get you in trouble!

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

    Schedule of Assistants:

Collaboration and academic 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.

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."
The departmental statement on academic honesty has more detailed advice.

Dishonesty on homeworks, software development projects, quizzes or exams may result in a lowered course grade or a grade of an F in the course. (Ask me about the minimum penalty for cheating.) More importantly, such dishonesty steals your own self-esteem. So don't cheat.

If you have any questions, please ask.