CS321 Syllabus: Software Requirements/Design Modeling

Course Outcomes CS 321 gives an introduction to principles and techniques used in software engineering:
  • An understanding of all phases of the software engineering lifecycle (requirements, design, implementation, testing, deployment, maintenance).
  • An understanding of several software lifecycle models including both prescriptive and agile models and knowledge of tradeoffs among these models.
  • An ability to create and use UML models to develop and document software analysis and design artifacts.
  • An understanding of fundamental project management and leadership issues for software teams.
  • An ability to apply software engineering methods to address the requirements and design phases of a large software project.

CS 321 will have a software engineering project that requires student to participate in working teams where students organize, manage, and practice a software engineering project. This will be a design project with some prototype implementation. See the project page for more details.

CS 321 includes Writing Intensive (WI) activities that, together with those of CS 306, meet the GMU WI Requirements in the BS CS Program (http://wac.gmu.edu). This means you will write 1750 graded words (or about 7 standard pages). You will get feedback on this writing, and be able to resubmit revisions based on the feedback. For this course, part of the writing will include an individual essay on your experiences working with your team.
Prerequisite C or better in CS211
Professor Contact Information Dr. Kinga Dobolyi
Office: Engineering (Rm. 4440)
Email: kdobolyi@gmu.edu
Phone: 703–993–4198
Office Hours: T 1:30pm—2:30pm, W 11:35am—11:50am, R 1:30pm—2:15pm, or by appointment. Please email the professor at least 48 hours in advance when seeking an appointment.
TA Contact Information Please see Piazza for GTA information
Textbook None required.
Course Tools
  • Discussion board:
  • Subversion (SVN) tools (free):
    Tortoise SVN - SVN client for Windows only
    SCPlugin - SVN client for Mac OSX (but NOT Snow Leopard)
    svn - command line (Windows version in link) (Mac version built in to OSX)
  • UML Tools:
    Netbeans with UML plugin
    Violet UML (free) - Open source UML tool - Simple, looks good, but sometimes hard to get exactly what you want
    ArgoUML (free) - Open Source UML tool - Previous classes did not like this tool, but it has more features than Violet
    IBM Rational Software Architect - Very mature UML and architecture tool
  • Project Scheduling Tools:
    OpenProj (free) - Open source version of MS Project
    Microsoft Project - Industry standard project scheduling tool
Email I will use email to send information about the course, ask questions, etc... You must check your GMU email account. If you prefer to use another account, that is okay, just forward your GMU email to your preferred account.
  • Quizzes (20%)
  • In-class assignments (5%)
  • Project assignments (40%)
  • Essay (10%)
  • Final Exam (25%)

Final course grades are calculated as follows:

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%)

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.

Group members must participate equally in project assignments; the professor reserves the right to assign a zero to any student for any deliverable retroactively, if it turns out that nothing of academic merit was contributed to the assignment by any individual. It is up to students to prove their participation on deliverables, and the professor will examine ONLY svn logs in the event of any disputes of participation. Make sure you are using svn, and using it through your login.
Class Participation This course uses a flipped classroom approach.

I have provided links to content on Youtube as a supplement to materials. The linked content is not owned by me, nor was it created by me, therefore I don't have any rights or control over what exists in the videos - view them at your own risk. Having said that, these are the popular and useful videos I found on Youtube for various lecture topics. Feel free to look for ones on your own, or let me know if you found a better one than anything I linked. If you do not want to view the videos, you do not have to; the slides contain all the information you're responsible for for quizzes, and the in-class exercises will allow you to practice the material and ask questions.

Students are expected to attend and actively engage in lectures. Most lectures will involve completing reading assignments at home and being prepared to take a quiz in class. Lectures are also used to solve in-class examples and work on the semester project. Lectures will not generally be used to introduce or review material, as that should be done in reading (or watching videos) at home.

Groupwork will make up a large part of the students' grades. Students are expected to participate equally and fully in group assignments. Each deliverable will require students to complete the deliverable all, or in part, individually at first. The instructors will examine these individual assignments and adjust points for groupwork if students are found to not contribute adequately to draft deliverables.
Late Policy All assignments must be received by the deadline (submitted on Blackboard by 11:55pm on the date due if not otherwise noted). No late assignments will be accepted. All project assignments must be submitted online, through your team's repository, by 11:55pm on the day they are due.
Exams Exams are closed book/notes unless specified otherwise by instructor. Appropriate documentation (as determined by instructor) and requisite permissions are required for make-up exam requests. Picture IDs are required to take all exams.
If you know in advance that you are unable to make an exam for a valid and unavoidable reason (such as a scheduled surgery, etc), you must notify the professor at least one week before the scheduled exam date to make arrangements for a make-up, and bring documentation with you when you take the make-up. If you miss an exam due to a university-accepted excused absence (such as an illness or car accident the day and time of the exam), you must notify your professor within 24 hours of your absence to make arrangements for a makeup, and bring approved documentation with you when you take the make-up exam. Failure to follow either of these policies will result in a zero.
You must take the final exam for the section that you are registered for.
Honor Code All students are expected to abide by the GMU Honor Code. This policy is rigorously enforced. All class-related assignments are considered individual efforts unless explicitly expressed otherwise (in writing). Review the university honor code and present any questions regarding the policies to instructor.
Cheating on any assignment will be prosecuted and result in a notification of the Honor Committee as outlined in the GMU Honor Code.
Learning Disabilities Students with a learning disability or other condition (documented with GMU Office of Disability Services) that may impact academic performance should speak with professor ASAP to discuss accommodations.

