This course will teach you the principles of 3D computer graphics: meshes, transforms, lighting, animation, and making interactive 3D applications run in a browser.

Learn how to program all the major systems of a robotic car. Topics include planning, search, localization, tracking, and control.

Learn how to catch bugs and break software as you discover different testing methods that will help you build better software.

Software Development Processes explores requirements engineering, architecture and design, testing, and software quality in general.

This course will introduce you to the basics of AI. Topics include machine learning, probabilistic reasoning, robotics, computer vision, and natural language processing.

Software engineering is the study and an application of engineering to the design, development, and maintenance of software.[1][2][3]


Typical formal definitions of software engineering are:

  • "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software";[4]
  • "an engineering discipline that is concerned with all aspects of software production";[5]
  • and "the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines."[6]