Computer Science program

Undergrad major Undergrad minor Graduate degree

Learn to harness the power of computers to help solve problems.

Unlock the boundless potential of the digital realm and shape the future with the captivating world of software. In this interconnected era, software permeates every facet of our lives. From cell phones to insulin pumps to cars and smart watches, we interact with it every day. 

With a computer science degree, you can master the art of coding to open doors to a multitude of fascinating career pathways. With software as your canvas and your imagination as the brush, you can create artistic masterpieces that have the potential to revolutionize entire industries.

In UWL's Computer Science program, you will gain foundational knowledge for software development, computer systems and theory of computation. The program has a reputation for small class sizes, excellent graduate placement rates with high-paying salaries, undergraduate research opportunities and accessible professors who can give students a level of attention not found on larger campuses.

Computer science jobs

As software has become an integral and growing part of our society, graduates find work in all types of businesses and industry. Although job titles may vary, computer scientists find work involving software and the intercommunicating systems it creates.

The demand for computer scientists continues to grow. The National Bureau of Labor Statistics' Occupational Outlook Handbook consistently projects the software industry to be among the fastest growing sectors of the economy. And the employment of software developers is projected to grow 22 % from 2019-2029, much faster than the average for all occupations. Starting salaries for computer science majors from UWL are among the highest of any major on campus with starting salaries exceeding $65,000. Many graduates are now in management positions and return to campus to interview new graduates.

What distinguishes UWL's Computer Science program?

Excellent job placement including grads working at Fortune 500 companies

UWL Career Services placement statistics show the majority of computer science majors find work upon graduation. Recent employers include: Epic, Trane Technologies, Lockheed Martin, Microsoft, Amazon, Google, SpaceX, Boeing, Expedia, Fastenal, Capital One, American Express, Yahoo, Oracle, Federated Insurance, Apple, IBM, LHI, Skyward, TDS, Sentry, and SAP.

Undergraduate research opportunities

Computer science students at UWL frequently work directly with faculty on cutting-edge research. This research is often supported by grants and scholarships and frequently leads to conference presentations and academic publications. Examples of recent research opportunities for students:

Talented students, top-notch faculty

ACT scores for entering computer science students are among the highest at UWL. Faculty come from diverse backgrounds in the field, but all share a love of teaching. Twelve professors hold doctorates in computer science or engineering. Three faculty members are nationally-recognized authors of college level computer science textbooks. Faculty members remain active in research, give presentations, write publications and successfully apply for grants each year.

Distinguished Lecture Series in Computer Science

Each year a leader in computing is invited as the UWL Distinguished Lecturer in Computer Science. This guest makes several presentations to students and staff during a two-day campus visit.

High school preparation

The department strongly encourages high school juniors to take an appropriate math class their senior year, even though they may have met their math requirements. Calculus or Pre-Calculus will better prepare students for the computer science program.

Computer science internships

UWL has one of the largest and most active internship programs in Wisconsin. Many computer science juniors and seniors choose to gain work experience via internships available through local companies or throughout the country. Paid internships are the norm in computer science compared to other fields of study.

50-year-history, strong reputation

The department is the second oldest in Wisconsin, only behind Madison, and has a fine reputation within the computing industry during the past 50 years.

Access to cutting-edge computing technology

Computer Science students have convenient access to some of the best computing technology available in the world. The department maintains a software development laboratory for general use by all majors, along with more specialized systems and services.

  • A Eucalyptus Cluster allows students to deploy and configure virtual machines to support class projects. It is an open-source version of Amazon’s AWS, one of the most used web computing platforms in the world.
  • Four V100 Nvidia GPUs provide extremely high computing power for research in machine learning and data science.
  • Docker Server provides an environment for deploying containerized services.
  • XSEDE Supercomputer access through the Campus Champion program provides for large scale parallel programming projects using world-class computing resources.
  • A collection of 3D printers gives students the ability to fabricate parts and components for projects in robotics and embedded systems.
  • The pick-and-place machine provides students with experience in the automatic assembly of printed circuit boards.
  • The department maintains other facilities and equipment for information security, robotics, graphics and visualization, and hardware design and fabrication.
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.

Areas of study

Computer Science

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.

Undergrad major Undergrad minor View a sample plan for Computer Science Catalogfor Computer Science Learn more for Computer Science

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 Catalogfor 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 Catalogfor 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 Graduate degree View a sample plan for Undergrad dual degree Catalogfor 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 Catalogfor 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 Catalogfor Undergrad + graduate dual degree

Sample courses

CS 220 Software Design II 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.

CS 272 Digital Circuit Design for Microcontrollers I 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.

CS 353 Analysis of Algorithm Complexity 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.

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 402 Web Application Development 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.

CS 418 Mobile Application Development 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.

CS 421 Programming Language Concepts 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.

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.

CS 449 Advances in Software Engineering 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.

CS 451 User Interface Design 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.

CS 452 Artificial Intelligence 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.

CS 454 Digital Image Processing 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.

CS 455 Fundamentals of Information Security 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.

CS 457 Machine Learning 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.

CS 461 Introduction to Data Science 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.

CS 464 Advanced Database Management Systems 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.

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.

CS 475 Computer Graphics and Modeling 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.

CS 499 Research in Computer Science An opportunity to become acquainted with literature in the field and to work on a professional level research project within an area of interest of the computer science faculty. A seminar reviewing the results of the study will be a requirement for completion of the course. Repeatable for credit - maximum six. Consent of instructor. Offered Fall, Spring.