Tentative Class schedule

Date (start of week) Lecture Topics and Notes Readings and homework (to be completed by dates posted - everything is due at 11:55pm unless otherwise noted)
  • Class overview, project overview
  • Spend 10 minutes in class trying to find a team. [ 10:30am section][12:00pm section]
  • Version control demo - take notes!
  • Read the Boehm paper for next class
  • Watch appropriate version control video as needed: Mac/command line (start at 2:16, go to 4:45 video), or Windows GUI (video)
  • Due (1/26): Complete the Team Formation deliverable (submitted through svn) found on the project page
  • Due (1/27): Prepare Use Cases topics (watch video, review slides)
  • Individual: Due (1/29): Use case homework - finish exercises from class, if needed
  • Work on team assignments for use cases
  • Team: Due (2/1): finish Use Cases Diagram deliverable, if needed
  • Team: Due (2/3): finish Use Cases Descriptions deliverable, if needed
  • Individual: Due (2/3): Prepare Requirements topics (watch video, review slides)
  • Individual: Due (2/5): Requirements homework - finish exercises from class, if needed
  • Team: Due (2/8): complete Requirements deliverable
  • Individual: Due (2/5): Prepare class diagram topics (watch video, review slides)
  • Individual: Due (2/10): Class diagram homework - finish exercises from class, if needed
  • Work on team assignments for class diagrams
  • Team: Due (2/14): finish Class diagram deliverable, if needed
  • Individual: Due (2/12): Prepare dynamic analysis topics (watch videos, review slides and reading)
  • Class cancelled - snow day
  • Work on team assignments for dynamic analysis diagrams
  • Individual: Due (2/24): Prepare design topics (watch videos, review slides and reading)
  • Individual Due (2/25): Dynamic analysis diagram homework - finish exercises from class, if needed
  • Individual: Due (2/26): Prepare management topics (watch videos, review slides and reading - only starred links)
  • Team: Due (2/26): finish Dynamic analysis deliverables, if needed
2/26 - Moved to end of semester
  • Individual Due (3/3): Imagine you have the method String triangleType(int side1, int side2, int side3). Write an exhaustive set of test cases, as you would have done for CS211, for this method.
  • Individual: Due (3/5): Study testing topics from today
3/5 - Moved to end of semester
  • Quiz on testing
  • Unit testing demo (if necessary)
  • In-class testing exercises
  • In-class pair programming
  • In-class pair programming, system and unit testing
  • Individual: Due (3/24): Read Findbugs paper for next class
  • Team: Due (3/27): finish Implementation, if needed
  • Team: Due (4/3): finish System and Unit Test cases, if needed
  • Quiz on Findbugs
  • Static analysis example research paper: Findbugs
  • Individual: Due (3/28): Run the Findbugs tool on the source code provided by the professor for the semester project. How many bugs did it flag? For each bug, describe the warning, and then decide if it should be fixed, or not, and why. Write a 250 minimum word summary of your experiences reading the Findbugs paper and using the tool (part of this summary should address the questions just posed). Submit your assignment on BB (8 points)
  • Individual: Due (3/26): Read readability paper for next class.
  • Quiz on readability
  • Metrics example research paper: readability
  • Individual: Due (3/31): Watch metrics video (slides will be discussed in class)
  • Individual: (Due 4/2): Prepare risk topics (watch videos, review slides and reading)
  • Individual Due (4/7): Management homework - finish exercises from class, if needed
  • Individual: Due (4/7): essay outline (see project page)
  • Work on essays - meet with professor to discuss writing if you've not met yet
  • Individual: (Due 4/16 - in class): essay draft
  • Individual: (Due 4/14): Prepare refactoring topics (watch videos, review slides and reading)
  • In-class presentations
  • Guest speaker James Dressel from Agilex
  • In-class presentations
5/5 (make-up day)
  • finish sample finals as needed
  • study at home
Final Exam: see the standard time on the George Mason Academic Calendar. The exam will be given in the regular classroom.