Laboratories are most important component of Engineering Education. They must be done rigorously, each experiment must be planned a well thought experiment by the concerned class teacher, e.g., the teacher must plan well as what the student is going to learn in that, what should be performed for that gives a mapping between performed and learnt. There must be objectives set by the student and teacher must approve those objectives. When student is performing as well as when it is formed, the teacher must ask the questions, to verify that needed learning has taken place. The questions must be based on Bloom's Taxonomy, for example, rather than asking the student to explain, ask, what changes are required if objective is changed to so and so, what happens if certain procedure is changed, will the behavior be consistent on changing input to the program, and so on. If learning takes place like this, the student will be ready to face new challenges during the professional career.
Do not just learn the computer languages by their syntax, but, give more attention on problem solvability. Often, a student learns syntax of the programming languages quickly, and many a times, with any body's assistance. But, what is important is to apply those syntax in real-life problems, and possibly those which your as teacher and students are solving first time. When I visited MIT in 2018, I was told by one student that a student group has taken a project to schedule the traffic in the city of Boston -- there used to be sudden crowd and traffic jam as soon as students left from the schools in the afternoon, so the project team analyzed this scenarios, and rescheduled the schools closing hours by few minutes, and this solved a major problem. There are many good examples from India also, where students' B.Tech. project turned out to be a conception of national level project. Some of the more important laboratories for CS students are: