Course: Software Engineering
Course Objectives (aligned with Bloom's Taxonomy):
1. **Identify the key components and processes involved in software engineering**
2. **Explain the importance of different software development process models**
3. **Analyze and evaluate the role of risk management in software development**
4. **Apply system engineering principles in software development**
Course Outcomes:
1. *List* the key components and processes involved in software engineering.
2. *Describe* different software development process models with examples.
3. *Analyze* and *evaluate* the role of risk management in software development projects.
4. *Implement* system engineering principles in a given software development scenario.
Lesson Plan:
Lecture 1: Introduction to Software Products and Software Process
- Define software products
- Discuss software process models
- Introduce Waterfall model and its stages
Lecture 2: Evolutionary Development and Bohemia's Spiral Model
- Explain Evolutionary Development in software engineering
- Describe Bohemia's Spiral model
- Discuss the advantages and disadvantages of these models
Lecture 3: RAD Model and Agile Model
- Identify the key features of Rapid Application Development (RAD) model
- Define Agile Model and discuss its principles
- Compare RAD and Agile models
Lecture 4: Overview of Risk Management
- Describe the concept of risk management in software development
- Identify common risk factors in software projects
- Discuss strategies to mitigate and manage risks
Lecture 5: Process Visibility and Professional Responsibility
- Explain the importance of process visibility in software projects
- Discuss ethical and professional responsibilities of software engineers
- Analyze real-world case studies related to professional ethics
Lecture 6: Computer-based System Engineering
- Define systems and their environment
- Explain the system procurement process
- Discuss system architecture modeling techniques
Lecture 7: Human Factors and System Reliability Engineering
- Discuss the influence of human factors in software engineering
- Explain system reliability engineering
- Analyze the impact of system reliability on software products
Lecture 8: Requirements Engineering Process
- Define the requirements engineering process
- Discuss the creation of Software Requirement Document (SRS)
- Validate and evolve software requirements based on user feedback
Lecture 9: Viewpoint-oriented Analysis and Requirement Specification
- Explain viewpoint-oriented and method-based analysis
- Discuss the role of social and organizational factors in software requirements
- Specify functional and nonfunctional requirements using different modeling techniques
Lecture 10: Data Flow, Semantic, and Object Models
- Analyze and compare data flow, semantic, and object modeling approaches
- Interpret system contexts and their role in software development
- Demonstrate the process of requirement specification in a case study
Course Title: Software Engineering
Course Objectives:
1. Identify and explain the key principles and processes involved in software prototyping, design,
object-oriented design, and user interface design.
2. Analyze and evaluate different software design strategies and quality metrics for creating reliable
and reusable software systems.
3. Apply software verification and validation techniques to ensure the quality and correctness of
software products.
4. Develop project management skills for effectively managing software development projects,
including cost estimation, scheduling, and maintenance.
Course Outcomes:
1. List the different prototyping techniques and explain the importance of user interface prototyping
in software development.
2. Implement modular decomposition and domain-specific architectures in software design for
structuring control models effectively.
3. Evaluate software reliability metrics and apply statistical testing methods for ensuring the quality
and reliability of software systems.
4. Justify the use of different verification and validation techniques, such as structural testing and
inspection, to ensure software correctness and quality.
Week 1-2: Introduction to Software Prototyping
- Lecture 11: Overview of Software Prototyping
- Lecture 12: Prototyping Techniques
- Lecture 13: User Interface Prototyping
Week 3-5: Software Design Principles and Strategies
- Lecture 14: Design Process
- Lecture 15: Design Quality
- Lecture 16: System Structuring Control Models
- Lecture 17: Modular Decomposition
- Lecture 18: Domain-Specific Architecture
Week 6-8: Object-Oriented & Function-Oriented Design
- Lecture 19: Objects, Classes, and Inheritance
- Lecture 20: Object Identification
- Lecture 21: Concurrent Objects
- Lecture 22: Data Flow Design
- Lecture 23: Structural Decomposition
- Lecture 24: Detailed Design
- Lecture 25: Comparison of Design Strategies
Week 9-11: User Interface Design
- Lecture 26: Design Principles
- Lecture 27: User-System Interaction
- Lecture 28: Information Presentation
- Lecture 29: User Guidance
- Lecture 30: Interface Evaluation
Week 12-14: Software Reliability and Reusability
- Lecture 31: Software Reliability Metrics
- Lecture 32: Reliability Specification
- Lecture 33: Statistical Testing
- Lecture 34: Fault Avoidance & Tolerance
- Lecture 35: Exception Handling & Defensive Programming
- Lecture 36: Software Development with Reuse
- Lecture 37: Generator-Based Reuse
- Lecture 38: Application System Portability
Week 15-17: Software Verification and Validation
- Lecture 39: Testing Process
- Lecture 40: Test Planning & Strategies
- Lecture 41: Black Box & Structural Testing
- Lecture 42: Program Inspections
- Lecture 43: Mathematically-Based Verification
- Lecture 44: Static Analysis Tools
- Lecture 45: Cleanroom Software Development
Recommended Resources:
1. "Software Engineering" by Rajib Mall (Indian author)
2. "Software Engineering: A Practitioner's Approach" by Roger S. Pressman (International author)
3. "Object-Oriented and Classical Software Engineering" by Stephen R. Schach (International author)
4. "Software Engineering: A Hands-On Approach" by Roger D. S. (Indian author)
Additional Details:
- Assignments and practical exercises should be incorporated to reinforce theoretical concepts.
- Guest lectures from industry experts to provide practical insights into software engineering
practices.
- Regular assessments should align with course outcomes for measurement of student learning.
- Utilize case studies and real-world examples to demonstrate the application of software
engineering concepts.
- Encourage student participation through group discussions and presentations to enhance
collaborative learning.
### Additional Details:
- Assignments and quizzes to assess student understanding after each lecture
- Encourage group discussions and projects to reinforce learning
- Guest lectures by industry experts to provide real-world insights
- Incorporate practical exercises and case studies to enhance application of concepts

Introduction to software engineering and Evalution

  • 1.
    Course: Software Engineering CourseObjectives (aligned with Bloom's Taxonomy): 1. **Identify the key components and processes involved in software engineering** 2. **Explain the importance of different software development process models** 3. **Analyze and evaluate the role of risk management in software development** 4. **Apply system engineering principles in software development** Course Outcomes: 1. *List* the key components and processes involved in software engineering. 2. *Describe* different software development process models with examples. 3. *Analyze* and *evaluate* the role of risk management in software development projects. 4. *Implement* system engineering principles in a given software development scenario. Lesson Plan: Lecture 1: Introduction to Software Products and Software Process - Define software products - Discuss software process models - Introduce Waterfall model and its stages Lecture 2: Evolutionary Development and Bohemia's Spiral Model - Explain Evolutionary Development in software engineering - Describe Bohemia's Spiral model - Discuss the advantages and disadvantages of these models Lecture 3: RAD Model and Agile Model - Identify the key features of Rapid Application Development (RAD) model - Define Agile Model and discuss its principles - Compare RAD and Agile models Lecture 4: Overview of Risk Management
  • 2.
    - Describe theconcept of risk management in software development - Identify common risk factors in software projects - Discuss strategies to mitigate and manage risks Lecture 5: Process Visibility and Professional Responsibility - Explain the importance of process visibility in software projects - Discuss ethical and professional responsibilities of software engineers - Analyze real-world case studies related to professional ethics Lecture 6: Computer-based System Engineering - Define systems and their environment - Explain the system procurement process - Discuss system architecture modeling techniques Lecture 7: Human Factors and System Reliability Engineering - Discuss the influence of human factors in software engineering - Explain system reliability engineering - Analyze the impact of system reliability on software products Lecture 8: Requirements Engineering Process - Define the requirements engineering process - Discuss the creation of Software Requirement Document (SRS) - Validate and evolve software requirements based on user feedback Lecture 9: Viewpoint-oriented Analysis and Requirement Specification - Explain viewpoint-oriented and method-based analysis - Discuss the role of social and organizational factors in software requirements - Specify functional and nonfunctional requirements using different modeling techniques Lecture 10: Data Flow, Semantic, and Object Models - Analyze and compare data flow, semantic, and object modeling approaches
  • 3.
    - Interpret systemcontexts and their role in software development - Demonstrate the process of requirement specification in a case study Course Title: Software Engineering Course Objectives: 1. Identify and explain the key principles and processes involved in software prototyping, design, object-oriented design, and user interface design. 2. Analyze and evaluate different software design strategies and quality metrics for creating reliable and reusable software systems. 3. Apply software verification and validation techniques to ensure the quality and correctness of software products. 4. Develop project management skills for effectively managing software development projects, including cost estimation, scheduling, and maintenance. Course Outcomes: 1. List the different prototyping techniques and explain the importance of user interface prototyping in software development. 2. Implement modular decomposition and domain-specific architectures in software design for structuring control models effectively. 3. Evaluate software reliability metrics and apply statistical testing methods for ensuring the quality and reliability of software systems. 4. Justify the use of different verification and validation techniques, such as structural testing and inspection, to ensure software correctness and quality. Week 1-2: Introduction to Software Prototyping - Lecture 11: Overview of Software Prototyping - Lecture 12: Prototyping Techniques - Lecture 13: User Interface Prototyping Week 3-5: Software Design Principles and Strategies - Lecture 14: Design Process - Lecture 15: Design Quality
  • 4.
    - Lecture 16:System Structuring Control Models - Lecture 17: Modular Decomposition - Lecture 18: Domain-Specific Architecture Week 6-8: Object-Oriented & Function-Oriented Design - Lecture 19: Objects, Classes, and Inheritance - Lecture 20: Object Identification - Lecture 21: Concurrent Objects - Lecture 22: Data Flow Design - Lecture 23: Structural Decomposition - Lecture 24: Detailed Design - Lecture 25: Comparison of Design Strategies Week 9-11: User Interface Design - Lecture 26: Design Principles - Lecture 27: User-System Interaction - Lecture 28: Information Presentation - Lecture 29: User Guidance - Lecture 30: Interface Evaluation Week 12-14: Software Reliability and Reusability - Lecture 31: Software Reliability Metrics - Lecture 32: Reliability Specification - Lecture 33: Statistical Testing - Lecture 34: Fault Avoidance & Tolerance - Lecture 35: Exception Handling & Defensive Programming - Lecture 36: Software Development with Reuse - Lecture 37: Generator-Based Reuse - Lecture 38: Application System Portability Week 15-17: Software Verification and Validation
  • 5.
    - Lecture 39:Testing Process - Lecture 40: Test Planning & Strategies - Lecture 41: Black Box & Structural Testing - Lecture 42: Program Inspections - Lecture 43: Mathematically-Based Verification - Lecture 44: Static Analysis Tools - Lecture 45: Cleanroom Software Development Recommended Resources: 1. "Software Engineering" by Rajib Mall (Indian author) 2. "Software Engineering: A Practitioner's Approach" by Roger S. Pressman (International author) 3. "Object-Oriented and Classical Software Engineering" by Stephen R. Schach (International author) 4. "Software Engineering: A Hands-On Approach" by Roger D. S. (Indian author) Additional Details: - Assignments and practical exercises should be incorporated to reinforce theoretical concepts. - Guest lectures from industry experts to provide practical insights into software engineering practices. - Regular assessments should align with course outcomes for measurement of student learning. - Utilize case studies and real-world examples to demonstrate the application of software engineering concepts. - Encourage student participation through group discussions and presentations to enhance collaborative learning. ### Additional Details: - Assignments and quizzes to assess student understanding after each lecture - Encourage group discussions and projects to reinforce learning - Guest lectures by industry experts to provide real-world insights - Incorporate practical exercises and case studies to enhance application of concepts