Foundations of Software Engineering
605.401
Course Description
Fundamental software engineering techniques and methodologies commonly used during software development are studied. Topics include various life cycle models, project planning and estimation, requirements analysis, program design, construction, testing, maintenance and implementation, software measurement, and software quality. Emphasized are structured and object-oriented analysis and design techniques, use of process and data models, modular principles of software design, and a systematic approach to testing and debugging. The importance of problem specification, programming style, periodic reviews, documentation, thorough testing, and ease of maintenance are covered.
Syllabus
- Introduction / What is software
- Development processes
- Practice and Teaming
- Requirements
- Analysis Modeling and Design Engineering
- Software Design Techniques
- Mid-term Exam
- Software Coding techniques
- Testing and debugging
- Software Metrics / Quality Assurance
- Project Scheduling / Risk Management / Change Management
- SOA / Web Services / Web Engineering
- Project Presentations
- Final Exam
Prerequisites
Instructor
Jeffrey Chavis has over 15 years of experience developing for DOD / Military, educational, research, and commercial applications
Mr. Chavis has extensive experience as both a programmer and in program management. Mr. Chavis is currently a project Manager at JHU/APL, guiding the development of web service based applications for use in the emergency response and disaster management domain space.
Mr. Chavis bring this experience to guide students in to best practices for software development, touching on classical theory as well as state of the art techniques, what works, what doesn't, and offering insights as to future trends in industry and technology.
Mr. Chavis holds a Masters Degree in Electrical Engineering from the University of Maryland College Park.
Course Section, Location, and Time
Please refer to the
Course Schedule
for section information, including time and location.
Computer Lab Requirements
A team-developed project is required as part of the course. Project teams can choose from C, C++ or Java. Final code must run on the JHU Unix paltform
Textbook
by
Return to Part-Time Engineering
Return to Whiting School of Engineering
Return to JHUniverse