CMSI 402 Course Syllabus Page
Spring 2020 — 4.0 Units
2020-01-13 through 2020-05-09
Monday Afternoons, 16:20 - 18:50
Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100
Dept. Admin.: Gina Konrad
Doolan 101, 310.338.7351

CMSI 401
(Software Engineering Laboratory)
consent of instructor
and department chair
Professor: B.J. Johnson, PhD

Office Hours:
Tue & Thur, 10:00 - 12:30
Tue & Thur, 14:30 - 17:30
Wed, 14:30 - 17:30
Office Location: Doolan 220

[Dedicated to the memory of Professor Phil Dorin, teacher, mentor and friend.]

Course Description

From the online version of the LMU Bulletin:

Analysis, design, implementation, and presentation of a large-scale, individual project, demonstrating mastery of the computer science curriculum

What this really means is, students will individually propose, architect, design, build, and present a software project that is original, non-trivial, and which makes full use of all topics encountered during their academic computer science career at LMU. This list includes, but is not limited to:

  • Object-oriented Analysis and Design
  • Graphics and User Interface Design
  • Web programming including Front End Development
  • Databases and Database Integration
  • Networking, SOA, SaaS and Distributed Systems
  • Client/Server Model of Content Providing
  • Web 2.0 Technologies
  • Mobile Computing including Phone and Tablet Platforms
  • Embedded software
  • Configuration Management.
Men Working

Course Objectives and Learning Outcomes

In this course, the student will propose, design, construct, and present an entirely original non-trivial software project that demonstrates mastery of the various topics learned during the previous semester in CMSI 401. The idea of this course is to show you can successfully conceive of, design, implement, document, and present a medium-size software application; a further goal is to expose you to the concepts of the software engineering discipline, by class lecture and by actually doing.

Computer games are frequently presented, but they are by no means the only project ideas. Further, for the last couple of years, this individual senior project class has been expanded to allow students to continue their group project development if desired, and beginning this year [2019] the class also introduces an aspect of combining multi-disciplines, with several CS project teams working with Electrical and Mechanical Engineering majors to produce their resulting applications. Finally, for the last several years, the course has also been involved with the Entrepreneurship program at LMU, to produce viable products that can be taken to the market place; this expansion has even spawned several start-up companies.

Another goal of this course is to expose the students to two different software development methodologies, the Agile Method and the Capability Maturity Model, Integration®. Since both of these disciplines are currently used in industry, it is important for the student to have the experience of both philosophies. Either method (or perhaps one of several other methodologies) will be used for project development in this class.

A further goal of this laboratory course is to learn more about software project management. This topic includes being able to estimate such things as the amount of time a project will require for the various phases of its development, and the related cost associated with this time requirement.

You should produce a project which:

This course is open to Seniors in Computer Science who are preparing to graduate from LMU and have completed the CMSI 401 Software Engineering Laboratory course. The scale of the semester project, and the individual nature of its development, require all students to put forth significant effort. The overall learning outcome is five-fold:

  1. To create a significant, original and working project within a single semester
  2. To learn and to use the software engineering disciplines in a successful manner
  3. To present a working project to faculty, industry members, and family
  4. To apply and integrate most or all of the major computer science concepts from the curriculum
  5. To have some fun!

What You'll Need for Success . . .

All students must:

Part of the class is for each student to make several oral presentations of a professional nature, including a slide show which is to be constructed with some sort of presentation software [such as Open Office Impress, Google Docs, Prezi, or even gasp Powerpoint].

puzzle pieces It is highly recommended that you have a good grasp of the fundamentals, concepts, and implementing technologies required/applied for your project, in order to have the greatest chance of completing the design successfully. In other words, don't attempt to do a project using React or Swift if you don't know anything about React or Swift. This is a question of proper project "scope". I will work with you to try to insure you don't over-reach [or under-reach] yourself by attempting a project which is too much [or too little] to complete in one semester.

When You Finish This Course [Course Goals]. . .

