Computer Engineering program

Explore the amazing world of computer engineering.

You'll immerse yourself in an in-demand field that perpetually pushes the boundaries of innovation, revolutionizing the way we experience faster and more efficient computers.

In UW-La Crosse's highly-regarded Computer Engineering program, you'll develop cutting-edge hardware systems and craft ingenious software solutions that tackle real-world challenges head-on. From agriculture to medicine to entertainment, computer engineers are sought after in industries where computers provide the backbone of vital human services and industries.

If you possess a passion for math, physics, and precision, this path could be your perfect fit. You'll progress through captivating courses in software development, digital and analog circuit design, and the integration of hardware and software. Collaborate with other inquisitive minds on a year-long senior project, solidifying your skills and expertise while fostering invaluable connections in the industry. Our program will empower you to discover and master the mysteries of computer engineering and embark on a rewarding career that will shape the future of technology.

Undergrad major

A program within the Department of Computer Science & Computer Engineering

Computer engineering jobs

Computer engineers find careers in computer hardware development, software development, or both. They are employed in a wide variety of industries, not just at companies that research and develop computers. The U.S. Bureau of Labor Statistics projects that the job outlook for computer engineers is expected to grow by 5% from 2016-26 and by 10% within Wisconsin alone during the same 10-year span. Computer engineering salaries are at the upper end of starting salaries for four-year graduates in any discipline. Computer hardware engineers have a high earning potential with a median annual wage of about $120,000.

Computer engineers interested in hardware development can find jobs in: robotics and automation, digital circuit design and verification, digital signal processing, embedded hardware and computer architecture. Computer engineers interested in software development can find careers developing software for: device drivers, compilers for high-level programming languages, embedded system firmware, operating system kernels and virtual machines. 

Industries that employ computer engineers

  • Companies that research and develop computers
  • Automotive
  • Aerospace
  • Medical equipment
  • Agriculture equipment
  • Defense
  • Renewable energy
  • Home and office appliance
  • Manufacturing automation
  • Many more

Further education

Computer engineering graduates can continue their education in a master’s or doctoral program. Students who obtain post-graduate degrees can expect to find jobs in advanced software or hardware development, research or academia.

What distinguishes UWL's Computer Engineering program?

Small class sizes

The average enrollment in computer science classes is less than 30 students. The average enrollment in computer engineering classes has been 10-12 as the department ramps up the program.

Courses are taught by faculty — not teaching assistants

The Computer Science Department has twelve faculty — all with doctoral credentials and all dedicated to the success of the new computer engineering program. Three of the faculty members have degrees specifically in computer engineering, and they are routinely involved in research in computer engineering.

Talented and motivated students

While the computer engineering program is relatively new, the quality of incoming students is on-par with the already excellent pool of computer science students. Existing students routinely participate in undergraduate research, obtain highly-competitive grant funding, and work as interns at companies well-known in the industry.

World-class computing resources and equipment

The department maintains a wide variety of high-performance servers for courses and for research projects. Industrial-strength lab equipment is available, with plans to expand.

Required work in virtual machines appeals to employers

The program includes a course sequence culminating in a senior level virtual machines offering. A virtual machine uses one computer to pose as another. Virtual machines are important because they are the backbone of the cloud. They help in making secure systems, and they make computers compatible with other systems and software. For efficient virtual machines, both hardware and software need to be finely-tuned, making this a perfect topic for computer engineers. While a few other universities have virtual machines as an elective topic, UWL is the only known undergraduate program to require topics in virtual machines, making graduates highly-desirable to employers.

Student organizations
  • Computer Science Club - The department sponsors a student chapter of the Association for Computing Machinery (ACM) that hosts professional speakers, organizes field trips, hosts LAN parties and promotes social functions for computer science students.
  • CODERS - This student group is dedicated to community outreach, diversity, and facilitating an inclusive community within the CS department. They welcome students who wish to share their passion for computing with peers and the greater community through social, professional development, and community events with organizations.
  • Makeshift Computer Science & Engineering Club – Welcoming all majors, Makeshift is a club about making stuff. They hack together wires, solder, and code to make and repair gadgets and games.
50-year-history, strong reputation

The Computer Science Department has an over 50-year history of delivering innovative curriculum, and the computer engineering program continues that tradition.

Program based on ACM curriculum guidelines for computer engineering

The program leverages existing expertise and courses within the Computer Science Department and Physics Department. Several new courses specific to engineers round out the curriculum. Graduates will be experts in writing low-level systems software and experts in digital circuit design, subfields of computer science and electrical engineering, respectively. The program offers unique courses not found anywhere else, leveraging the strengths of faculty.

Sample courses

