Course Code: CS-203
Credit Hours: 3 (3+0)
Prerequisites: None
Course Description
This course introduces the fundamental concepts, methodologies, and tools used in software engineering. It covers software development life cycles, requirement engineering, design principles, testing strategies, project management, and software quality assurance. Students will gain practical insights into managing software projects efficiently and ensuring high-quality software products.
Course Learning Outcomes (CLOs)
CLO | Domain | BT Level |
---|---|---|
Understand the fundamental concepts and principles of software engineering. | C | 2 |
Apply knowledge of requirement engineering, software project management, design principles, and testing. | C | 3 |
Develop comprehensive software documentation using industry-standard tools and techniques. | C | 3 |
Analyze software quality management practices and configuration management in software development. | C | 4 |
(BT = Bloom’s Taxonomy; C = Cognitive Domain)
Weekly Course Outline
Week 1: Introduction to Software Engineering
- Topics:
- Concept and nature of software.
- Overview of software engineering and its importance.
- Professional software development practices.
- Software application domains: Web, Mobile, Desktop, and Cloud-based applications.
- Activity:
- Case study discussion on software failures.
Week 2: Software Process Models
- Topics:
- Process structure and types of software process models.
- Waterfall, V-Model, Incremental, Iterative, Spiral, and Agile Models.
- Component-Based Development and Formal Methods.
- Process structure and types of software process models.
- Assignment:
- Compare and contrast two software process models for a given scenario.
Week 3: Agile Software Development
- Topics:
- Principles of Agile methodologies.
- Agile practices: Scrum, XP (Extreme Programming).
- Agile artifacts: Product Backlog, Sprint Backlog, and Burndown Charts.
- Class Activity:
- Create a simple Scrum board for a mini-project.
Week 4: Requirements Engineering
- Topics:
- Understanding and types of requirements.
- Functional vs. Non-functional Requirements.
- Requirements elicitation and analysis techniques.
- Scenario-Based Modeling and Use Cases.
- Understanding and types of requirements.
- Assignment:
- Write a Software Requirements Specification (SRS) document.
Week 5: Requirements Modeling with UML
- Topics:
- Introduction to UML diagrams.
- Use Case, Class, Sequence, and Activity Diagrams.
- Context Models and Interaction Models.
- Introduction to UML diagrams.
- Lab Activity:
- Create UML diagrams for a library management system.
Week 6: Architectural Design and Implementation
- Topics:
- Architectural design principles.
- Design patterns: MVC, Singleton, and Observer.
- Abstraction, modularity, and reuse.
- Assignment:
- Develop a basic software architecture for an e-commerce application.
Week 7: Design Models and Principles
- Topics:
- Data Flow Diagrams (DFD) and Flowcharts.
- Revisiting UML models.
- Principles: SOLID, DRY, and KISS.
- Lab Activity:
- Design DFD for a hospital management system.
Week 8: Software Project Management
- Topics:
- The 4Ps of software project management: Process, People, Product, and Project.
- Gantt Charts, Work Breakdown Structure (WBS).
- Project estimation techniques: COCOMO, Function Point Analysis.
- Assignment:
- Develop a project plan using Gantt chart software.
Week 9: Midterm Examination
Week 10: Software Quality Management
- Topics:
- Software quality factors and standards (ISO, CMMI, Six Sigma).
- Quality assurance and control techniques.
- Formal Technical Reviews and Walkthroughs.
- Class Activity:
- Perform a peer review of SRS documents.
Week 11: Software Testing Strategies
- Topics:
- Testing strategies: Unit, Integration, System, and Acceptance Testing.
- Testing techniques: White Box, Black Box, and Grey Box Testing.
- Test-driven development (TDD).
- Lab Activity:
- Write test cases for a given module.
Week 12: Risk Management in Software Projects
- Topics:
- Risk identification, analysis, and prioritization.
- Risk mitigation strategies and contingency planning.
- Assignment:
- Develop a risk management plan for a software project.
Week 13: Software Configuration Management (SCM)
- Topics:
- Version control systems: Git, SVN.
- Configuration management practices.
- Change management and auditing.
- Lab Activity:
- Perform basic Git operations: clone, commit, push, and pull.
Week 14: Software Maintenance and Reengineering
- Topics:
- Types of software maintenance: Corrective, Adaptive, Perfective, and Preventive.
- Software reengineering and reverse engineering.
- Impact of maintenance on software cost.
- Assignment:
- Develop a maintenance plan for an existing software system.
Week 15: Software Process Improvement
- Topics:
- Capability Maturity Model Integration (CMMI).
- Process improvement strategies and frameworks.
- Case studies on process improvement.
- Class Activity:
- Analyze a case study on process improvement.
Week 16: Course Revision and Final Project Presentations
- Topics:
- Comprehensive revision of all topics.
- Final project presentations and feedback.
- Assessment:
- Submit final project report and present to the class.
Teaching Methodology
- Lectures: Interactive and concept-based lectures.
- Assignments: Regular assignments to reinforce concepts.
- Case Studies: Real-world case studies for better understanding.
- Quizzes: Regular quizzes to assess understanding.
- Projects: Team-based final project for practical exposure.
Assessment Criteria
Component | Weightage |
---|---|
Class Participation | 5% |
Assignments | 15% |
Quizzes | 10% |
Lab Work | 20% |
Midterm Examination | 20% |
Final Project and Examination | 30% |
Recommended Reading
- Primary Textbook:
“Software Engineering: A Practitioner’s Approach” by Roger S. Pressman, 8th Edition. - Reference Books:
“Software Engineering” by Ian Sommerville, 10th Edition.
“Applying UML and Patterns” by Craig Larman, 3rd Edition.