Computer engineers are trained in various fields of computer science and engineering. They engage in the design and analysis of digital computers and networks, including software and hardware. Computer design includes topics such as computer architecture, VLSI circuits, computer graphics, design automation, system software, data structures and algorithms, distributed computing, and computer networks. Computer Engineering courses include programming in high-level languages such as C++ and Java; use of software packages for analysis and design; design of system software such as compilers, debuggers, and operating systems; and application of computers in solving engineering problems. Laboratories in both hardware and software experiences are integrated within the Computer Engineering curriculum.