CS3001 · BSc / BS · 4 credits

Software Engineering

How real software is planned, built and maintained by teams — requirements, design, version control, testing, delivery.

Instructor Prof. Sridhar Iyer & Dr. Prajish Prasad Term Every term Prereq CS2003

§ 1Calendar

  • Quiz 1—
  • Quiz 2—
  • End-term examination—

§ 2Previous Year Questions

No papers uploaded yet.

§ 3Resources

Course material2

Notes2

CS3001 · BSc / BS · 4 credits

Syllabus

The official course syllabus, transcribed from the IITM BS Data Science & Applications course booklet.

§ 1Course Description

This course develops essential software engineering skills by introducing fundamental concepts and practices, including requirements gathering, conceptual design, software comprehension, debugging, testing, and deployment.

In-course project: The in-course project is integrated into the course and not offered separately. Students work in teams that simulate real-world IT environments, addressing client requirements (typically set by a TA or instructor) and following industry-standard software development practices. The final product is presented before a panel that includes TAs and instructors. An example of a previous project : AI Agent for Academic Guidance

Lectures-Tutorials-Practicals-Credits: 4-0-0-4

§ 2Faculty

§ 3Week-by-week

Week 1: Software development lifecycle - requirements, design, testing; Models (Waterfall, Agile); Components; Project context.

Week 2: Requirements engineering - gathering, SRS; Functional/non-functional requirements; User stories.

Week 3: UI/UX design - interaction, usability; Prototyping; Heuristic evaluation.

Week 4: Project management - estimation, scheduling, risk; Agile; Tools.

Week 5: Software design - modularity, OOP; UML; Design tools.

Week 6: Development practices - APIs, version control; Code quality (debugging, metrics, clean code); Collaboration.

Week 7: Software architecture; SOLID principles; Design patterns (creational, structural).

Week 8: Software testing - unit, integration, system; Black-box/white-box; TDD.

Week 9: Deployment environments and strategies; Hosting platforms (IaaS, PaaS); Continuous integration; Performance monitoring.

Week 10: Software organizations; Collaboration and productivity; Software engineering skills.