Abstract
Undergraduate software engineering programs typically include courses covering traditional models of the software development lifecycle. Following the SWEBOK guidelines, these may involve in the most straightforward case courses on Software Requirements Specification, Software Design, Software Construction or Implementation, and Software Testing. In practice, these courses are organized in a vertical sequence, with some being prerequisites to others, according to the individual stages in the development cycle, and are rarely intertwined or considered together on a cross-section basis. The contribution of this work is to demonstrate a practical way and share respective experience of integrating the four courses into a cohesive software development project block, additionally including a maintenance component with a fifth senior level course: Software Project in Computer Networks. The three essential benefits of such approach include: (1) increasing the size of the senior software project making it more realistic from an industrial perspective, (2) strengthening the understanding of software engineering concepts by applying them across the entire block rather than in isolation in individual courses, as well as (3) reducing project overload that may arise if each course were to require its own project.