Engineering and Applied Science Programs for Professionals, Johns Hopkins University
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

  1. Introduction / What is software
  2. Development processes
  3. Practice and Teaming
  4. Requirements
  5. Analysis Modeling and Design Engineering
  6. Software Design Techniques
  7. Mid-term Exam
  8. Software Coding techniques
  9. Testing and debugging
  10. Software Metrics / Quality Assurance
  11. Project Scheduling / Risk Management / Change Management
  12. SOA / Web Services / Web Engineering
  13. Project Presentations
  14. 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