Syllabus
CSSE 221 – Fundamentals of Software Development Honors
Fall 2013

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, and to research and present course material to classmates.

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:

CSSE120's outcomes pertain to basic software development concepts, which you have already satisfied by virtue of your placement in this course. More information on the CSSE120 outcome are available on the CSSE120 course web site.

Outcomes 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
    12. Fork-join parallelism and multi-threading
  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, hash maps and tree 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

Outcome specific to 221:

  1. Verbally communicate technical material in an effective manner.

Course meetings, contact info, outside help

Meeting times

Instructor

Delvin Defoe, Associate Professor of Computer Science and Software Engineering
Email: defoe (at) rose-hulman.edu
Office phone: (812) 877-8815
Office address: Moench F-214 (top floor)
Home page: http://www.rose-hulman.edu/~defoe
Office hours: feel free to stop by whenever I'm in the office (I have class TWF 3 - 7 plus a few weekly meetings). Email also works.

Course assistants

Section 1, Defoe, in-class

Peter Samyn, samynpd <at> rose-hulman <dot> edu
Scott Harris, harrissa <at> rose-hulman <dot> edu

Section 2, Defoe, in-class

Jonathan Earles, earlesja <at> rose-hulman <dot> edu

F-217 lab assistants

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

Graders

Laura Elisabeth Davey, daveyle <at> rose-hulman <dot> edu

Brandon Tom, tombn <at> rose-hulman <dot> edu

The Most Important Communication Medium

This term we will be using Piazza for class discussion. The system is tailored to getting you help fast and efficiently from classmates, TAs, and your instructor. Rather than emailing questions directly to the course staff, you are highly encouraged to post your questions and solutions (no code or direct answers to homework assignments) on Piazza.

Bookmark our class page: https://piazza.com/rose-hulman/fall2013/csse221/home.

Resources

Recommended text

Big Java, 5E Cover Art

Big Java: Early Objects, 5th Edition, by Cay Horstmann

Paperback: 1072 pages
Publisher: John Wiley & Sons, Inc., 12/26/2012
ISBN: 978-1-118-43111-5

Links: Companion Site· Source code· Errata

Note: This text is not required for the course, but recommended. Some students may find it useful, other students may not need it. Any reading assignment from this text is suggested, but not required reading.

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

Other resources

Course Materials Online

We will use Moodle to post grades and materials that require restricted access (like homework solutions and surveys). All other materials for the course will be linked from Moodle, or in Subversion repositories that we will create for you.

Some of the materials on Moodle are actually links from Moodle to pages on the Rose web server, so you can access them directly without logging in to Moodle. We highly recommend that you bookmark that page in your browser, so that you do not have to log in to Moodle to get to the schedule page, etc.

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 to allow 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 Moodle 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 this course to receive the 8 credits for the course. You also need to earn a C or better to meet the prerequisite requirements for CSSE230.

 
Weight Criteria
5% In-class quizzes
40% Weekly assignments (programming and written) and the capstone project:
  • The weekly assignments are worth 25%.
  • The capstone project is worth 15%.
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 at multitasking as they think they are! (Rubinstein et al., "Executive Control of Cognitive Processes in Task Switching", 2001; http://www.apa.org/pubs/journals/releases/xhp274763.pdf)

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 Delvin Defoe, based on lots of wording and format from Matt Boutell, Curt Clifton and Claude Anderson.

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