CS 321: Software Engineering

(Spring 2017)


Email course staff only for logistical issues such as meeting outside of office hours, missing lecture, grading disputes, medical situations, etc. All other questions should be posted to the Blackboard forum.

BlackBoard is used for discussions, project submissions, and to post grades.

Instructor: Katherine (Raven) Russell
Instructor Email: krusselc_AT_gmu.edu
Email Subject Line: [CS321]
Office: Engineering, Rm 5328
Open Office Hours (no appointment needed) Tu 6-7pm, Th 1:30-2pm
GTA: See Blackboard for contact information


While there is no specifically required textbook for this class, there is required readings. Readings will either be provided to you or be listed as chapters from the recommended textbooks. If you choose to use different textbooks, you will be responsible for "mapping" the reading from the recommended textbooks to your textbooks.

  1. Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures by H. Gomaa (ISBN 10: 0521764149 / ISBN 13: 978-0521764148)
  2. Software Engineering by Ian Sommerville, some recent edition (e.g. 9th Edition, ISBN 10: 0137035152 / ISBN 13: 978-0137035151, or 10th Edition, ISBN 10: 0133943038 / ISBN 13: 978-0133943030).


You will need a computer for this class with some modern operating system capable of running a Java compiler and some other misc. software. Remember that lab computers are also available on campus, see next section.

The prerequisites for this course are a grade of C or better in CS 310 and ENGH 302. I will assume "three semesters' worth" of programming experience and knowledge of Java. You should understand basic program design, coding, and debugging techniques.


  1. An understanding of all phases of the software engineering lifecycle (requirements, design, implementation, testing, deployment, maintenance).
  2. An understanding of several software lifecycle models including both prescriptive and agile models and knowledge of tradeoffs among these models.
  3. An ability to create and use UML models to develop and document software analysis and design artifacts.
  4. An understanding of fundamental project management and leadership issues for software teams.
  5. An ability to apply software engineering methods to address the requirements and design phases of a large software project.



Team Project 40%
Individual Writing Assignment 10%
Quizzes & Class Participation 20%
Final Exam 30%

Contesting of grades on any/all submissions must be requested within one week of the item's return. No grade changes will be considered subsequent to that deadline, or after the final exam meeting.


Final grades will be assigned without rounding according to the following criteria. It is a 10-point scale per letter grade, with the upper and lower 2% of each 10% earning a + or -.

A+ (>= 98.0%) A (>= 92.0%) A- (>= 90.0%)
B+ (>= 88.0%) B (>= 82.0%) B- (>= 80.0%)
C+ (>= 78.0%) C (>= 72.0%) C- (>= 70.0%)
D (>= 60.0%)
F (< 60.0%)


PRIME DIRECTIVE: Be able to explain your own work including homework, project deliverables, and exam solutions. The work you submit should be the product of your own effort and reflect your personal understanding unless the assignment is explicitly stated to be a group assignment (in writing). Students may be asked at any time to explain their contributions or exam solutions they submit. Inability to do so will be construed as evidence of misconduct.

Both the University and the Computer Science Department have honor codes you are expected to adhere to. We will be reviewing these in class, but more information about the university honor code can be found here: http://oai.gmu.edu/the-mason-honor-code-2/ and the deparment's honor code can be found here: http://cs.gmu.edu/resources/honor-code/. You are bound by these honor codes.

Any submitted work which shows too much commonality with others' work to be completely original, or any plagiarized work, will result in a case for the Honors Committee. Any code which is presented in class or provided to you as part of the project may be included in your programs.