Course Objective:
- Understand
the properties of relations and its importance in Agile practices, Programming,
Development & other Platforms.
- Apply
the properties of iteration planning and find the partially ordered sets and
Security.
- Highlight
the concepts of Software Engineering and its usefulness in computing
applications.
- Understand
the need of Software Architecture, Databases, and techniques by introducing
computing applications
- Project-management,
rules, design and implementation, Software testing and Software evolution.
Unit I: Agile Development: Content Preview
Agile Practices, The Agile
Alliance, Principles, Overview of Extreme Programming, The Practices of Extreme
Programming, Conclusion, Planning: Initial Exploration, Release Planning,
Iteration Planning, Defining "Done", Task Planning Iterating,
Tracking.
Unit II: Refactoring: Overview,
A Simple Example of Refactoring: Generating Primes, A Programming Episode, The
Bowling Game, Conclusion, Overview of the Rules of Bowling. Agile Design:
Agile Design, Design Smells, Why Software Rots, the Copy Program.
Unit III: The Single-Responsibility Principle (SRP):
Defining a Responsibility, Separating Coupled
Responsibilities, Persistence, The Open/Closed Principle (OCP), Description of
OCP, The Shape Application. The Liskov Substitution Principle (LSP): Violations of LSP, Factoring Instead of
Deriving, Heuristics and Conventions, The Dependency-Inversion Principle (DIP).
Unit IV: The Interface Segregation Principle (ISP):
Interface
Pollution, Separate Clients, Mean Separate Interfaces, Class Interfaces versus
Object Interfaces, The ATM User Interface Example, Overview of UML for C#
Programmers, Class Diagrams, Object Diagrams, Collaboration Diagrams, State
Diagrams.
Unit V: Working with Diagrams:
Model Diagram, Making
Effective Use of UML, Iterative Refinement, Draw FSM Diagrams, State Diagrams:
The Basics Using FSM.
Course Outcomes:
- Understand
the properties of relations and its importance in Agile practices, Programming,
and Development.
- Analyze a problem, identify and define the computing
requirements appropriate to its solution.