Software Development Practices

COM S 309

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours: 3 credits, 4 contact hours
  2. Instructor’s or course coordinator’s name: Simanta Mitra
  3. Text book, title, author, and year: None required
  4. Other supplemental materialsSoftware Engineering - Modern Approaches, 2nd edition, Eric J Braude and Michael E. Bernstein; Software Engineering, Ian Sommerville, 6th edition, 2001; Software Engineering- A practitioner's approach, Roger Pressman.

Specific course information

  1. Brief description of the content of the course: A practical introduction to methods for managing software development. Process models, requirements analysis, structured and object-oriented design, coding, testing, maintenance, cost and schedule estimation, metrics. Programming projects.
  2. Prerequisites or co-requisites: Minimum of C – in COM S 228 and MATH 165
  3. Required, elective, or selected elective? Required

Specific goals for the course

  1. Specific outcomes of instruction: To introduce the students to the major software engineering topics and position them to lead medium-sized software projects in industry.
  • Students will learn to work as a team and to focus on getting a working project done on time with each student being held accountable for their part of the project. Students will communicate the team project both within the team framework and to the class. (3, 5)
  • Students will learn about risk management and quick prototyping to de-risk projects.
  • Students will learn about and go through the software development cycle with emphasis on different processes - requirements, design, and implementation phases. (1)
  • Students will learn details about different artifacts produced during software development.
  • Students will learn about different software development process models and how to choose an appropriate one for a project. (2)
  • Students will gain confidence at having conceptualized, designed, and implemented a working.
  • Student will learn about professional ethics and how to apply it in the discipline. (4)

Brief list of topics to be covered

  • Intimate familiarity with various software artifacts (documents/code) produced during a software development project.
  • Top Issues in Software Engineering
  • Project Management: Process Models, Planning, Scheduling, Cost Estimation, Risk Management, Metrics, Project execution, Project termination.
  • Software Requirements: Elicitation, Specification, Verification, Validation.
  • Software Architecture: Decomposition, Modularity, Specification of Interfaces, Design tradeoffs, Design Evaluation.
  • Configuration Management: Use of source control tools, change management.
  • Testing techniques, Inspections/Reviews.
  • Legal and ethical principles in computing
  • Exposure to information management techniques (via Lectures and using the concepts in a semester-long group Project)
    • Demonstrate uses of stored metadata schema
    • Concepts in modeling notation and how they are used
    • Basic principles and application of relational data model
    • Use of the Object-oriented model
    • Creating a schema in SQL and using it to create tables and retrieve information
    • Creating non-procedural queries by filling in templates of relations
    • Embedding object-oriented queries into languages such as Java/C++
  • Exposure to basics of networking and communication (via Lectures and using the concepts in a semester-long group Project)
    • DNS, IP, URI
    • Introduction to the client/server model
    • Http
    • Socket APIs
    • Client/server APIs are used throughout the semester in the group Project