Accessibility menu

Skip to main content Skip to footer

Undergraduate programs

Computer Science

Undergrad major Undergrad minor

Computer science is the study of computing systems and the software processes that control them. Computer scientists have developed powerful algorithms in the areas of artificial intelligence, data mining, machine learning, computer vision, security and many other areas. These algorithms are then used for medical imaging, stock market analysis, computer graphics, video processing, and other fields. UWL's program emphasizes software development and includes a variety of electives to allow students to study specific areas of personal interest.

Areas of study

Computer Engineering Technology Emphasis

Computer engineers develop new computer hardware systems and write the software to support these systems. For this emphasis area, students must have completed the Associate in Applied Science degree requirements for electronic and computer engineering technology at Western Technical College (Western) with a GPA of 3.0 or above.

Undergrad major View a sample plan for Computer Engineering Technology

Cybersecurity Emphasis

The cybersecurity emphasis focuses on how to craft software systems that remain robust in the presence of intelligent attackers. Students learn cutting-edge techniques to identify and exploit vulnerabilities in software, and then they learn how to remove these vulnerabilities, leaving the software more resilient.

Undergrad major View a sample plan for Cybersecurity

Undergrad dual degree

Students with a computer science major who also are interested in engineering are able to receive both a Bachelor of Science degree in computer science from UWL and a Bachelor of Science degree in engineering from UW-Madison through this dual degree program.

Undergrad major View a sample plan for Undergrad dual degree

Undergrad + graduate dual degree

The dual degree program in Computer Science and Master of Software Engineering enables students to complete a Bachelor of Science in Computer Science and a Master of Software Engineering from UWL, with less time in school and less tuition. This program can be completed in five years compared to what typically would take six years when completing both degrees separately.

Undergrad major Graduate degree View a sample plan for Undergrad + graduate dual degree

Undergrad + graduate dual degree

The dual degree program in Computer Science: Cybersecurity Emphasis and Master of Software Engineering enables students to complete a Bachelor of Science in computer science and a Master of Software Engineering from UWL, with less time in school, less tuition. This program can be completed in five years compared to what typically would take six years when completing both degrees separately.

Undergrad major Graduate degree View a sample plan for Undergrad + graduate dual degree

Computer Engineering

Undergrad major

Computer engineers invent new computer systems. Many tasks performed by a computer can be done through either hardware or software. Computer engineers focus particularly on the boundary between hardware and software. They study the trade-offs involved to decide which tasks should be done using hardware versus software, and design the interface between the two. They look for opportunities for improvements in computer performance and energy efficiency. They also integrate computers with sensors and actuators to make computers part of our everyday life.

Computational Science

Undergrad minor

Graduate programs

Software Engineering

Graduate degree

Fintech

Graduate certificate

Areas of study

Emerging Technologies in FinTech

Graduate certificate

Leading FinTech Transformation

Graduate certificate

