Mood Bridwell 110A
Other times by appointment and whenever I'm in!
Schedule -- updated frequently on Moodle
Introduction to techniques and theories for the development of large software systems. This course will fulfill the capstone requirement in Computer Science. Topics include: software design and quality, ethics, professional issues, and the study of current software engineering trends, theory and practice. A major semester project is expected from each student, as well as significant class participation and presentation.Prerequisites: Six courses in the major at the 300 level or above, and permission of instructor and consent of instructor. (Spring)
This course aims to give students both a theoretical and a practical foundation in software engineering. In the theoretical part, students will learn about the principles and methods of software engineering, including current and emerging software engineering practices and support tools. In the practical part, students will become familiar with the development of software products from an industry perspective, including generation of appropriate documents, under tight schedules and limited resources. Because this is a writing component course, there will be heavy emphasis on written communication skills.Recommended Texts (required information):
of the Killer Robot ,
Richard Epstein and Mike Melamed.
Southwestern University will make reasonable accommodations for persons with documented disabilities. Students should register with the Center for Access and Academic Resources, located on the first floor of the Prothro Center. Professors must be officially notified by the Access and Academic Resource Coordinator that documentation is on file at least two weeks before the accommodation is needed.
Grading Policy :
This semester will include the piloting of a new capstone grading rubric. This rubric will list the objectives of the course and be used to assess how well each student meets those objectives. However, the grade in the course will be assigned according to the schema below. The rubric itself will be linked from here.
|Assignment/Component:||% of grade||Individual or Team||Approximate Due Date|
|Systems Analysis||5%||Individual or pairs||Part I -- January 18|
SRS draft 2/22
SRS revision 3/5
User Manual 4/16
Presentation at CW&RS abstract due 3/5
Presentation at CW&RS 4/4
|MFAT Test Feb 29||5%||Individual|
|Midterm Exam March 9 due (under door) chapters 1-4 Pfleeger||10%||Individual|
|Final Exam due April 25 -- to be distributed April 16||10%||Individual|
Late/missed work: No late work/make-up work will be accepted.
Honor code: The honor code applies to the book review and the exams. The typical University-wide honor code expectations (e.g., regarding plagiarism and cheating) will be in force.
Disclaimer: This syllabus is a guideline. Particulars may be discussed and changed in class.
Attendance: Any unexcused absence will result in a grade reduction. More than two absences of any type may result in withdrawl from the course. An excused absence must be arranged in advanced with the instructor.
The team project will consist of the project
the SRS (Software Requirements Specification), the SDS (Software Design
Specification), team meeting reports, the testing plan &
and the user documentation and user's manual. Note that these
45% of the course grade, and are team grades (all members of the team
receive the same grade for these components of the team project, based
on the overall quality of the work). Your team will need to meet on a
basis regarding your project; a record of these meetings will be
in your weekly journal entries and blog. You will need to keep detailed
notes of all meetings with your project client as well.
TBACourse topics (including but not limited to)
- Systems Analysis Fact-finding, client visit, pre-engineering phases
- Software Engineering The software crisis, principles of software engineering, programming-in-the-small vs. programming-in-the-large
- Software process: The software lifecycle, the waterfall model and variations, introduction to evolutionary and prototyping approaches. agile development, use cases, refactoring, uml
- Project management: Relationship to lifecycle, project planning, project control, project organization, risk management, cost models, configuration management, version control, quality assurance, metrics
- Teamwork: Team dynamics, communication skills, sharing work, fulfilling obligations
- User considerations: Human factors, usability, internationalization, user interface documentation, user manuals, accessibility
- Software requirements: Requirements analysis, requirements solicitation, analysis tools, requirements definition, requirements specification, static and dynamic specifications, requirements review.
- Software design: Design for reuse, design for change, design notations, design evaluation and validation
- Implementation: Programming standards and procedures, modularity, data abstraction, static analysis, unit testing, integration testing, regression testing, tools for testing, fault tolerance
- Maintenance: The maintenance problem, the nature of maintenance, planning for maintenance
- Documentation: Documentation formats, tools, internal documentation
Other topics: Formal methods, tools and environments for software engineering, role of programming paradigm, process maturity. Ethical considerations