MCS 270: Object-Oriented Software Development (Spring 2010)

Course Description


Course objectives

Software development deals with the difficult task of designing and implementing large software applications. Software developers must analyze what their clients really want, design a system that will accomplish those goals, and deliver a product that will reliably meet those needs, all the while realizing that the system will often need to be maintained and extended by people who not been involved in the initial development. This means that the system should be designed in a way that is easy to understood by other programmers and amenable to extensions without radical modifications. This course will investigate software development through the lens of object-oriented analysis and design, and will involve the completion of a significant project for Gustavus clients.

In order to accomplish these tasks, I have several specific things I want you to learn, most notably Java and UML. Java is a powerful and widely used object-oriented programming language. One of my primary goals is that you become good Java programmers, and one of the textbooks and a lot of the lectures and labs will be devoted to that goal. Additionally, you will learn about the Java framework called Spring Framework, which will greatly ease your programming of web applications. UML (for Unified Modeling Language) is a standardized modeling language used in software development. The other textbook covers UML in the context of object-oriented analysis and design, and this will be the focus of a lot of the lectures and most (if not all) of the homework.

Additionally, I will want you to learn various tools and programming techniques such as IDEs (integrated development environments) like Eclipse, the web authoring languages HTML and CSS, version control systems like CVS and Subversion, and database access using SQL and JDBC. These tools and techniques will be the topic of some lectures and many of the labs.

Textbooks

  • Object-Oriented Modeling and Design with UML (2nd Edition), by Michael Blaha and James Rumbaugh
  • Core Java, Volume I -- Fundamentals (8th Edition), by Cay Horstmann

Course web pages

The best source of information about this course is available at http://homepages.gac.edu/~karl/courses/mcs270/10s, where you will find this course description, the tentative schedule, homework and lab assignments, contact information, and useful links.

Class structure

The semester will break down into two parts. The first part (roughly the first half of the semester, but perhaps a bit longer) will be in a standard format with classes on Monday, Wednesday and Friday and labs on Tuesdays. The second part will be primarily devoted to your projects, though there may be occasional classes. Instead of classes and labs, you will work with your groups and have regular meetings with me. See below for a description of the projects.

Absences

Attendance, both physical and mental, is required. I reserve the right to lower your grade if I feel you are missing or showing up late too often. Should you need to miss a class for any reason, you are still responsible for the material covered in that class. This means that you will need to make sure that you understand the reading for that day, that you should ask another student for the notes from that day, and that you make sure that you understand what was covered. If there is an assignment due that day, you should be sure to have someone hand it in. You do not need to explain why you missed a class unless there is a compelling reason to do so.

If you have influenza-like symptoms (temperature over 100 with headaches, sore throat, or cough), please call Health Service. If they say that you stay home, you should fo so, and I request (but do not require) that you email me.

Grading components and computation

There will be four components of your grade: labs, homework, a test, and your project. Each of these is explained in more detail below. Tentatively, I plan on determining your grade using the following percentages, though I reserve the right to adjust these percentages if feel that they don't accurately reflect the portion of your work they entailed:

  • 30% for labs
  • 10% for homework
  • 20% for the test
  • 40% for the project

Late assignments

All assignments are due at the beginning of class on the day indicated. Late assignments will be penalized by one "grade notch" (such as A to A- or A- to B+) for each weekday (that the college is in session) late or fraction thereof. However, no late assignments will be accepted after graded assignments are handed back.

If you are too sick to complete an assignment on time, you will not be penalized. Simply write "late due to illness" at the top of the assignment, sign your name and hand it in. Other circumstances will be evaluated on a case-by-case basis.

Labs

There will be two types of labs in this course: check-off labs and lab projects. Check-off labs will detail certain activities that you must complete in order to learn the topic under consideration. There will be some several tasks you need to finish in these labs that I will need to "check off" on, hopefully during the lab hour. If you don't complete these during the lab, you will need to do them before the next class. Unless otherwise specified, all check-off labs should be done individually.

I will also assign you several lab projects which will take 1-2 weeks each. You may use the lab days for working on these, once you have finished the check-off lab. Some of the labs will be done individually, while others will be done in groups.

Homework

I will give you mastery homework problems from the textbook, which will be graded on a 0/1 basis (not mastered/ mastered). You may hand them in as often as you want, subject to the following constraint: with each assignment I will give a date by which a first attempt must be made, and another date which is the last date they may be handed in. Thus, for each problem that you have handed in an honest attempt by the former date, you can continue to hand in further attempts, up to the latter date. I will try to put comments on each non-mastered problem, indicating what is lacking for, and invite you to come talk with me if you are having difficulties.

Test

There will be one test, which will occur somewhere around mid-term. I am planning to focus the test on Java, UML, and perhaps object-oriented software design.

Project

You will work in groups on a project coming from clients at Gustavus. Most of this work will be done during the second half of the semester. As a result, class and lab meetings will be less frequent, and instead, I will be meeting with each group typically twice a week to go over the progress you are making on your projects. However, we will have occasional courses during the second half of the semester.

Academic integrity

In this course, you are expected to to adhere to the highest standards of academic honesty, to uphold the Gustavus Adolphus College Honor Code, and to abide by the Academic Honesty Policy. Copies of the honor code and academic honesty policy can be found at the Academic Information and Policies web page.

Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to assignments should be original work done by the individual or team, as specified by the assignment. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding, as well as to be intolerably dishonorable.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.

The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be be properly cited.

One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the reports; this can be in the form of a "minority opinion" or "dissenting opinion" section where appropriate.

Accessibility

If you have physical, psychiatric/emotional, medical, learning or attentional disabilities that may have an effect on your ability to complete assigned work, please speak with the Disability Services Coordinator, Laurie Bickett, in the Academic Advising Center. She will work with you to review any concerns and decide what accommodations are necessary. If you need accommodations, please let me know as soon as possible.