In this paper, we describe practical experiences, acquired over several years, in the development of a graduate level course in applied computer graphics. Since the target audience of the course is engineers and scientists, we focus mainly on topics related to pre-processing and post-processing techniques, which, although fundamental for performing numerical simulations, are usually neglected in the educational process. The course structure involves and covers the following topics: representation of curves and surfaces; brief introduction to computational geometry; topological data structures; mesh generation: structured and unstructured; Delaunay triangulation and boundary propagation; modeling and representations of solids: models by space decomposition and B-Rep; overview of visualization techniques. Our main challenge is to teach very complex subjects that students will be exposed to for the first time in this course. However, students who pursue such courses are usually at a high level of maturity and understand that the topics covered are fundamental for their career and research. Therefore, to give an effective and practical character to the course, we follow an approach that is completely based on the development of practical software with user interfaces, relying on open source packages with Python APIs. We chose to use Qt and OpenGL to create interactive graphical user interfaces in a hands-on scheme. The course starts with the development of a curve collector and ends with a full-functional 2D mesh generator. Experiences acquired over the years are combined to achieve the best performance and learning process. A taste of the course can be found at https://web.tecgraf.puc-rio.br/~lfm/compgraf-251/.