Correct and complete implementation of software requirements. Verification and validation lifecycle. Requirements analysis, model based analysis, and design analysis. Unit and system testing, performance, risk management, software reuse. Ubiquitous computing.

This course will introduce students to Artificial Intelligence (AI), beginning from historical and philosophical perspectives, progressing through a number of core topics from classical AI, and then dealing extensively with various areas of machine learning. The latter topic will emphasize connectionist architectures (artificial neural networks) and evolutionary computing approaches.

The course highlights the design, development, and evaluation of human-computer interfaces, with an emphasis on usability, interaction paradigms, computer-mediated human activities, and implications to society. These issues are studied from a number of perspectives including that of the engineer and end-user. A team-based project applies your knowledge and skills to the full life cycle of an interactive human-computer interface.