Prerequisite: A Basic Course on Programming
Fundamentals of Software Engineering: Process models for software development 0 (lecture hours) 1 (lab hour)
Source depot and version control systems : Introduction to usage of Git 3 (lecture hours) 0 (lab hour)
System Requirement Specification 3 (lecture hours) 1 (lab hour)
Design concepts: Abstraction, Refinement, Modularity, and Architectural design 3 (lecture hours) 2 (lab hour)
Object-Oriented (O-O) Approach to software design: Concepts, Design issues, Modeling techniques, Design patterns 6 (lecture hours) 3 (lab hour)
User Interface Design 3 (lecture hours) 0 (lab hour)
Software Testing: Principles, Designing test cases, Testing strategies Debugging, Bug tracking, O-O testing 10 (lecture hours) 2 (lab hour)
Other Topics: Software project planning, Software Quality Assurance (SQA), and Software Configuration Management (SCM) 4 (lecture hours) 1 (lab hour)
The objective of this course is to give students hands-on experience in designing and developing a reasonably big software - big enough that it warrants multiple phases (including architecture, design, and implementation) and multiple developers. During a one semester period, students will be working in teams, each team building a complete software product. Through this process, students will be given exposure to various phases of a software development which includes requirements gathering and specification, systematic design using commonly seen design patterns, coding, componentwise testing, integration testing, version control and software cost estimation.
Students will be working in teams and by the end of the semester they will gain experience in handling various phases of software development. During the project, students assume various participant roles like developer, project manager, architect etc, in addition to thinking and deciding on the design of various modules that constitute the software. Students will learn to follow standard practises throughout the project and to stick to the specification of interfaces between different software modules so that a big software being developed by multiple persons can work together as required.
In this course, students will be required to engineer the specifications, design, code and test a software component that will work together with other components that other students develop, therefore, creating a complete software product. Assessment Methods: Students will work in teams. They are required to design and develop reasonably big softwares. Requirements for the projects will be intentionally kept brief. Students are expected to make the detailed specifications first, and then proceed to designing, implementing, and testing the product. Students assume various participant roles like developer, project manager, architect etc, like in a real software development process. The marks of a student will largely be the result of the students’ individual component although the small remaining fraction is decided on how your component integrates with the rest of the components, and how well they work as a team.
- Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1st edition (November 10, 1994) ISBN-13: 978-0201633610.
- Steve McConnell, Software Project Survival Guide (Developer Best Practices), Microsoft Press; 1 edition (October 25, 1997), ISBN-13: 978-1572316218.
- Fred Brooks, The Mythical Man-Month, Addison-Wesley Professional; Anniversary edition (August 12, 1995), ISBN-13: 978-1572316218
- Joel Spolsky, Joel on Software : And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity, Apress; 2004. Corr. 3rd edition, ISBN-13: 978-1590593899.
- Offered in Jul-Dec, 2021 by Mr. Ramaswamy
- Offered in Jul-Dec, 2020 by Mr. Ramaswamy