CIS 376, Sections 001/002

Software Engineering II

4 credits, Fall Term, 2020

Tuesday and Thursday 12:00 pm - 1:45 pm, Online (Asynchronous)

 

Contact Information:

●     Dr. Foyzul Hassan

●     Office Hours: Tuesday and Thursday 2:00 pm – 4:00 pm

●     Email: foyzul@umich.edu

●     Office Location: Zoom for Office Meetup

●     Phone Number: 313-436-9145

 

 

Learning Goals:

 

Program Learning Goals:

 

This course continues the formal development of the software engineering material begun in CIS 375. Topics covered include personal software process, team software process, formal methods, project management, software testing, software quality assurance, code maintenance, continuous integration and deployment.

 

Course Objectives:

 

This course covers all aspects of software production ranging from the early stage of requirements definition to design and implementation then post-delivery maintenance. Moreover, through group projects, students can obtain hands‐on experiences on entire phases and workflow of the software process. After successful completion of the course, the student will be able to:

  • Select, with justification, a software development process which is most appropriate for the development and maintenance (e.g. refactoring, regression testing, etc.) of a diverse range of software products.
  • Use a common, semi‐formal method (for example, UML diagrams) to specify the requirements of a moderately sized software product.
  • Conduct software design using an accepted program design methodology such as UML.
  • Distinguish between different types and levels of testing for medium‐size software products.
  • Discuss various testing techniques such as white box and black box testing.
  • Discuss key principles and common methods for software project management such as scheduling, size estimation, cost estimation and risk analysis.
  • Get familiar with Refactoring and Testing tools and/or environments.
  • Get familiar with DevOps and CI/CD pipeline.
  • Make presentations describing aspects of software development activities.

Required Materials and/or Technology:

 

This book is not mandatory (just optional) but it may help you to better understand the materials. In general, the slides of the different lectures are enough to cover all the required knowledge:

 

Pressman Roger S, Software Engineering: A Practitioner's Approach, 9th Edition. ISBN-13: 978-0078022128; ISBN-10: 0078022126

 

Assignments and Grading Distributions:

 

Assignment details including the deadlines will be specified when they are assigned. Approximately 5 assignments, 4 class quizzes and one class project that would require working in a group (up-to 4 students per group), should be expected. Late submissions will not be accepted unless with a prior approval from the instructor. Any sort of collaboration in the assignments with others without an explicit approval of the instructor will not be tolerated and may result in a failing grade.

 

You will have ample of time to understand the project and implement it successfully. Course project will reinforce important concepts that we learn in the class.

 

Phase I Project identification, Groups, 1 page description of the project 5%

Phase II Scheduling the project plan 15%

Phase III Requirements and the Design of the project 40%

Phase IV Coding, quality and Testing 30%

Phase V Presentation and the final project report 10%

 

Exams:

 

The mid-term and final exams will be given in the regular class hours. The exam dates will be announced on the course web page (Canvas) at least two weeks in advance.

 

Assessment:

 

Mid-term Exam: 20%, Final Exam 2: 25%, Assignments: 15%, Project: 35%, and Class Participation and Quizzes: 5%.

 

94-100%

A

80-83%

B-

67-69%

D+

90-93%

A-

77-79%

C+

64-66%

D

87-89%

B+

74-76%

C

60-63%

D-

84-86%

B

70-73%

C-

 

 

 

Course Lectures:

Course lectures will be prepared and recorded by the course instructor.  Lectures, including the audio/video recordings will be made available through Canvas before the scheduled date of the class.  At the end of each module, a quiz will be assigned based on the lectures of prior classes.

 

Tentative Course Outline and Schedule:

 

Week

Lecture Topics

Assignment/Project

1

·         Software Engineering: challenges, brief history, overview, etc.

·         Overview of the project

·         Software process: life-cycle

·         Project description (1-2 pages)

·         Project groups

2

·         Requirements engineering

·         Requirements of the project

3

·         Design engineering

·         HW 1

4

·         Project management

·         Estimation and project scheduling

·         Scheduling the project plan

·         HW 2

5

·         Midterm exam

·         Design of the project

6

·         Mid-project presentations

 

 

7-8

·         Software testing

·         Software quality assurance

·         Coding and testing of the project

·         HW 3

9-10

·         Code management

·         Code quality

·         Refactoring

·         HW4

11-12

·         DevOps

·         Continuous Integration

·         Deployment

·         HW5

13

·         Project presentations

 

14

·         Final Exam

 

Course and University Policies:

 

University-wide Policies or Statements Relevant to Courses:

Please see the ‘Course Policies’ Menu on Canvas for information on the following:

  • University Attendance Policy
  • Academic Integrity Policy
  • Counseling
  • Disabilities Services
  • Safety Statement
  • Harassment, Sexual Violence, Bias, and Discrimination