Computer Engineering is the design and analysis of computer systems applied to the solution of practical problems. It encompasses both hardware and software design in applications ranging from telecommunications and information systems to process control and avionics. Computer Engineering students learn the mathematics of discrete as well as continuous systems, the design of digital machines such as processors and memories, the fundamentals of software design, and the principles used in communications systems such as telephone networks and the Internet. Computer Engineering shares many fundamentals with Electrical Engineering, and these are covered in a common curriculum up to and including Term 4. Although students must decide to take Computer or Electrical Engineering prior to Term 3, they are not required to select between Computer and Electrical Engineering until the completion of Term 4. In Terms 5 and 6, students who have selected the Computer Engineering program will take a core appropriate to the program. In recognition of the considerable diversity of careers available to computer engineers, students are given latitude in the final three terms to choose from a wide range of electives in various speciality areas. Electives can be tailored to meet the needs of those who plan to go straight into industry as well as those who wish to join the increasing number of our graduates who are pursuing advanced degrees.