[Dedicated to the memory of Professor Phil Dorin, teacher, mentor and friend.]
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.
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.
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.
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'.
…and *I* promise to:
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.
FAIR WARNING!!! FAIR WARNING!!! FAIR WARNING!!! FAIR WARNING!!!
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
GitHub with no loss of fidelity [unless for some odd
reason your team elects to use another repository system like SVN or Continuus].
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 homeis 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
There are two textbooks for this course. The first is required, and the second is optional, but recommended:
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.
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.
extreme programmingweb site. Good source of information for using
pair programmingeffectively. Also has good information about writing module tests from software specifications/requirements. Says to write the tests first, then write the code.
Capability Maturity Model Integratedor CMMI. This is a model that is used extensively in industry. Most of the large corporations are now required to be at an
CMMI level 3 or abovecertification. Government software projects frequently must be at level 5!
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.
|Total Project Grade||80%|
|Homework and paper/synopsis assignments||10%|
|Project Poster Grade||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:
|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:
|Percent||Letter||Rating 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 less||F||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
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.]
FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!!
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.
FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!!
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
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.
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.
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:
Disruptive Behavior, and/or intentionally or recklessly interfering with normal University life, activities, processes or University-sponsored activities including, but not limited to: studying; teaching; research; classroom instruction; campus or residential life; University administration; judicial proceedings; or fire, police or emergency services.[see page 8 of the Community Standards document]
Disruptive behavior which is persistent or significantly interferes with classroom activities may be subject to disciplinary action. A student may be referred to the Office of Student Judicial Affairs if their behavior constitutes a violation of the conduct code.[See Disruptive Behavior Brochure.]
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.
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.
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.
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.