At the successful completion of this course, students will:

  1. Understand the different software development life cycle models
  2. Be able to apply engineering discipline to requirements analysis
  3. Apply engineering discipline to software system design, testing, and maintenance tasks
  4. Know the difference between good and bad software architecture
  5. Be able to engineer all aspects of a software project
  6. Understand the philosophy behind CMMI, PSP, and several other heavyweight development methodologies
  7. Understand the philosophy behind Agile, Extreme Programming, Test Driven Development, and similar lightweight development methodologies
  8. Know how to verify and validate a software system
  9. Obtain experience in software project management and estimation
  10. Know how to work hard while having fun with software development
  11. Many smaller things that are too numerous to list

Textbooks and Resources

There are three textbooks for this course. The first is required, and the others are recommended. Prices shown are as of when I last went and looked them up:

  1. Beginning Software Engineering
    Rod Stephens
    ISBN-13: 978-1118969144
    Library call no.: QA76.758
    Available free on LMU's Electronic Library (Ebrary)
  2. UML Distilled Third Edition
    Martin Fowler
    ISBN-13: 978-0321193681
    Paperback from Amazon for $13.00 (other sellers as low as five bucks)
    Kindle edition from Amazon from $24.99
  3. Head First Software Development
    Dam Pilone and Russ Miles
    ISBN-13: 978-0596527358
    Paperback from Amazon for $15.38 (other sellers as low as $11.00)
    Kindle edition from Amazon from $8.06

The Stephens book provides details that are useful for an object-oriented approach to software project development. It is structured in two parts; the first section describes the basic tasks you need to deliver software which is useful, fully functional, and provides user value. It covers the details of requirements, design, architecture, integration, testing, verification/validation, and close-out. Note, however, that although there is a focus on object oriented development, there is NOT a bias toward any particular software life cycle or development methodology. The second part of the book presents details and differences between several of the most widely-used software development life cycle models. Since we have focused on a lot of the first part during last semester's class, we will spend SOME time on section one, including required readings and homework assignments, with some classroom discussions of the material in these chapters, and possibly a quick quiz or two. It will be useful to you (and to your class participation grade) for you to do the reading. Further, all of the homework assignments made during the semester are selected problems from this book which apply to the software engineering discipline and which reinforce the concepts presented during class.

The UML book, although it is not required, is very useful for understanding and presenting design issues which are covered as part of your project. All student presentations will include detailed design diagrams which are expected to be in UML format. You will know how to design in UML when this course is over! Ve vill beat it into you! …and you vill enjoy it!

Finally, the Head First book, also not required, is a very down-to-earth explanation of all things Agile, including topics such as planning poker, sprints/iterations, burn-down graphs, and velocity. It also makes a very good desk reference for your careers later. And yes, this is the same book you used in CMSI 401 last semester.

Also Recommended . . .

There is a FREAKIN' HUGE number of books, papers, dissertations, monographs, and other types of publications covering issues related to the topics of software development and project management. Some are a bit dated by 2015 standards, but are still here because many of the concepts they present are still relevant. Here are several that are considered beneficial in no particular order:

  • Software Engineering
    Ian Sommerville
    ISBN: 0-201-39815-X
  • Software Engineering Project Management
    Edited by Richard H. Thayer
    ISBN: 0-818-68000-8
  • The Mythical Man-Month
    Frederick P. Brooks
    ISBN: 0-201-83595-9
  • Understanding UML: The Developer's Guide
    Paul Harmon / Mark Watson
    ISBN: 1-55860-465-0
  • Designing Software Product Lines With UML
    Hassan Gomaa
    ISBN: 0-201-77595-6
  • Project-Based Software Engineering
    Evelyn Stiller / Cathie LeBlanc
    ISBN: 0-201-74225-X
  • A Discipline for Software Engineering
    Watts S. Humphrey
    ISBN: 0-201-54610-8

A number of good web sites provide helpful information on the topics which are presented in the course. These are listed below (and are links when viewing this information on-line). Also, check out the Bibliography Page of this web for more information.

Course Grading

Your final grade for the course will be weighted as shown in the following table. Note that the total project grade, which is itself a sum of parts, constitutes 80% of the total grade points available.