Featured courses

  • Introduction to the Computing Environment
    CPE 105 | 1 credit
    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.
  • Digital Logic
    CPE 212 | 3 credits
    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.
  • Software Design III: Abstract Data Types
    CS 340 | 4 credits
    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.
  • Computer Architecture
    CS 370 | 3 credits
    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.
  • Operating System Concepts
    CS 441 | 3 credits
    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.
  • Electrical Circuits
    PHY 334 | 3 credits
    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.
  • Systems Development
    CPE 309 | 3 credits
    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.
  • Virtual Machines
    CPE 478 | 3 credits
    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.
  • Code Generation and Optimization
    CPE 466 | 3 credits
    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.
  • Introduction to Robotics
    CS 431 | 3 credits
    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.
  • Digital Design
    CPE 420 | 3 credits
    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.
  • Parallel and Distributed Computing
    CS 470 | 3 credits
    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.
  • Internet of Things
    CS 472 | 3 credits
    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.
  • Software Design II
    CS 220 | 4 credits
    This is a second course in the design of programs. Emphasis is placed on data abstraction and its application in design. Definitions of abstract data types are examined. The following structures are examined as methods for implementing data abstractions: recursion, generics, stacks, queues, strings, and various linked lists. Students will be expected to write several programs using these techniques in a modern programming language. Prerequisite: CS 120; concurrent enrollment in CS 225 recommended. Offered Fall, Spring.
  • Digital Circuit Design for Microcontrollers I
    CS 272 | 3 credits
    An introduction to digital circuit design in the context of embedded microcontroller devices. This will include flip-flops, sequential and combinational logic units (e.g. shift registers, half-adders, encoders * decoders, multiplexers), state machines, analog to digital and digital to analog conversion. Prerequisite: CS 225; MTH 207. Offered Annually.
  • Analysis of Algorithm Complexity
    CS 353 | 3 credits
    An in-depth analysis of the computational complexity of a wide range of algorithms for problems of fundamental importance to computer science. Algorithms to be examined include: sorting, pattern matching and various graph algorithms. Prerequisite: CS 340; MTH 207. Offered Fall - Even Numbered Years.
  • Computer Architecture
    CS 370 | 3 credits
    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.
  • Web Application Development
    CS 402 | 3 credits
    This course will give a detailed description of the core concepts and general principles of web application development. The course will cover various protocols, programming languages, scripting languages, data storage and security, layered software architectures, and graphical interface design as they relate to web development. Students will apply these techniques to the development of medium scale web application. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 202; CS 340; junior standing. Offered Spring.
  • Mobile Application Development
    CS 418 | 3 credits
    An introduction to the concepts and techniques of application development for mobile devices. The course will examine the design constraints of mobile devices, how mobile applications can leverage external data resources, integration of sensor data and the development environments of the chosen platform (e.g. iOS, Android and others). This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Repeatable for credit with different topic - maximum six. Prerequisite: CS 340; junior standing. Offered Occasionally.
  • Programming Language Concepts
    CS 421 | 3 credits
    A comparative study of the concepts underlying the design of contemporary high-level programming languages, including imperative, functional, logic and object-oriented paradigms; formal representation of syntax and semantics; control structures; data and procedural abstraction; scope and extent; parallelism and exception handling. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; CS 225 or MTH 225; junior standing. Offered Fall, Spring.
  • Introduction to Robotics
    CS 431 | 3 credits
    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.
  • Advances in Software Engineering
    CS 449 | 3 credits
    Introduces advanced topics in software engineering. Topics include prototyping models, risk analysis, component-oriented software development, software architectures, software reuse, software metrics and quality analysis. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 341; junior standing. Offered Fall - Even Numbered Years.
  • User Interface Design
    CS 451 | 3 credits
    This course focuses on the design and implementation of user interfaces. The topics include characteristics of user interfaces, user profiles, user interface design principles, methods and tools for user interface development, evolution of user interfaces, evaluation of user interfaces, and case studies. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Fall - Odd Numbered Years.
  • Artificial Intelligence
    CS 452 | 3 credits
    This course is an introduction to the fundamental principles of artificial intelligence. Topics include search strategies, adversarial search, constraint satisfaction, planning and scheduling, logic and inference, accounting for uncertainty, and probabilistic reasoning. Projects include writing a substantial artificial intelligence application program. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Fall - Odd Numbered Years.
  • Digital Image Processing
    CS 454 | 3 credits
    This course introduces the fundamentals of digital image processing techniques with an emphasis on the design and implementation of image processing algorithms. Topics include color models, point-processing techniques, convolution, Fourier domain processing, the discrete cosine transform, image compression methodologies, image restoration and enhancement, sampling and image display. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Fall - Even Numbered Years.
  • Fundamentals of Information Security
    CS 455 | 3 credits
    This course presents the fundamental concepts of information security. Basic policies, techniques and tools for maintaining the security of host computers, information networks and computer software are presented. Topics include encryption, authentication, access control, types of attacks and mitigations, software security, network security protocols, and the concepts of trust, privacy and ethics. Students are expected to compare security policies and techniques, apply concepts using modern tools and techniques, and explore recent security events. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 270, CS 340; junior standing. Offered Spring.
  • Machine Learning
    CS 457 | 3 credits
    This course is an investigation of programs that can dynamically adapt their behavior. The course focuses on two main ideas: data classification and deciding about actions. In both cases, a learning algorithm is one that improves performance, either by generating a more accurate classifier, or by finding a choice of action that leads to better outcomes. Students will learn various computational and mathematical models and techniques that can be applied to such problems. Topics include regression algorithms, decision trees, Markov processes, neural networks, reinforcement learning algorithms, and deep learning techniques. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Fall - Even Numbered Years.
  • Introduction to Data Science
    CS 461 | 3 credits
    This course examines key components of the data science lifecycle, including data collection and cleaning, exploratory data analysis and visualization, and extracting insight via statistical models and machine learning algorithms for regression, classification, and clustering. Algorithmic efficiency and scalability will be emphasized, and techniques for working with big data will be introduced. Students will use a modern programming language (e.g., R, Python) with appropriate packages suitable for data analysis. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; STAT 245 or CS 351; junior standing. Offered Alternate Years.
  • Advanced Database Management Systems
    CS 464 | 3 credits
    Advanced topics in database management systems. Topics include the relational data model, relational calculus, embedded SQL programming, database application programming, indexing, system software and storage structures for databases, concurrency control, crash recovery, database administration, parallel and distributed databases, object-oriented databases. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 364; junior standing. Offered Spring - Odd Numbered Years.
  • Parallel and Distributed Computing
    CS 470 | 3 credits
    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.
  • Internet of Things
    CS 472 | 3 credits
    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.
  • Computer Graphics and Modeling
    CS 475 | 3 credits
    An introduction to computer graphics in modern computing environments. Topics include geometric transformations, fundamental drawing algorithms, scalable vector graphics (SVG), OpenGL, WebGL, surface shaders, scene graphics, photorealistic rendering, surface mesh data structures, animation and modeling and GPGPU computing. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; MTH 207; junior standing. Offered Fall - Odd Numbered Years.