Fall 2018 – 3.0 Units
2018-08-09 through 2018-05-05
Class time: Wed Afternoons, 16:20 – 18:50
Location: Doolan Hall 112 [Keck Lab]
Dept. Admin.: Jacqi Davis
Doolan 101, 310.338.7351
Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100

CMSI 401 Syllabus/Course Description Page

Prerequisites: none
Instructor: B.J. Johnson
Office Hours [Doolan 220]: Mon 14:30 — 17:45
Tue 14:45 — 17:45
Wed 14:30 — 16:00
Thu 14:45 — 18:00
Other hours by appointment

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

Course Description from the Latest University Bulletin

Design and implementation of large programs in a group setting, including use of the Unified Modeling Language (UML) for specifying, visualizing, and documenting models.


There are no academic prerequisites for this course. HOWEVER: that being said, in order to have a successful project, you will need to apply ALL of the knowledge you have acquired and accumulated throughout your LMU computer science courses. So in effect, the prerequisites are successful completion of ALL of your prior course work.

Note that the course description above is not very specific.... there is more detail below!

Software Engineering, like anything else, takes practice. You should be willing to make mistakes, to learn how to fix them, and to learn not to be afraid of them. Humans [and now even computers!] learn by making mistakes, and this is the place to do so without fear.

Course Objectives

The main objective of this course is to introduce the students to the essential software engineering principles that guide the design, development, implementation, and management of modern software projects. The emphasis is on real-world application of these principles so that the student will be prepared for what to expect in the professional job environment. The course introduces the topics through lectures and by offering the opportunity to design, implement, and manage a medium-sized group software project.

A further goal of this course is to present the students with the rationale behind the concept of software engineering as a discipline, to aid in a more fully functional understanding of the context in which the process-related concepts are applied.

Frequent references to the Unified Process and the Agile development method, along with acquaintance with CMMI, TDD, and several other methodologies, will help the student understand these important design philosophies. Some use is made of the Unified Modeling Language [UML] in lectures, several assignments, and some project documentation.

A further development of this course is the inclusion of outside customers as well as year-long group projects. The former allows for real-world experience in working with a customer or client who has specific business needs for software; such exposure includes aspects of determining customer needs, providing the customer with regular updates and progress demonstrations, and [most importantly] delivering the completed application to the customer's location and installation to verify that it works correctly. Additionally, the idea of the capstone project has been extended so that the group project can be spaced out over a full year.

Another addition to this new philosophy is the inclusion of interdisciplinary projects which include elements of mechanical and/or electrical engineering, which need software as part of the integrated system. Several of these were sent out already over the summer. Representatives from those projects will also be coming in on the first day of class to present proposals and answer questions.

Course Topics

Topics covered in the course include most, if not all, elements of the software engineering life cycle and development process, including the following topics [list order not significant]:

The scale [scope] of the semester [or year-long] group project makes this course rather intensive. The group nature of the project makes it essential that each student fully participates in every aspect of the class. Students are expected to be prepared for this type of environment going into the course; thus, it is in the students' own best interest to attend every class meeting.

PLEASE BE AWARE OF THE FOLLOWING: the nature of software development when you are in the workplace has lots of non-coding activities. These will be a part of your work for the semester, so do not misunderstand – those activities are JUST AS IMPORTANT TO THE SOFTWARE ENGINEERING PROCESS AS WRITING CODE. You will be given ample opportunity to work on your code during many of the class times, BUT NOT ALL. You are expected to work on your code, and other related activities OUTSIDE OF THE CLASS.

Course Prerequisites

Although there are no specific academic requirements for the course, all students must have a mastery of some high-level programming language such as C++, C#, JavaScript, Swift, Python, Java, etc. All students must be prepared and willing to actively participate in the class discussions, and in all group project meetings and activities.

It is highly recommended that all students have a good grasp of fundamentals of the concepts that will be required/applied for the group project that will be completed, in order to have the greatest chance of completing the project successfully. In other words, be wary of doing a project using Swift or Objective-C or Android development if none of the team knows anything about those technologies. This is a question of proper project 'scope'.

Expected Work For This Course

…and *I* promise to:

Software Development File [SDF]

All group project information is to be neatly organized in a public GitHub repository, so that the professors in our deparment can see what you are doing. We will be making commits to things, suggestions for things, and other inputs into the process as time goes on, and it is mandatory that there be access. In addition, starting with a Git repository from the Git-Go [see how I worked that in there?!] will help you maintain your work — it is exactly what GitHub is designed to do, and will be what you must do in your jobs after school on project teams in the industry. You may as well get used to it now, if you aren't already.


The SDF should be complete and up to date for every class, and might be spot-checked at any time. If there are corrections in process they should be so indicated. In addition, all documentation that is created must be checked into your Configuration Management repository.

By the way, when you see Configuration Management Repository in these pages, you can safely substitute the words Git, git, or GitHub with no loss of fidelity [unless for some odd reason your team elects to use another repository system like SVN or Continuus].

Examinations and Assignments

There is neither a mid-term exam nor a final exam for this course; instead, the final project presentation and demonstration serves the purpose of the exams, and the deliverables replace tests during the semester. The final presentation will be 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 below. Finally, other professors will be invited to all of the presentations, not just the final presentation, and will be asked to provide the students with questions about their project designs, and to make presentation suggestions.

There will be one or two written assignments from past texts and other sources during the course of the semester. The following caveats apply:

All written textbook assignments are expected to be handed in at the start of class on the date the assignment is due. 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 has been made to ensure assignments, deliverables, and due dates are prominently posted on these web pages, and announced in class; it is the student's responsibility to make sure s/he knows what is due and when it is due. You may turn an assignment in late, but it will be reduced in grade by one letter for each day it is late.

The final words on assignments: we treat this stuff seriously, just like it would be treated in a real job in the industry. Therefore, spelling and grammar, proper punctuation, and so forth all count for every assignment. If you already excel at these details, you are ahead of the game!

Textbooks and Resources

There are two textbooks for this course. The first is required, and the second is optional, but recommended:

  1. Head First Software Develoment
    Dan Pilone & Russ Miles
    ISBN-13: 978-0-596-52735-8
    ISBN-10: 0-596-52735-7
  2. UML Distilled Third Edition
    Martin Fowler
    ISBN-13: 978-0-32-119368-1
    ISBN-10: 0-32-119368-7

The Head First book provides you with an in-depth look at the Agile Software Development Process, better known as simple Agile. It is also a fun read, lots of pictures, easily understandable but well-written text, and a bit of silliness to keep you engaged. You can probably read the entire book in about 4 hours. There will be ONE written assignment from this book, and you will be expected to know and understand the material it contains, and you will be using the Agile method during the course of the semester to develop your projects.

The UML book provides you with a very concise reference for using the Unified Modeling Language to document and communicate your project design. This is a somewhat controversial topic, both within the LMU computer science department, and in the industry at large. Many people thin, that UML is completely obsolete. Just as many people do not agree. For this reason, I will acquaint you with the basics of this language, so that you will know it when you see it in the wild, and so that if you are called upon in your job to use it for documentation pyurposes you will have an understanding of how to do it properly. I recommend this book for your desk reference set.

Also Recommended …

There is a HUGE number of books covering issues related to the topic of software development and project management. Here are several that are considered beneficial, in no particular order:

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 Grade 80%
Homework and paper/synopsis assignments10%
Project Poster Grade 5%
Class Participation 5%

Your final grade for the project will be weighted by deliverable sections; in other words, the 80% of your course grade is broken down as follows:

Deliverable SectionWeight
Project Proposal Document/Presentation 5%
Requirements Specification Document 8%
Development Schedule [in SDP; 2 deliveries] 2%
Software Development Plan [SDP] 5%
Software/Database Design Description [arch. view] 5%
Preliminary Design Review [PDR] Presentation 5%
Software/Database Design Description [detail view] 10%
Critical Design Review [CDR] Presentation 5%
ALPHA/BETA Presentation and Demonstration 10%
Unit/Integration/Acceptance Test Plan 5%
Users Manual [2 – 3 deliveries] 6%
Final Product Delivery [SDF] and Presentation 30%
Oral and Written Status Reports 4%

Final letter grades for the course will be assigned based on the following scale:

PercentLetterRating and Achievement
91 - 100% A / A- Professional work; outstanding
81 - 90% B+ / B / B- Entry level work; above average, shows extra effort and interest
71 - 80% C+ / C / C- Satisfactory work; expected with reasonable effort
61 - 70% D Substandard work; minimal effort shown
60 or lessF Thank you for playing; see you next semester

New for Fall 2016: Minimum Grade Requirement for LMU Core Curriculum Courses

Effective Fall 2016: To satisfy a Core requirement [other than a flag requirement], a course must be completed with a grade of C- or better. To satisfy a flag requirement, a course must be completed with a grade of D or better. Baccalaureate Degree Requirements, 2016-17 University Bulletin.
Should a student receive a D in a Core Curriculum course, the student will earn the course units, but the Core Curriculum requirement [except for flags] will not be met.
Important to Note: This policy does not affect any grade received prior to Fall 2016. Those grades of D earned in Core Curriculum courses prior to Fall 2016 will remain on record as having met the Core Curriculum requirement. This policy only affects grades awarded in Fall 2016 and beyond.

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.

Leave of Absence/Withdrawal: Please read the revised policy here:

All work is evaluated for both technical merit and quality of written and/or oral presentation, as well as participation of team members. Written reports with multiple spelling errors and/or grammatical errors will be given back ungraded. Find yourself a good spelling and grammar checker, or a trusted human editor, if you have difficulty with the rules of standard English language usage. Another excellent resource is the Academic Resources Center, located on the south side of Daum Hall. The center takes appointments, and also allows drop-in consultations, and they have a number of good benefits which you can check out at this link. Note that their website says you are entitled to 50 minutes of free tutoring per class per week! 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. LRC is on the other side of the building from that.]


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. It is the job of each student to properly structure, comment, and indent, to select proper names for variables, and to not "hard-code" values.


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 http://academics.lmu.edu/honesty.]

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 http://www.lmu.edu/dss 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 Departments Website.

Expectations for Classroom Behavior

Electronic Devices: Without being totalitarian about it, because I forget sometimes myself, but I would prefer that you turn off your cell phone ringer during class. Cell phone ring tones and text message tones can become disruptive. If you have a laptop, I don't mind if you want to IM with your friends or surf the Internet during class time, but be aware that 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, but it's really up to you to decide. Just please keep the volume off so that you don't disturb others.

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 more safety information and preparedness tips, visit http://www.lmu.edu/emergency.

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, 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 lined 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..

Office hours depend on the class hours for that semester. This page will be updated to reflect the current information as it becomes available, and I'll also update the You Can Book Me site.

YOU SHOULD CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's lion.lmu.edu 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.