LMU | CMSI 688
OBJECT TECHNOLOGIES
Syllabus • Summer, 2001
Ray Toal
rtoal@lmu.edu
Doolan 110
310.338.2773
Mondays and Wednesdays
7:10 p.m. – 10:10 p.m.
Doolan 219
3 semester hours

Objectives

To study object-oriented philosophy and its applications in analysis (OOA), design (OOD), programming languages (OOPL), and databases (OODB); to see how componentware is fast becoming the successor to object-orientation; to learn how to architect, design and describe complex software systems (including distributed systems); to learn how to apply design patterns. The course has a very strong practical orientation: we will focus on how to design professional, efficient, software in Java and C++ using design patterns and component technology (COM, Java Beans, etc.), and describe systems using UML.

Prerequisites

A previous course in Programming Languages, such as CMSI 585 or its equivalent, is probably necessary; in its place you may get away with some significant programming experience, familiarity with programming methodology, and the ability to understand and intelligently criticize programming language features. A second prerequisite is the unconditional desire to break bad programming habits picked up from programming in languages like FORTRAN, C, and Pascal.

Readings

There are two required textbooks from which you'll get reading assignments:

There are no required textbooks for learning Java, C++, COM, Enterprise Java Beans, or even the basics of Object Orientation. If you want books covering these topics you can choose your own favorite. I'll be more than happy to suggest texts. I like Eckel's Thinking In Java the best for learning Java, think Stroustrup's 3rd Edition is essential for any serious C++ programmer, and think that Monson-Haefel's is the best for EJBs. Lau's The Art of Objects is a good OO concepts book. I haven't seen any easy \"getting started with COM\" books, but \"Dr. GUI's Gentle Introduction to COM\" on Microsoft's website is actually decent.

More advanced readings can be found in the References section of the textbooks. Also be sure to look through recent OOPSLA and ECOOP conference proceedings, as they are full of great papers.

Additional papers and readings will be assigned throughout the course (including my own course notes, practice problems, and sample code). If you have projects or papers to work on, you'll have to find some additional readings on your own. Use judgment when researching on the web; a fair amount of information is often wrong, and much of the so-called sample code is especially atrocious. Regardless, you must take the time for effective self-study that includes practicing the craft of programming.

Assignments and Grading

You'll have several homework sets containing in-depth theoretical questions and non-trivial programming problems, and quizzes and a final exam with less difficult material. Graduate students have to write an eight-page research paper on a topic of their choice full of references to journal articles that they have actually read! Undergraduates will have to implement a project in a relatively obscure pure object language or prepare a highly detailed slide show on design patterns or UML. To help prepare you to meet industry expectations for college graduates, most assignments will take the form of open source software products. Unless otherwise specified, you are required to keep all work in your CVS repository and prepare all homework solutions with LaTeX document preparation system. Exams will cover material from lectures not previously assigned for homework: don't whine about this.

Generally, coursework may be done in groups of no more than two students; however, while only one solution set is turned in per group, both students are responsible for understanding all of its content and may be asked at any time for an oral explanation of any solution. Collaboration with other groups is fine but must be limited: you may share ideas and approaches but nothing resembling a solution (not even pseudocode). You must also acknowledge any help received. Academic dishonesty may result in expulsion; be certain your work meets the standards set forth in the LMU Honor Code.

Your final grade will be weighted as follows:

Homework sets
36 pts.
 
Paper, Project, Presentation
17 pts.
 
Midterm
20 pts.
 
Final Exam
27 pts.
 

Letter grades are figured according to the usual scale: 90% or more of the total points gets you an A, 80% a B, 70% a C, and so on. These are minimal requirements; for example, if you get 82 points you are guaranteed a B- or better, though you might still get an A since 82 may be the top score.

Homework is due at the beginning of class; late assignments are docked 30% per class. Missing class just to get an assignment done on time will not be tolerated; the only good excuses for missing class are excellent surf conditions, family problems, sickness, and personal emergencies. Skipping class just puts your fellow students at an advantage: we often spend class time going over things that will be "on the exam".

Your programming style will play a huge part in determining your score on the programming assignments. I will not hesitate to assign D's or F's to working programs which are poorly structured, under-commented, have poor identifier names and abbreviations, contain inappropriate hard-coded values, or are not easily maintainable. Appearance of the grading policy in this syllabus constitutes fair warning of the consequences of poorly written code.

Topics and Tentative Schedule

University Links

All students will want to acquaint themselves with the useful information found in the following sources: