Spring 2024 (Section 2, 11755; Section 3, 13053) - 3 credit hours
JMU CS345 - Software Engineering
Help Policies Solutions Study-Aids Tools
Syllabus


Description: Software engineering is the application of theories, methods and tools to the specification, design, creation, verification/validation, deployment, operation, and maintenance of software products. This course provides an overview of the engineering methods, processes, techniques and measurements used in the software industry. After completing this course, students will have gained some experience with these concepts, should be able to explain the advantages and disadvantages of different methods/processes/techniques/measurements, and should be able to apply them in a variety of different situations.
Textbook: The primary textbook for this course is (the draft version of)

Fox, C. and D. Bernstein (2016) Software Engineering .

which is being made available to you in electronic form.
Outline: This course is organized as follows (though specific topics and dates may change).

Readings are listed in the right-most column.

Topics to Understand Completely Before the First Meeting
Basics Classes , Enumerated Types , Exceptions , Custom Exceptions , Specialization , Abstract Classes and Interfaces
Polymorphism Through Inheritance and Through Interfaces
Input/Output (I/O) File System Basics and I/O Basics
Reference Types Objects and Arrays
Other Topics Packages and Collections
Tools Eclipse , JUnit and EclEmma/JaCoCo
Labs to Complete Before the First Meeting
Eclipse Skills Tool Editing [Lab] , Tool Debugging[Lab] and Tool Unit Testing (and Coverage)[Lab]
Part I: Software, Software Engineering and Software Processes
1/17 Introduction , About CS345 , Systems and Modeling FB 1
1/19 Activity Diagrams
1/22 Software Processes/Process Models FB 2 and FB 3
1/24 Software Quality and Last Minute Questions on H1 FB 4
Part II: Product Design
1/26 Overview , Needs , Requirements , Requirements in a Non-Incremental Process and Requirements in an Incremental Process FB 5
1/29 Recording Requirements: User Stories , Use Cases and Structured Text
1/31 User Interface/Interaction Design FB 6
Part III: Engineering Design
2/2 Overview and Engineering Design Principles FB 7
2/5-2/7 Design Patterns - Iterator , Singleton , Factory , Composite , Observer and Strategy
2/9 Architectural Styles
2/12 Exam 1
Part IV: Implementation/Construction
2/14-2/16 Aside: Windowing Basics , Layout Basics , Intermediate Layout and Using GUI Components
2/19 ToolGUI Construction[Lab]
2/21 Managing Code & Documentation and Git FB 8
2/23 Verification , Debugging and Refactoring FB 9 and FB 10
Part V: Deployment, Support and Maintenance
2/26 Class Cancelled - Lecture Moved to 3/8
Part VI: Project Management
2/28 Project Management and Risk Management FB 12
3/1 Measures of Software Size and Time and Cost Estimation FB 13
3/4 Scheduling: Overview , Critical Path Methods and Gantt Charts FB 14
3/6 Performance Tracking and Time Value of Money FB 15
Part VII: Final Project
3/8 Make-Up Lecture: Deployment , Deployment Diagrams , Support and Maintenance FB 11
3/18 ToolGit[Lab]
3/20 Exam 2
3/22 SprintSprint 1 Planning Meeting
3/25 SprintSprint 1 Planning Meeting (cont.)
3/27 SprintSprint 1 Daily Scrum and ToolSerialization[Lab]
3/29 SprintSprint 1 Daily Scrum and ToolGUI Modification[Lab]
4/1 SprintSprint 1 Daily Scrum and Tool Executable .jar Files[Lab]
4/3 SprintSprint 1 Review (with Product Owner) and Sprint 1 Retrospective (without Product Owner)
4/5 SprintSprint 2 Planning Meeting
4/8 SprintSprint 2 Planning Meeting (cont.)
4/10 SprintSprint 2 Daily Scrum and Tool Internationalization[Lab]
4/12 SprintSprint 2 Daily Scrum
4/15 SprintSprint 2 Daily Scrum
4/17 SprintSprint 2 Review (with Product Owner) and Sprint 2 Retrospective (without Product Owner)
4/19 SprintSprint 3 Planning Meeting
4/22 SprintSprint 3 Planning Meeting (cont.)
4/24 SprintSprint 3 Daily Scrum and Course Evaluations
4/26 SprintSprint 3 Daily Scrum
4/29 SprintSprint 3 Daily Scrum
5/1 SprintSprint 3 Daily Scrum
5/8 Sprint 3 Review for Section 2 (10:30-12:40)
Sprint 3 Review for Section 3 (1:00-3:00)

Attendance at lectures is not mandatory but is strongly encouraged. You are expected to come to class prepared to ask and answer questions. Hence, you should complete the readings on a topic before it is discussed in lecture.

Attendance is mandatory on days when group/team activities and meetings are scheduled.

Grading: Final grades will be based on your performance on: 2 in-class exams (30% each) , several homework assignments (20% total) and 1 team project (20% total).
Team Project: Each student must complete a (team) project. Teams must use the software development process called scrum. The sprints are scheduled as follows. A Team Evaluation Form (which will be made available to you just before the project ends) must be completed and submitted by each member of the Team individually by 5/9 at 5:00PM. Make sure you read and understand all of the policies related to projects.
Homework Assignments: 8 homework assignments will be assigned during the semester. Note that their due dates are subject to change.
Homework Assignment 1 ; Due: 1/24 (Wed), 11:00PM(Java Review)
Homework Assignment 2 ; Due: 1/29 (Mon), 11:00PM(Activity Diagrams)
Homework Assignment 3 ; Due: 2/2, 11:00PM (Fri)(Scrum - Acceptance Criteria)
Homework Assignment 4 ; Due: 2/9, 11:00PM (Fri)(OOP Input/Output Review)
Homework Assignment 5 ; Due: 2/16, 11:00PM (Fri)(Design Patterns)
Homework Assignment 6 ; Due: 2/23, 11:00PM (Fri)(GUI Construction)
Homework Assignment 7 ; Due: 3/1, 11:00PM (Fri)(Testing/Debugging)
Homework Assignment 8 ; Due: 3/6, 11:00PM (Wed)(Extended to 3/19 (Tue))(Time/Cost Estimation)

Make sure you read and understand all of the policies related to homework assignments. homework assignments may not be submitted after the due date/time (in other words, you will receive a grade of 0 on any one that is not submitted on time).

Office Hours: You may meet (either face-to-face or virtually, depending on the situation and schedule) with Prof. Bernstein during his scheduled office hours or you may schedule an appointment with him.
Contact Information: Prof. Bernstein's contact information is available on the contact page of his WWW site.

Copyright 2024