CS504 : Software Engineering - I

Course Overview

Course Synopsis

The course focuses on the development techniques for industrial level software. The intent of the course is to equip students with the concepts to help them get a strong base in software industry. In particular the course discusses initial software engineering related concepts, different development methodologies (like structured development, object-oriented development etc), Software architecture, effective coding practices and testing in broad.

Course Learning Outcomes

At the end of the course, you should be able to:

  • Extract and analyze software requirements
  • Develop some basic level of software Architecture/Design
  • Apply standard coding practices
  • Apply different testing techniques
  • Describe debugging and its effectiveness.

Course Calendar

Introduction To Software Engineering1Handouts1-10
Introduction To Software Development2Handouts11-15
Requirement Engineering3,4Handouts16-27
Relation of several components of Software Requirements5Handouts28-32
Use Case Diagram for a Library System6Handouts33-38
Domain Modeling7Handouts39-43
Assignment No. 1
State Transition Diagram8Handouts44-52
Data Flow Modeling9Handouts53-61
Prototyping and GUI Design10Handouts62-68
Introduction to Software Design11Handouts69-71
Coupling and Cohesion12Handouts72-82
Object Oriented And Analysis Design13,14Handouts83-90
Quiz No. 1
UML Object Model Notations15Handouts91-92
Assignment No. 2
Derivation of Object Model-Coad Methodology16,17Handouts93-97
CASE STUDY: Connie’s Convenience Store18Handouts97-100
Identify Structure19Handouts100-105
Interaction Diagrams20Handouts106-108
Sequence Diagrams (Message Types)21Handouts108-114
Introduction to Software and System Architecture22Handouts115-121
Mid term Examination
Software Architecture Views23Handouts122-126
Software Architecture Models24,25Handouts126-136
Introduction to Design Patterns26Handouts137-140
Observer Pattern27Handouts140-145
Good Programming Practices and Guidelines28Handouts146-154
File Handling Tips for C++ and Java29Handouts155-161
Assignment No. 3
Layouts and Comments in Java and C++30Handouts162-166
Coding Style Guidelines31Handouts167-169
Clarity Trough Modularity32Handouts170-175
Common Coding Mistakes33Handouts176-178
Quiz 2
Exception Handling35Handouts184-191
Introduction to Software Verification and Validation36Handouts192-195
Testing V/S Development37Handouts195-199
Equivalence Classes or Equivalence Partitioning38Handouts199-202
Graded Discussion Board
White Box Testing39Handouts202-206
Unit Testing40Handouts207-209
Inspection V/S Testing41Handouts210-212
Bug Classes and Eeffective Debugging43Handouts216-224
Holistic approach to Debugging44Handouts225-226
Summary and Conclusion45Handouts226-227
Final Examination
* This is a tentative schedule and it is subjected to change
Back to Top