Fall 2020 — 3.0 Units
2020-08-31 through 2020-12-18
Class time: Wednesdays, 18:30 — 21:30
Class location: Zoom Meeting

Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100
Dept. Admin.: Gina Konrad
Doolan 101, 310.338.7351

CMSI 401 Syllabus/Course Description Page

[Consent of Instructor required]

Professor: B.J. Johnson, PhD
Office Hours: Monday, 10:00 - 12:00
14:30 - 17:00
Tue & Thur, 11:15 - 12:30
14:00 - 16:00
Wednesday 10:00 - 12:30
14:30 - 16:30
Office Location: Zoom Meeting

[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.

What does that even mean?!?

This is your senior capstone project course, which will be done as a group project. You will pick your own software application to implement. As a group, you will propose, specify, document, develop, present, and manage a piece of software which is non-trivial, encompasses all [or nearly all] of the concepts and technologies you have learned here at LMU, and which will be captured in a team github repository. You will be using many different tools, one of which MAY be the UML diagramming tool, but it is not required. More on that later.

In addition, what is NOT stated in the bulletin paragraph is that there is MUCH more to software engineering than just writing code and making it work. What this course is really about is the mindful, creative, disciplined act of creating a software application. As such, you will do the following activities:

Course Prerequisites

There are no academic prerequisites for this course in the LMU University Bulletin, as far as specific courses you must have taken first. HOWEVER: in order to have a successful project, you will need to apply ALL [or nearly all] of the knowledge you have accumulated throughout your LMU computer science courses. You will need, for example, concepts from/experience with: databases; web programming; JavaScript; Data Structures; P-lang; Interaction Design; and possibly more. All of you should be prepared and willing to actively participate in the class discussions, and in all group project meetings and activities.

Don't be afraid to take risks! There are SO MANY new and exciting technologies that are available now, and more being developed every day. This is a good place to learn and use them!! Remember that by doing this you will not only learn the new tech, but you will also learn how to learn and use new technologies when they appear on the scene.

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 in a Nutshell

The main objective of this course is to introduce you 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 you will be prepared for the professional job environment.

A further goal of this course is to present to you the rationale behind the concept of software engineering as a discipline, to aid in a more fully functional understanding of the process-related concepts. To that end, frequent references to the Unified Process and the Agile development method, along with acquaintance with CMMI, TDD, and other methodologies will help you understand these important topics so you will be able to recognize and apply them. 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 testing and verification WITH the customer to satisfy their need for the correctly working software product.


Another addition to this new philosophy is the inclusion of interdisciplinary projects which include elements of mechanical and/or electrical engineering, as well as Psychology, other science disciplines like physics or biology, and collaboration with the Entrepreneurship program from the CBA. There are often capstone projects from other colleges at LMU which need software as part of their integrated system. Representatives from those projects will also be coming in on during 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 REMINDER: the nature of software development when you are working in an industry workplace has lots of non-coding activities. A subset of 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 AND ENDING WITH A WORKING PROJECT. 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 as well as during provided times during class meetings.

Expected Workload

In accordance with the LMU Credit Hour Policy, this 3-unit course will require 9 hours of work per week, which includes the time spent in class and lab sessions. This work will consist of homework, a project, watching and commenting on some videos about software projects and related topics, and reading/study of textbook material.

What You'll Need for Success

good to go

What *you* will do:

  • Presentations during the course of the semester:
    • Project Proposal -- during class week 2
    • Preliminary Design Review -- during class week 7
    • Critical Design Review -- during class week 11 [may be part of:]
    • ALPHA/BETA Presentation and Demonstration -- during class week 14
    • Final Product Presentation with Demonstration -- week before finals
  • Complete implementation and demonstration of the group software project
  • Complete GitHub project repository documenting the group software project
  • Complete, verified installation at customer site [if applicable]
  • Periodic written and oral group project status reports
  • Participation in all class discussions, design reviews, and code reviews
  • Written reviews and oral discussion of one or two assigned readings
  • Several written homework assignments from the textbook
  • A project poster, suitable for submission to an academic or professional poster session

…and *I* promise to:

  • Ensure that learning outcomes for the course are clearly stated in this syllabus and are addressed during the semester
  • Be accessible and available during office hours and by appointment for interactive discussions, which can be one-on-one or in small groups
  • Provide constructive assistance and feedback to help you understand the material; such assistance and feedback can be via e-mail or text chat, or in person in slack or discord during office hours
  • Respond to you as soon as possible when I am logged in to chat, discord, slack, or any of the other communication channels but I DO have a life…
  • Challenge you to do your best work and improve your interest in the topics presented
  • Always let you know as early as possible in advance, whenever I can, if there are any changes to the course or related materials
  • Always allow you to take photos of the your screen or make recordings [not of the zoom variety] if you wish [more on that in class]
  • Do whatever I can to ensure you leave this course with more skill than you had when you came into it
  • Try to get you the help you need if you are stuck; NO ONE KNOWS EVERYTHING and there are technologies with which I am NOT familiar, but probably know someone who is. In those cases I will direct you to them and am happy to make introductions if necessary

Software Development File [SDF]

All group project information will be neatly organized in a public GitHub repository, so that the professors in our deparment can see what you are doing. We professors will be looking, helping, making a few random comments and suggestions, and making commits of homework and documentation evaluation results as the semester goes on. It is mandatory that there be access, which is why your Git Repo must be public [if AT ALL possible ~ I realize there may be exceptions].

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 Git used to it now, if you aren't already.

and you thought giraffes had long necks!

One note on terminology from the outset: In the good old days when Diplodocus roamed the earth, there was a big, fat, doorstop of a three-ring binder [or sometimes several of them] that was called the Software Development File, or sometimes the Software Development Folder, and which was often shortened to just SDF. In later times it was moved on line and was then sometimes refered to as the Software Development Library or SDL . Nowadays, of course, we just refer to the repository or even the repo. It's all essentially the same thing, a place to store all your project documentation and work products. Just sayin'...


Your repository 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 also be committed, as must your homework assignments.

By the way, when you see Configuration Management Repository in these pages, you can safely substitute the words Git, git, GitHub, repository, or repo with no loss of fidelity [unless for some odd reason your team elects to use another repository system like SVN, CVS, 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 assignments are expected to be submitted by the start of class on the date the assignment is due. Deviation from this process requires prior consent of the instructor.

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! If you have any questions, I have a basic grammar help web page that is available under the Class Pages link on the course website menu. CHECK IT OUT!

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 simply 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.

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 Grade80%
Homework and paper/synopsis assignments10%
Class Participation 10%

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] 10%
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%
Final Product Delivery [SDF] and Presentation 30%
Users Manual [2 – 3 deliveries] 6%
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

Class participation is assigned for each class meeting based on the following rubric:

Class Participation CriteriaValue
Absent *without* prior notification/agreement of professor0
Absent *with* prior consent/agreement of instructor2
Present in class, and hopefully:
Demonstrates excellent preparation from readings and other material.
Offers analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further.

Also of note…

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

Leave of Absence/Withdrawal Policy:

Please read the 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/labwork. 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!


Course Evaluation

Student feedback on this course provides valuable information for continued improvement. All students are expected to fairly and thoughtfully complete a course evaluation for this course. All course evaluations for the Seaver College of Science and Engineering are administered online through the Blue evaluation system. You will receive an e-mail notification at your Lion e-mail address when the evaluation form is available. You may also access the evaluation form on Brightspace during the evaluation period. A few minutes of class time will be reserved for you to complete a course evaluation near the end of the semester. Please bring a laptop, smart phone, tablet or other mobile device to class on this date so that you can access the online evaluation platform.

Academic Honesty and Integrity

General Statement

Loyola Marymount University is a community dedicated to academic excellence, student-centered education, and the Jesuit and Marymount traditions. As such, the University expects all members of its community to act with honesty and integrity at all times, especially in their academic work. Academic honesty respects the intellectual and creative work of others, flows from dedication and pride in performing one's own best work, and is essential if true learning is to take place. 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.

Academic dishonesty will be treated as an extremely serious matter, with severe consequences that can range from receiving no credit for an assignment or test to failing the class, to expulsion.

LMU Academic Honesty Policy https://academics.lmu.edu/honesty/:
Unauthorized Access to or Alteration of Privileged and Proprietary Information:

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.

Students should also keep in mind that resources are available through the Library [https://library.lmu.edu] and Information Technology Services [https://its.lmu.edu]. The DSS Office can help students connect with the appropriate person at the Library and ITS.

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. 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: Pretty easy — please turn off your cell phone ringer during class time. That's it for me, but there's more from LMU at this link.

The official LMU language for this is:

Please turn off and put out of sight all electronic devices (other than those and when allowed) during class-time. The interruptions and/or distractions they cause disrupt class and interfere with the learning process. Even if you are not on video, it's distracting to you.

Expectations for Classroom Behavior in an Online Learning Environment

  1. Netiquette: In addition to LMU's Community Standards, The Lion's Code and Guidelines on LMU Student Classroom and Course-Related Behavior, students should adhere to Netiquette. Your instructor and fellow students need a safe, online learning environment. All opinions and experiences shared, no matter how controversial they may be perceived to be, must be respected in the spirit of academic discourse. You are encouraged to critique an idea but should not attack an individual. Working as a community of learners, we can build a respectful space for discourse. Below are some tips for good netiquette:
    • Listen actively: listen to understand, to learn, and to receive information.
    • Present ideas appropriately
      1. Avoid the use of offensive language
      2. Be aware if Internet Language. For example, do not capitalize all letters since this suggests shouting.
      3. Popular emoticons such as 😜 or 👍 can be helpful to convey your tone but don't overuse them
      4. Use an appropriate and respectful tone when communicating formally or informally.
    • As in a classroom-based session, engaging in private chat during remote class discussions and presentations is disruptive.
    • Do not work on other things during class attendance
    • It may be tempting to multitask during class, but this will impede your learning. Your full focus on the conversation and class materials is required.
    • Before posting your question to a discussion board, check if anyone has asked it already.
    • Don't post irrelevant links, comments, thoughts or pictures.
    • If you refer to something your classmate said earlier in the discussion, quote just a few key lines from their post so that others won't have to go back and figure out which post you're referring to.
    • Respect the opinion of your classmates. If you feel the need to disagree, do so respectfully and acknowledge the valid points in your classmate's argument.
    • Be willing to express dissent. There should be space for non-majority opinions.
    • Edit before you push the Send button.
    • Students are expected to attend class sessions without interruptions.
  2. Zoom Sessions:
    • Please keep your camera on.
    • Please keep your microphones muted until it is your turn to speak.
    • Please use the raise hand feature or use the chat if you have a question or comment.
    • Be an active participant in the breakout sessions.
    • All Zoom sessions will be recorded and put on Brightspace. Please review these if you are unable to attend or need to leave early. Note that I will be intending to break recordings into short parts, shooting for about 10 minutes each, so there will be some stopping and re-starting of videos.
  3. Safety and Privacy in the Remote Learning Environment:

    Students and faculty have a reasonable expectation for privacy in all learning spaces. Bimodal and remote learning can involve the use of synchronous video conferencing, asynchronous recorded lectures, live and online discussions, as well as online forums. In these venues, privacy is a priority for a safe learning environment. See Lion's code.

    As a member of our online community, please follow these privacy guidelines:

    • Videos captured during class meetings should be used only to support student learning and to prepare students for effective learning.
    • Do not share screenshots or images from sessions.
    • Do not record any sessions with your own device; asynchronous classes will be posted in a secured page on Brightspace and may not be downloaded, manipulated, or distributed, or uploaded to a public page for any reason [unless with instructor permission].
    • Do not share class access information such as Zoom links etc.

Because of the nature of the class delivery method during remote zoom times we will also take a look at a document which will serve as a guide for everyone in the class. This Netiquette Document is published here and on the Brightspace site for this class. We will take a look at it during the first week of class and will work to make it agreeable to everyone involved.

Emergency Preparedness

Public Safety can be reached 24/7/365 at 310.338.2893 [or x222 from a campus phone]. In a life-threatening emergency, call 911 first and then call Public Safety if possible. To report an incident, call Public Safety, submit an e-report on the Public Safety website or via the Rave Guardian mobile app, or visit Public Safety in Foley Annex. Review evacuation information and other safety tips posted in each learning space. Make sure you're registered to receive emergency alerts – confirm your contact information at lmu.edu/alert, and download Rave Guardian in the Apple or Google Play store. For more information and emergency preparedness tips, visit https://publicsafety.lmu.edu.

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. There will be people to guide you.

For more safety information and preparedness tips, visit http://www.lmu.edu/emergency.

Office Hours / Communication / Contact Information

Office 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. Office hours, [due to the pandemic] will be held on zoom in my personal meeting room. A link to the office hours z'room is provided on the BrightSpace course page

I am also always available by e-mail at: my LMU mail address

There is a class slack channel on the LMUCS workspace, named cmsi-286_fall2020. I post to that channel with information at times, and it's a good place to ask/answer questions. It won't hurt you to join! You can also DM me in that workspace.

Beginning in Fall 2020, the LMU CS department is trying a new communication method using Discord for our virtual office hours, and as a virtual Keck Lab environment. Feel free to join up there as well, and post there with your colleagues in the department!

YOU MUST CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's lion.lmu.edu email address. 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 in addition to the slack channel, 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 any changes or modifications announced or distributed in class, emailed to students' LMU Lion accounts or posted on LMU's course management system, Brightspace. If you are absent from an in-person or online class meeting, it is the your responsibility to check Brightspace [and/or the course website] and to check with the professor to see if you missed any important class announcements. Students should not rely on word-of-mouth from classmates.