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
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.
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