Simply stated, software development deals with the difficult task of implementing what is often a poorly defined but greatly desired software application. Software developers must analyze what their clients really want, design a system which 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 have 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 deal with this task using the techniques of Object-Oriented programming. We will approach software development by first studying a notation (UML) which allows us to describe many aspects of the software development process, doing this with an eye to commonly understood best practices.
You will learn software development by practicing it in the context of actual projects with Gustavus clients. These will be web-based projects using JavaServer Pages (JSP) technology, a technology from Sun which allows the programmer to create dynamic web content. You will also learn the basics of databases, as we will use MySQL as the database backing these applications, and JDBC to connect JSP to MySQL.
Finally, I will introduce you to various other technologies (HTTP, HTML, javadoc, CVS, Ant, etc.) which are part of the arsenal of software developers as the try to contain the complexity of their evolving software systems.
My office is Olin 312. For office hours, see my schedule. You may send me electronic mail at email@example.com or call me at extension 7479.
All course materials will be available through my World Wide Web page. The URL for this course is http://www.gustavus.edu/~karl/courses/mcs270-s08/. This will be an "electronic course", and I will give hardcopy handouts only to those students who want them.
I will keep a provisional class schedule giving assignments, due dates, topics, a test and readings. Since this will be updated throughout the semester, please be sure to reload the schedule page.
Our text will be Object-Oriented Modeling and Design with UML by Michael Blaha and James Rumbaugh.
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.
We will have several labs throughout the semester. In some cases, these will be one-shot, check-off labs involving a specific tool (e.g., CVS). In other cases, they may be longer labs that will be graded.
You will work in groups on a project coming from clients at Gustavus. However, I am going to structure how this is done a bit differently this year. In the last few years, the first half of the semester was devoted to coursework, with regular class and lab meetings, whereas the second half of the semester was entirely devoted to the projects, so that there were no class meetings then. This year, we are going to revise/update/improve a project that was done several years ago as a class, and use it as an example for how the software development process works. Hopefully, this revision will be mostly completed during the first half of the semester
During the second half of the semester, I will have you work in groups on various projects. 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.
Attendance is mandatory for all lab sessions, unless you have already turned in your lab report. Similarly, I expect you to show up regularly for the classes, since they will involve discussion and material from the book. In the second half of the course, your project team's weekly meeting with me will be covered under this attendance policy. I reserve the right to reduce your grade as I see fit for habitual lateness and non-attendance.
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.
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.
Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if I have been especially unjust.
All lab reports, homework, and projects should be readily readable, and should not presuppose that I already know what you are trying to say. Use full English sentences where appropriate (namely almost everywhere) and clear diagrams, programs, etc. Remember that your goal is to communicate clearly, and that the appearance of these technical items plays a role in this communication process. Be sure your assignments are always stapled together and that your name is always on them.
Please contact me immediately if you have a learning or physical disability requiring accommodation.