Teaching Software Engineering and Software Project Management: An Integrated and Practical Approach