COMS 3090: Software Development Practices

Course
Computer Science
Teaching
A hands-on course in software engineering processes, teamwork, and project-based development.
Published

January 10, 2025

Software Development Practices

Course Overview

COMS 3090 provides a practical introduction to software engineering principles, including process models, requirements engineering, system design, testing, and project management.
The course emphasizes collaborative software development through a semester-long group project, focusing on teamwork, accountability, and real-world software delivery.

Software Development Lifecycle Overview

Figure: Iterative software development process integrating design, implementation, and testing phases.

Learning Objectives

Students completing this course will be able to:

  • Gain hands-on experience across the software development lifecycle, from requirements gathering to testing and deployment.
  • Apply project management techniques, including cost estimation, scheduling, and risk analysis.
  • Collaborate effectively in teams to design, develop, and deliver functional software products.
  • Use software engineering artifacts and tools, such as UML diagrams, SQL schemas, versioning systems, and source control.
  • Demonstrate understanding of software ethics, professional conduct, and legal responsibilities.
  • Implement client/server programming concepts, including socket communication, APIs, and HTTP protocols.

Topics Covered

  • Software Process Models and Lifecycle
  • Requirements Analysis & Specification
  • Architecture and System Design
  • Project Scheduling, Risk Management, and Metrics
  • Testing, Inspections, and Code Reviews
  • Software Configuration & Source Control (Git)
  • Database Schema Design and SQL
  • Object-Oriented Concepts and Modeling
  • Networking & Client-Server Programming (HTTP, DNS, Sockets)
    • DNS, IP, URI
    • Client/Server Model Fundamentals
    • HTTP and Socket APIs
    • RESTful API Design
  • Professional Ethics in Computing

My Role

Computer Science Graduate Teaching Assistant (Fall 2024)

As a Teaching Assistant for COMS 3090, I supported over 150 students in mastering the principles of modern software engineering through lectures, labs, and team-based projects. My key contributions included:

  • Mentoring Project Teams: Guided multiple student groups throughout the requirements, design, and implementation stages of their semester-long projects.
  • Weekly Team Meetings: Conducted regular progress check-ins with each team to monitor milestones, resolve blockers, and ensure consistent communication and agile progress tracking.
  • Lab Instruction: Delivered labs on Git, object-oriented modeling, system architecture, and backend programming fundamentals.
  • Technical Support: Provided hands-on assistance with debugging, API integration, testing frameworks, and version control workflows.
  • Evaluation & Feedback: Graded project deliverables, presentations, and code quality, offering structured feedback for improvement.
  • Process Coaching: Reinforced Agile and Scrum practices, emphasizing milestone planning, documentation standards, and team collaboration strategies.

This role strengthened my expertise in software process management, technical mentorship, and team coordination, blending academic support with real-world software development practices.