Part-Time Programs in Engineering and Applied Science, 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 and Overview of Software Engineering
  2. Software Procurement Phase
  3. Software Requirements Analysis Phase
  4. Software Reviews / Project Requirements Review
  5. Software Design Fundamentals
  6. Effective Module Design / Program Design Language
  7. Software Design Techniques
  8. Real-Time Software Design
  9. Mid-term Exam / Project Design Review
  10. Coding Phase
  11. Software Testing Fundamentals
  12. Software Testing Strategies
  13. Software Delivery Phase / Software Maintenance Phase
  14. Final Exam / Project Due Date

Instructor
George Kalb has been practicing software engineering since 1982. His experience spans software systems development in the real-time embedded DOD/Military electronics through commercial applications. He has participated on software development projects ranging from small R&D through large (100+ engineers) full-scale development efforts. His primary responsibilities involve the application of software engineering principals in relation to acquisition of new business, proposal writing, and new product development activities. This has enabled Mr. Kalb the unique opportunity to learn how other companies, throughout the country and across various industrial segments, practice the art of software engineering. Mr. Kalb applies these broad experiences into the course material to provide a foundation course that emphasizes state-of-the-practice, what works, what doesn't, and where industry and technology are headed in the future.

E-mail the instructor.

Computer Lab Requirements
A team-developed project is required as part of the course. Projects must be implemented in the C++ programming language and be hosted on the JHU Sun (UNIX) environment to support integration with other (related) class developed projects and to support demonstrations on the last day of the course.

Textbook
Software Engineering, A Practitioner's Approach by Roger S. Pressman (optional)


Return to Computer Science Courses | Computer Science  | Part-Time Engineering

Fall 98-99