  Software engineers have significant expertise to offer when building
intelligent systems, drawing on decades of experience and methods for building
systems that are scalable, responsive and robust, even when built on unreliable
components. Systems with artificial-intelligence or machine-learning (ML)
components raise new challenges and require careful engineering. We designed a
new course to teach software-engineering skills to students with a background
in ML. We specifically go beyond traditional ML courses that teach modeling
techniques under artificial conditions and focus, in lecture and assignments,
on realism with large and changing datasets, robust and evolvable
infrastructure, and purposeful requirements engineering that considers ethics
and fairness as well. We describe the course and our infrastructure and share
experience and all material from teaching the course for the first time.