Evaluation ItemWeight
Total Project Evaluation 80%
Project Poster Evaluation 5%
Homework and other assignments10%
Class Participation 5%

Your final rating for the project itself will be weighted by deliverable sections as follows, to make up the 80% project contribution listed above:

Deliverable SectionWeight
Project Proposal Document/Presentation 5%
Requirements Specification Document 20% [2 parts]
Software/Database Design Description
Software Development Plan Document
20% [2 parts]
Oral and Written Status Reports 10% [5% ea.]
Design Review Presentation [dry run] 15%
Git Repo 'README' document/description 5%
Final Product Delivery and Presentation/Poster25%

Final letter ratings will be assigned based on the following scale:

PercentLetterRating and Achievement
91 - 100% A- / A Professional work, outstanding effort; hairy-chested, steely-eyed, killer software engineer
81 - 90% B- / B / B+ Above-average work; shows extra effort and interest
71 - 80% C- / C / C+ Satisfactory entry-level work; this is expected with reasonable effort
61 - 70% D Substandard work; minimal effort shown
60 or less F Thank you for playing; see you next semester

Class participation points will be assigned based on the following [somewhat subjective] scale:

Class Participation CriteriaValue
Absent without prior notification/agreement of professor0%
Present, demonstrates at least minimal preparation.
Knows basic reading facts, but may not show evidence of trying to interpret or analyze them; demonstrates little/sporadic class involvement.
Also includes absent with prior notification/agreement of professor.
Basically, you're in the chair, the points are there
Demonstrates excellent preparation to readings and other material.
Offers analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further.

Poster evaluations are done on three levels. If you turn one in as required, you will get the 5%; if you don't, you'll get 0%. The exception is if you turn in a poster that has spelling or grammar errors, and you fail to make any of the specified corrections before it is presented. Points will be deducted, since these are intended to be displayed on the hallowed walls of Doolan and are intended to mimic what you will do when you are out in the job world and present posters at conferences. Thus, evaluations will be assigned based on the following criteria:

Poster CriterionValue Assigned
No poster submitted0%
Poster submitted, but contains spelling/grammar errors3%
Poster submitted, and everything looks good5%

Note that for Spring 2020 the poster is not optional, since the final presentations will be done as a poster session. You will need to have a poster to display and talk to during the presentations, so that you'll have a visual to stand next to.

Incompletes and Other Evaluation Topics

An incomplete will be granted only when the student requesting the incomplete has completed at least 80% of the coursework, and has at least a B average in the course work completed. This is LMU policy, not mine!

Expected Work For This Course

Software Development Documentation . . .

When you get out into the work world, you will (often) find yourself producing documentation. Such is life – however, the Software Engineering Institute (SEI) has a standardized set of documents which you'll use parts of to make a 'notebook' of design documents. [Update note: The SEI has moved the CMMI products, services, and descriptions to a a new website. There are also lots of CMMI-related links and training materials on the original site.]


In the past, the documentation was kept in an actual physical notebook, called, by turns, the Software Development Folder, the Software Development Notebook, or sometimes the Development Library. In the modern development environment, all that stuff is kept on line, so the expense and hassle of hard copy documents is dispensed with. The one caveat to this is that your online repository must be accessible to the professor for evaluation and feedback purposes (no duh!).

However you decide to keep your information, it is collected periodically during the semester to check project progress (this is part of the deliverable system). It is handed back at the following week's class meeting for hard copy, or notification will be provided at the completion of grading for soft copy. Notebook content and formatting, along with a handy template for the table of contents, is provided on the course documents page for your convenience.

You are expected to use some sort of word processing software or on-line tool to create your project documentation. Any tool you like, or with which you are familiar, is fine. The use of LaTeX is often recommended if you are producing hard-copy documents, since it is an industry and academic standard; however, you are free to use whatever application you like for this purpose, including GitHub markdown language.

Note: You must follow the numbered outline format for all documents, wherever it is possible to do so. This format will be explained in class.

You will need to keep your project in a configuration managed repository. Usually here at LMU, that means using Github. Make sure that your git is accessible to the instructor so that it can be graded. Also, don't wait until the last week or two of class to check in your code; doing so will cause a lower grade, since the code is expected to be visible all during the semester to observe the development of your project. Finally, make your project public if at all possible, and add your professor to it as contributor, so that it is visible to the world to represent LMU. Also, DON'T FORGET the importance of a tood file!

Examinations and Assignments . . .

There is no mid-term exam and no final exam for this course; instead, the final project presentation serves the purpose of a final exam, and the deliverables replace tests during the semester. The final presentation is done (as I'm sure you all know) in front of as many faculty, alumni, and selected invitees from industry as can attend, as well as family and friends of the students. Grades for the course are assigned according to the weighting factors shown in the tables above. Additionally, other professors will be invited to all of the presentations, not just the final presentation, and will be welcome to provide questions and comments about your project designs and make suggestions to enhance your presentations.

There will be several written assignments from the text and other sources. Normally, textbook assignments are handed in (or made available) at the start of class on the due date. Deviation from this process requires prior consent of the instructor. "I left my homework at home" is no longer a valid reason for late work. You're grown-ups now, and can be responsible for remembering what you need to remember. Every effort is made to ensure assignments, required deliverables, and due dates are prominently posted on these pages; it is your responsibility to make sure you know what is due and when it is due.

You may turn assignments in late, but they will be reduced in grade by one letter for each day they are late. Day means day, not workday or class day; an A+ homework due on Thursday which is not turned in until the following Tuesday will get a failing grade, unless prior arrangements are made.

The text book reading assignments are available here. The text book written exercises are available here.

Also of note…

An incomplete will be granted only when the student requesting the incomplete has completed at least 80% of the coursework, and has at least a B average in the course work completed. This is standard LMU policy.

Leave of Absence/Withdrawal Policy:

Please read the revised policy in the University Bulletin.

All work is evaluated for both technical merit and quality of written and/or oral presentation. Find yourself a good spelling and grammar checker, or a trusted human editor, if you are having any difficulty with the rules of standard English language usage. Another excellent resource is the Academic Resource Center, located on the south side of Daum Hall. The center takes appointments, and also allows drop-in consultation sessions, and they have a number of good benefits. Call (310) 338-2847 to schedule an appointment. (For those that don't know, Daum Hall is the building where the LMU Security and Parking office used to be. ARC is on the second floor.)

Another thing to remember is, your coding style is an important part of your assignment evaluations. I WILL NOT HESITATE to take points off for code that has hard-coded number


In this class, documentation which is not of professional quality is no longer acceptable. Spelling, grammar, and internal document consistency all count and will cost you big-time if not correct! I will not hesitate to knock off a full letter grade on an otherwise perfectly correct assignment if there are egregious and/or numerous spelling/grammar errors. In addition, coding style will play a large part in determining the grade on the code for the homework and project. It is the job of each student to properly structure, comment, and indent, to select the proper names for variables, and to not hard-code values. NO MAGIC NUMBERS!


Academic Honesty and Integrity

Academic dishonesty will be treated as an extremely serious matter with severe consequences that can range from receiving no credit for assignments/tests, failing the class, to expulsion. It is never permissible to turn in any work that has not been authored by the student, such as work that has been copied from another student or copied from a source (including the Internet) without properly acknowledging the source. It is your responsibility to make sure that your work meets the standard set forth in the Academic Honesty Policy (see

Cheating on assignments, plagiarism, falsification of data, and other similar or related violations of LMU standards of honesty and integrity ARE NOT TOLERATED. Any student or students who commit such offences will receive a failing grade for that assignment, possibly a failing grade for the course, and conceivably further disciplinary action. It is acceptable to use code from textbooks, friends, coworkers, or other sources, as long as the source of the code is cited/acknowledged in all reports and source file headers.

This does not mean that collaboration is discouraged; in fact, the "pair programming" paradigm is encouraged. However, this does mean that exact duplicates of reviews and write-ups turned in by more than one student as individual work, or uncited copying from the Internet or any other source, will not be allowed. Such a situation will be dealt with in the manner outlined above. In short, if you are responsible for your own work, do your own work.

Repeat: failure to follow this simple guideline will result in a failing grade on that assignment, likely failing grade in the course, and quite possibly further disciplinary action.

Special Accommodations

Students with special needs who require reasonable modifications, special assistance, or accommodations in this course should promptly direct their request to the Disability Support Services (DSS) Office. Any student who currently has a documented disability (ADHD, Autism Spectrum Disorder, Learning, Physical, or Psychiatric) needing academic accommodations should contact the DSS Office (Daum Hall 2nd floor, 310-338-4216) as early in the semester as possible. All discussions will remain confidential. Please visit for additional information.

Respect For Self And Others

As an LMU Lion, by the Lion's code, you are pledged to join the discourse of the academy with honesty of voice and integrity of scholarship and to show respect for staff, professors, and other students.

The following LMU documents are available to reference:

For more information on this or any other conduct issues, please refer to the Student Codes and Policies section in the Community Standards. The Lion's Code, Student Conduct Code, Honor Code and Process, and information on many other policies are available from that link. You can find any and all other related data from the Office of Student Conduct & Community Responsibility web page. Also check the main Student Affairs Department Website.

Expectations for Classroom Behavior

Electronic Devices: Without being totalitarian about it, because I forget sometimes myself, I would prefer that you turn off your cell phone ringer during class. Cell phone ring tones and text message tones can become disruptive. I know from experience!

If you have a laptop, I don't mind if you want to IM with your friends or surf the Internet during class time. It's up to you, but be aware that I was shopping for new shoes will not be accepted as a valid excuse if you are called on and don't know what we're talking about — this could be a contributing factor for a low class participation grade for that day. In addition, if something funny happens on your laptop that isn't class related, PLEASE REFRAIN from laughing or disturbing the others around you; it's distruptive to the class as a whole.

This kind of activity is disrespectful, but it's really up to you to decide for yourself. Just be aware of the possible effects and consequences, and please keep the volume off so that you don't disturb others [or your humble professor].

Emergency Preparedness

To report an emergency or suspicious activity, contact the LMU Department of Public Safety by phone (x222 or 310-338-2893) or at the nearest emergency call box. In the event of an evacuation, follow the evacuation signage throughout the building to the designated safe refuge area where you will receive further instruction from Public Safety or a Building Captain.

For purposes of evacuating the building, our safe area is the sunken gardens, so if we must leave the building, please head down that direction. There will be people to guide you.

For more safety information and preparedness tips, visit

Office Hours / Communication / Contact Information

I have office hours during the days when I have classes, Monday through Thursday. The normal hours are listed at the top of this syllabus page. I will make every effort to be available during those hours, and if I cannot for some emergency reason, I'll make sure you all know about it in advance if possible. My office is Doolan 220, on the second floor, and the normal office hours are posted on the small cork bulletin board to the right as you are facing the door. Office hour data is posted there in redundancy to the posted hours on this syllabus page. Brought to you by the Department of Redundancy Department.

Every effort will be made to be availble during these posted hours. If something changes, I will notify you in advance, when possible and as soon as possible, via an e-mail blast.

In addition, if you want specific [undivided] attention, you can set up appointments at my You Can Book Me site. Just visit the page and click on any available slot (which isn't greyed out), then enter your information in the window fields. We will both get a confirmation e-mail, which is my notification that you'll be coming in. Easy, huh!?

I am also always available by e-mail at either of the following addresses:

I check email at both these addresses at least twice a day, usually three times a day. In addition I am frequently on line for AIM chat sessions after 9:00 PM; my screen name is NanoBeej, or for Google chat sessions at the above address..

YOU SHOULD CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's email addresses. If you specifically provide me with a preferred alternative email to use I will be happy to oblige. I create a distribution list to which I send all general communications, so it is important for me to have an email address which you will check on a regular basis.

Tentative Nature of the Syllabus

If necessary, this syllabus and its contents are subject to revision; students are responsible for keeping up with any changes or modifications, which will be distributed either in class or using the normal (specified) communications channels previously described (usually via e-mail).