CPE 105 Introduction to the Computing Environment This course introduces students to the use of the UNIX/Linux environment for file and process management, programming workflow, and the automation of computing tasks. The ethical responsibilities of shared computing resources are emphasized. Offered Fall.

CPE 212 Digital Logic This course is an introduction to the fundamentals of digital logic circuit analysis and design. Basic Boolean logic primitives are introduced and described in truth tables, schematics and Boolean expressions. Combinational logic circuits are minimized with DeMorgan's Law and Karnaugh Maps. Level-sensitive and edge-triggered sequential logic elements are used as building blocks for finite state machines. Circuits are simulated using a structural hardware description language. Prerequisite: CS 120; concurrent enrollment in CS 270. Offered Spring.

CS 340 Software Design III: Abstract Data Types This course is an extensive survey of data structures and associated algorithms. An introduction to algorithm efficiency measures is included as a tool for deciding among alternate algorithms. Topics include searching and sorting in arrays, hash tables, tree traversal and search algorithms, expression evaluation, functional programming, development of thread-safe data structures and graphs. Prerequisite: grade of "C" or better in CS 220; CS 225 or MTH 225. Offered Fall, Spring.

CS 370 Computer Architecture A presentation of the logical organization of modern digital computers. Topics include performance evaluation, instruction set design, computer arithmetic, processor control, pipelining, cache memory, memory hierarchy, memory and system buses, and I/O organization. Prerequisite: CS 270. Offered Fall, Spring.

CS 441 Operating System Concepts The study of the structures and algorithms of operating systems. Operating systems are viewed as managers and controllers of resources such as processors, memory, input and output devices and data. Topics include multiprogramming systems, CPU scheduling, memory management and device management. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; CS 370; junior standing. Offered Fall, Spring.

PHY 334 Electrical Circuits Physical principles underlying modeling of circuit elements and fundamentals of analog electrical circuits are explored through lecture and laboratory. Topics will include the following: current and voltage sources, resistors, I-V characteristics, Ohm's Law, Kirchhoff's Laws, capacitors, inductors; Thevenin and Norton theorems; circuits in sinusoidal steady state; diodes, transistors (bipolar junction and field-effect); op-amps; and elementary amplifier circuits. Lect. 2, Lab 2. Prerequisite: PHY 104 or PHY 204; MTH 208. Offered Spring.

CPE 309 Systems Development This course is an introduction to systems programming and the UNIX/Linux user-space interface to the operating system. Low-level C programming constructs are discussed and used to write efficient and robust systems code. The various tools used in file inspection, systems development and maintaining a portable build environment are also examined. Prerequisite: CPE 105; CS 270. Offered Fall.

CPE 478 Virtual Machines This course explores the design of virtual machines and their related systems. Students will study efficient emulation of user-level programs, both within the same instruction set as the host machine, as well as across instruction sets. System-level considerations will be introduced to expand the reach of possible virtualization strategies. Both hardware and software techniques for efficient virtualization will be employed. Prerequisite: CPE 309; CS 441. Offered Spring.

CPE 466 Code Generation and Optimization This course studies the algorithms used by a modern optimizing compiler for generating efficient, high-performance program executables that still maintain correct program semantics. The course uses the compiler intermediate representation as a starting point for a variety of code transformations necessary for local and global optimizations, profile-guided optimizations, constructing large optimization regions, register allocation, and instruction scheduling. Prerequisite: CS 370. Offered Occasionally.

CS 431 Introduction to Robotics This course is a hands-on introduction to the algorithms and techniques required to write robot control software. Topics include the components of mobile robots and robot manipulators, manipulator kinematics, robot task planning, sensing, sensor fusion, visual servoing and robot control concepts. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Spring - Odd Numbered Years.

CPE 420 Digital Design This course covers the design and implementation of large, complex digital systems. Students will describe designs with fully-synthesizable, behavioral Verilog. The efficiency of designs will be analyzed for bottlenecks that can be solved with architectural and/or implementation optimizations. Emphasis will be placed on the test of systems. Functional testing will include the use of simulation test benches with calls to high-level languages. Prerequisite: CPE 212; CS 370. Offered Occasionally.

CS 470 Parallel and Distributed Computing A study of architectures, control software, and applications for parallel and distributed systems. A survey of parallel and distributed architectures including data flow machines, vector processors, shared memory multiprocessors, and message based multiprocessors. Software topics include process communication and synchronization, global state maintenance, negotiation, scheduling, data parallelism, control parallelism, and languages for parallel and distributed computing. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 370; junior standing. Offered Occasionally.

CS 472 Internet of Things This course explores the possibilities which are created when everyday things become connected to the internet and how this can create new ways for humans to interact with computation and for computation to enable human activities. This course involves building small, sensor equipped hardware devices and cloud based software systems using various technologies. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340, CS 372; junior standing. Offered Annually.