Course Description
Full cycle of a software system development effort, including requirements definition, system analysis, design, implementation, and testing. Special emphasis is placed on system analysis and design. The design phase includes development of a user interface. A large term project incorporates the full software life cycle.
Additional Requirements for Graduate Students:
Exams will have additional essay-type questions that will require the graduate student to discuss existing software engineering techniques and to propose an in-depth solution for a given problem. Graduate students conduct an in-depth study of one of the phases in the software life cycle. They carry larger responsibilities in the design and development of the term project.
Athena Title
Software Engineering
Equivalent Courses
Not open to students with credit in CSCI 4050 or CSCI 6050
Non-Traditional Format
This course will be taught 95% or more online. The course content is delivered fully online. Text and video contents will be posted on eLC. Students will use eLC features and other tools to access a variety of experiences involving text and multimedia presentations. Lectures are supported by online practicing activities, online discussions, and online office hours support. Recordings of the discussion sessions will be posted on eLC. Proctored exams will also be offered through a combination of online and in-person proctored sessions, which may have proctoring fees associated with them.
Prerequisite
CSCI 2720 or CSCI 2725
Grading System
A - F (Traditional)
Course Objectives
Students will gain an understanding of modern software engineering methodologies, including an in-depth study of one of the methodologies. They will be exposed to the full software life-cycle, including requirements specification, analysis, software design, implementation, and testing. The students will implement a large system, following the design and development of one of the studied software methodologies. Expected Learning Outcomes: This course presents a survey of topics in software engineering most relevant to students studying computer science. At the end of the semester, all students will be able to do the following: 1. Identify and differentiate phases of a typical software process and how it relates to the software life cycle and the different software process models. 2. Create functional requirement specifications in the form of use cases and user stories and differentiate between functional and non-functional requirements. 3. Develop static and dynamic UML diagrams to model both the structural and behavioral aspects of the software system throughout the different phases of the development life cycle. 4. Create a software architecture specification, including subsystem decomposition and subsystem interface descriptions. 5. Communicate and effectively function as a member of a software development team to develop a software system based on its specification and previously created models. 6. Deliver, as a team, a coherent and professional presentation and demonstration of a functioning software system and the results of its testing.
Topical Outline
1. Software engineering and software process (3-hours) 2. Team and project management (2-hours) 3. Requirements elicitation and specification (4-hours) 4. Use case modeling (3-hours) 5. Requirements analysis (4-hours) 6. UML diagrams (4-hours) 7. Static and dynamic modeling (3-hours) 8. System design and architectural styles (4-hours) 9. Design patterns (3-hour) 10. Detailed (object) design (4-hours) 11. Object constraint language (1-hours) 12. Implementation techniques (5-hours) 13. Source code management (2-hours) 14. Persistence and storage systems (2-hours) 15. Verification and testing (3-hours) 16. Software demonstration (3-hours)