ENPM6553AI-based Software SystemsThe goal of this new course is to address the important problem of specifying, developing, and testing software systems that are based on artificial intelligence (AI) components. Since such systems are often safety critical or must be dependable for other reasons, it is important that quality is built in throughout the software development life cycle. It is important to note that the focus of the course is not on generic software engineering or on how to train neural networks, even though we will touch upon those topics. The core of the course is instead about how to specify, develop and test software systems that are based on or uses AI. Data scientists are often great at building models with cutting edge techniques, but incorporating those models into functioning software products presents different engineering challenges. For example, data scientists may work with un-versioned notebooks on static data sets and focus on prediction accuracy while ignoring scalability, robustness, update latency, or operating cost. Software engineers, in contrast are typically trained with clear specifications and tend to focus on code, but may not be aware of the difficulties of working with data and unreliable models. They have a large toolset for decision making and quality assurance, but may not know how to apply those to AI-enabled systems and their challenges. This course discusses questions such as: To what degree can existing SE practices be used for building intelligent systems? To what degree are new practices needed? This course adopts a software engineering perspective on building intelligent systems, focusing on what a software engineer can do to turn a machine learning idea into a scalable and reliable product. The course will use software and systems engineering terminology and techniques (e.g., test coverage, architecture views, fault trees) and discuss challenges posed by using such techniques on machine learning/AI components. The course will include one lecture on teaching/refreshing fundamentals of machine learning and AI to provide a basic understanding of relevant concepts (e.g., feature engineering, linear regression vs fault trees vs neural networks). The course will also briefly cover design thinking and tradeoff analysis. It will focus primarily on practical approaches that can be used now and will feature hands-on practice with modern tools and infrastructure.

Top