CSE Computer Science B.S. upper division pathways and associated technical electives

Students in the B.S. program need 23 credits of upper-division technical elective coursework, including at least one course that satisfies the upper division math-oriented requirement. The Department of Computer Science & Engineering has a wide variety of upper-division technical elective courses that have been grouped into areas of study.

Rather than focusing on “choosing” an area of study, students are encouraged to view the technical elective courses as a way to go deeper into one or more specialties within computer science and use those courses as a way to further develop computer science knowledge and skills. The lists below are not meant to limit your course options; indeed, students are able to mix and match elective courses across areas if they want to explore more than one area of study. If students follow the recommendations below to have a focus in a given area, they can confidently add this information on their cv/resume.

Beginning summer 2020, the previous 15 areas of study have been merged into 6. This new simplified structure can be summarized in two main changes:

  1. Historically identified "tracks" have been combined. For example, the four formally separate architecture, networking, security, and systems tracks have been merged into one “computer systems” area. As a consequence of the merging, these options are now more flexible (e.g., you can take a blend of security and networking classes while still progressing in the unified computer systems track).
  2. Each area now comes with some text to provide guidance about why you might want to pursue this option.

Faculty-developed area options

Artificial Intelligence/Robotics

This area focuses on principles and methods of designing intelligent systems that analyze information and learn to act to achieve objectives. This can include both physical systems like robots and virtual agents that try to understand and interact with the world digitally. Topics covered in this area include knowledge representation, planning and acting for autonomous systems, discovery of patterns in data, learning and prediction, control of complex systems under uncertainty, and the theory of learning such as understanding fundamental bounds on generalization. Students completing these classes might work in robotics, data understanding, automation of human activities, and personalization. Courses in this area typically cover theory, principles and algorithms and involve large-scale projects that mix a diverse set of programming problems and hardware implementations.

Key Themes and Skills: Computer Vision, Autonomous Robots, Sensing, Decision Making, Machine Learning

Example course sequences

  • For students interested in robotics: CSCI 4511W, CSCI 5512, CSCI 5551, CSCI 5552, CSCI 5561
  • For students interested in AI and machine learning: CSCI 4511W, CSCI 5512, CSCI 5521 or CSCI 5523, CSCI 5561

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 4511W - Introduction to Artificial Intelligence (4 cr)
  • CSCI 5512 - Artificial Intelligence II (3 cr)
  • CSCI 5551 - Introduction to Intelligent Robotic Systems (3 cr)
  • CSCI 5561 - Computer Vision (3 cr)

Other technical elective courses

  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 4980 - Special Topic - Applied Machine Learning (Spring 2023) (3 cr)
  • CSCI 5521 - Introduction to Machine Learning (3 cr)
  • CSCI 5523 - Introduction to Data Mining (3 cr)
  • CSCI 5525 - Machine Learning (3 cr)
  • CSCI 5527 - Deep Learning: Models, Computation, and Applications (3 cr)
  • CSCI 5541 - Natural Language Processing (3 cr)
  • CSCI 5552 - Sensing and Estimation in Robotics (3 cr)
  • CSCI 5563 - Multiview 3D Geometry in Computer Vision (3 cr)
  • CSCI 5715 - From GPS and Virtual Globes to Spatial Computing (3 cr)
  • LING 5801 - Computational Linguistics (4 cr)
  • PSY 5018H - Math Models Human Behavior (3 cr)
  • PSY 5036W - Computational Vision (3 cr)

Computer Systems

Computer Systems is the area that studies the organization, design and implementation of computing platforms that provide services (such as computation, storage, communication) primarily intended to support other software. Classes investigate how these systems are organized into layers from processors, memory organization and virtualization, operating systems, compilers, networks and distributed systems. Students study how these layers interface with other systems, or how to improve them in various ways, such as performance, reliability, security, power consumption or cost. Students completing this area might work as network engineers, hardware designers, systems developers, or security engineers. The most relevant required classes for this area are CSCI 2021 and CSCI 4061. Coursework tends to involve a mixture of analytical and programming assignments.

Key Themes and Skills: Computer Architecture, Networks, Security, Distributed Systems

Example course sequences

  • For students interested in hardware design: CSCI 4203, CSCI 5204, CSCI 5143, CSCI 4211, CSCI 5451 or 5161
  • For students interested in operating systems: CSCI 5103, CSCI 5105, CSCI 4203, CSCI 4211, CSCI 5451 or 4707
  • For students interested in computer security: CSCI 4211, CSCI 4203, CSCI 4271W, MATH 5248, CSCI 5271, CSCI 5105
  • For students interested in computer networks: CSCI 4211, CSCI 5103, CSCI 5221, and one or more of CSCI 4131, CSCI 5105, CSCI 5231 (inactive course) or EE 5505

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 4203 - Computer Architecture (4 cr)
  • CSCI 4211 - Introduction to Computer Networks (3 cr)
  • CSCI 5103 - Operating Systems (3 cr)
  • CSCI 5204 - Advanced Computer Architecture (3 cr)

Other technical elective courses

  • CSCI 4131 - Internet Programming (3 cr)
  • CSCI 4271W - Development of Secure Software Systems (4 cr)
  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 5105 - Introduction to Distributed Systems (3 cr)
  • CSCI 5143 - Real-Time and Embedded Systems (3 cr)
  • CSCI 5161 - Introduction to Compilers (3 cr)
  • CSCI 5221 - Foundations of Advanced Networking (3 cr)
  • CSCI 5231 - Wireless and Sensor Networks (3 cr) (inactive course)
  • CSCI 5271 - Introduction to Computer Security (3 cr)
  • CSCI 5451 - Introduction to Parallel Computing (3 cr)
  • CSCI 5471 - Modern Cryptography (3 cr)
  • CSCI 5551 - Introduction to Intelligent Robotic Systems (3 cr)
  • CSCI 5708 - Architecture and Implementation of DBMS (3 cr)
  • CSCI 5751 - Big Data Engineering and Architecture (3 cr)
  • CSCI 5801 - Software Engineering I (3 cr)
  • MATH 5248 - Cryptology and Number Theory (4 cr)
  • MATH 5251 - Error-Correcting Codes (4 cr)
  • INET 4011 - Network Administration (4 cr)
  • INET 4021 - Network Programming (4 cr)
  • INET 4041 - Emerging Network Technologies and Applications (3 cr)
  • EE 4341 - Embedded System Design (4 cr)
  • EE 5505 - Wireless Communication (3 cr)

Data-Driven Computing

This area focuses on the principles and methods of designing systems that can enable better understanding of the massive amounts of data generated in all aspects of the society today. This can lead to a more nuanced understanding of scientific phenomena - across all disciplines of science, novel applications based on this understanding, and improvement in all kinds of processes. Themes explored include techniques for handling very large-scale datasets, techniques for extraction of patterns/models from data using semi- and fully-automated methods, and understanding of the patterns/models and their significance in the context of the phenomena. Additionally, there are courses that discuss specialized techniques for certain domains, e.g. biology and geography. Students choosing this area develop the knowledge/skills to work in practically any job related to disciplines like data science, big data, etc.

Key Themes and Skills: Big-Data, Machine Learning, Database, Scientific Computing, Spatial Data Science, Bioinformatics

Example course sequences

  • For students interested in databases: CSCI 4707, CSCI 5708, CSCI 4131, CSCI 5421, CSCI 4211
  • For students interested in bioinformatics: CSCI 5461, CSCI 5481, CSCI 4707, CSCI 5421, CSCI 5521 or 5523
  • For students interested in computational science: CSCI 5302, CSCI 5304, CSCI 5523, CSCI 5609, MATH 5587
  • For students interested in big data: CSCI 4707 or 5105, CSCI 5521 or 5523, CSCI 4511W, CSCI 5451, MATH 5651 or STAT 5101
  • For students interested in spatial data science & GIS: CSCI 5715, CSCI 4707, GEOG 5561, CSCI 5708, CSCI 4611, FNRM 5131 or 5262 or 5462

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 5105 - Introduction to Distributed Systems (3 cr)
  • CSCI 5304 - Computational Aspects of Matrix Theory (3 cr)
  • CSCI 5521 - Introduction to Machine Learning (3 cr) OR CSCI 5523 - Introduction to Data Mining (3 cr)
  • CSCI 5708 - Architecture and Implementation of DBMS (3 cr)

Other technical elective courses

  • CSCI 4980 - Special Topic - Applied Machine Learning (Spring 2023) (3 cr)
  • CSCI 5302 - Analysis of Numerical Algorithms (3 cr)
  • CSCI 5461 - Functional Genomics, Systems Biology, and Bioinformatics (3 cr)
  • CSCI 5481 - Computational Techniques for Genomics (3 cr)
  • CSCI 4131 - Internet Programming (3 cr)
  • CSCI 4211 - Introduction to Computer Networks (3 cr)
  • CSCI 4511W - Introduction to Artificial Intelligence (4 cr)
  • CSCI 5103 - Operating Systems (3 cr)
  • CSCI 5421 - Advanced Algorithms and Data Structures (3 cr)
  • CSCI 5451 - Introduction to Parallel Computing (3 cr)
  • CSCI 5512 - Artificial Intelligence II (3 cr)
  • CSCI 5527 - Deep Learning: Models, Computation, and Applications (3 cr)
  • CSCI 5541 - Natural Language Processing (3 cr)
  • CSCI 5609 - Visualization (3 cr)
  • CSCI 5715 - From GPS and Virtual Globes to Spatial Computing (3 cr)
  • CSCI 5751 - Big Data Engineering and Architecture (3 cr)
  • CSCI 4611 - Programming Interactive Computer Graphics and Games OR CSCI 5607 - Intro to Computer Graphics Programming (3 cr)
  • AST 4041 - Computational Methods in the Physical Sciences (4 cr)
  • INET 4061 - Introduction to Data Warehousing (3 cr)
  • INET 4710 - Big Data Architecture (3 cr)
  • MATH 5075 - Mathematics of Options, Futures, and Derivative Securities I (4 cr)
  • MATH 5467 - Introduction to the Mathematics of Image and Data Analysis (4 cr)
  • MATH 5587 - Elementary Partial Differential Equations I (4 cr)
  • MATH 5588 - Elementary Partial Differential Equations II (4 cr)
  • MATH 5651 - Basic Theory of Probability and Statistics (4 cr) OR STAT 5101 - Theory of Statistics I (4 cr)
  • MATH 5711 - Linear Programming (4 cr)
  • GEOG 5561 - Principles of Geographic Information Science(4 cr)
  • FNRM 5131 - GIS for Natural Resources (4 cr)
  • FNRM 5262 - Remote Sensing of Natural Resources (3 cr)
  • FNRM 5462 - Advanced Remote Sensing and Geospatial Analysis (3 cr)

Human-Centered Computing

Human-Centered Computing is a branch of computer science which focuses on systems where humans and computers are closely interacting. Themes explored in human-centered computing include studying how to generate computer graphics and animation; how to represent and visualize digital information; and how to design, evaluate and implement interactive computing systems for human use. Students completing this class might work in the fields of computer games programming, computer graphics, information visualization, virtual reality, user interface design, and computer-supported collaborative work. Technical elective courses in this area typically involve large-scale, hands-on programming or design projects that span the course of several weeks.

Key Themes and Skills: Virtual Reality, Information Visualization, Computer Graphics, Human-Computer Interaction, Social Computing, User Experience Research and Design, Front-End Development

Example course sequences

  • For students interested in 3D computer graphics and animation: CSCI 4611, CSCI 5607, CSCI 5611, CSCI 5609, CSCI 5619, CSCI 5115
  • For students interested in data or information visualization: CSCI 5609, CSCI 5619, CSCI 5115, CSCI 5607, CSCI 5117
  • For students interested in human computer interaction: CSCI 5115, CSCI 5125, CSCI 5127W, CSCI 5117, CSCI 5123, CSCI 5609

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 4611 - Programming Interactive Computer Graphics and Games (3 cr)
  • CSCI 5115 - User Interface Design (3 cr)
  • CSCI 5125 - Collaborative and Social Computing (3 cr)
  • CSCI 5607 - Fundamentals of Computer Graphics I (3 cr)
  • CSCI 5608 - Computer Graphics II (3 cr)
  • CSCI 5609 - Visualization (3 cr)
  • CSCI 5611 - Animation and Planning in Games (3 cr)
  • CSCI 5619 - Virtual Reality and 3D Interaction (3 cr)

Other technical elective courses

  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 5123 - Recommender Systems (3 cr)
  • CSCI 5127W - Embodied Computing: Design & Prototyping (3 cr)
  • CSCI 5117 - Developing the Interactive Web (3 cr)
  • CSCI 5302 - Analysis of Numerical Algorithms (3 cr)
  • CSCI 5523 - Introduction to Data Mining (3 cr)
  • CSCI 5541 - Natural Language Processing (3 cr)
  • CSCI 5561 - Computer Vision (3 cr)
  • KIN 5001 - Foundations of Human Factors/Ergonomics (3 cr)

Languages & Theory

This area focuses on the foundations and principles of programming language design, analysis, and implementation, and the design of algorithms and data structures. Classes are more concerned with foundations and principles than the application of these ideas, but applications are often considered as well. Courses in programming languages (5106 and 5161) and math logic consider the paradigms and principles in the area, as well as implementation concerns (especially 5161). The algorithm and data structures courses include the primary course (5421) and others in specific areas (5302, 5304, 5451, 5481, 5525, MATH 5707, MATH 5711). Security (5271, 5471) involves aspects from all of these areas and thus fits into this area. Many of these depend on ideas from 4011 in at least some way, this course also prepares students in ways of thinking about formalisms for specifying languages and computations.

Key Themes and Skills: Models and Proofs, Algorithms, Logic, Languages and Compilers

Example course sequences

  • For a programming language focus: CSCI 4011, CSCI 5106, CSCI 5161, MATH 5165/5166
  • For a focus on algorithms and data structures: CSCI 4011, CSCI 5421, then CSCI 5302 and CSCI 5304 for a focus on numerical methods, or CSCI 4271W and CSCI 5271 for a focus on security.

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 5106 - Programming Languages (3 cr)
  • CSCI 5421 - Advanced Algorithms and Data Structures (3 cr)
  • CSCI 4011 - Formal Languages and Automata Theory (4 cr)

Other technical elective courses

  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 5103- Operating Systems (3 cr)
  • CSCI 5161- Introduction to Compilers (3 cr)
  • CSCI 5302 - Analysis of Numerical Algorithms (3 cr)
  • CSCI 5304 - Computational Aspects of Matrix Theory (3 cr)
  • CSCI 5271 - Introduction to Computer Security (3 cr)
  • CSCI 5451 - Introduction to Parallel Computing (3 cr)
  • CSCI 5471 - Modern Cryptography (3 cr)
  • CSCI 5481 - Computational Techniques for Genomics (3 cr)
  • CSCI 5525 - Machine Learning (3 cr)
  • CSCI 5801 - Software Engineering I (3 cr)
  • CSCI 5802 - Software Engineering II (3 cr)
  • MATH 5165 - Mathematical Logic I (4 cr)
  • MATH 5166 - Mathematical Logic II (4 cr)
  • MATH 5707 - Graph Theory (4 cr)
  • MATH 5711 - Linear Programming (4 cr)

Software Engineering & Data Systems

This area focuses on the foundations, principles and practice of software engineering and databases; two pillars in the career of any professional software engineer. Classes are concerned with both the foundations and principles as well as the practical applications of the concepts. Courses in software engineering (5801, 5802) focus on the processes, methodologies, and techniques used for developing complex software systems. Courses in databases (4707, 5708, 5715) focus on modeling and storing data in a database, querying, transaction processing, data security and privacy, scaling and performance, multiple data types including text/hypertext/spatial/spatio-temporal/images, and new database technologies like big data, Hadoop/Map-Reduce, block-chain, etc. Security (4271W, 5271) involves theory and practice of computer security, an aspect of critical importance when building modern software systems.

Key Themes and Skills: Software Engineering Theory and Practice, Software Development, Database Theory, Modeling and Practice, Data Engineering.

CS&E recommends that you complete at least four technical elective courses below to have a focus in this area. 

Fundamental technical elective courses for this area (recommend choosing at least 2)

  • CSCI 4707 - Practice of Database Systems (3 cr)
  • CSCI 5801 - Software Engineering I (3 cr)
  • CSCI 4271W - Developing Secure Software Systems (4 cr)

Other technical elective courses

  • CSCI 4131 - Internet Programming (3 cr)
  • CSCI 4980 - Special Topic - Applied Machine Learning (Spring 2023) (3 cr)
  • CSCI 5103 - Operating Systems (3 cr)
  • CSCI 5106 - Programming Languages (3 cr)
  • CSCI 5115 - User Interface Design (3 cr)
  • CSCI 5161 - Introduction to Compilers (3 cr)
  • CSCI 5271 - Introduction to Computer Security (3 cr)
  • CSCI 5471 - Modern Cryptography (3 cr)
  • CSCI 5521 - Introduction to Machine Learning (3 cr)
  • CSCI 5523 - Introduction to Data Mining (3 cr)
  • CSCI 5708 - Architecture and Implementation of Database Management Systems (3 cr)
  • CSCI 5715 - From GPS and Virtual Globes to Spatial Computing (3 cr)
  • CSCI 5751 - Big Data Engineering and Architecture (3 cr)
  • CSCI 5802 - Software Engineering II (3 cr)
  • INET 4061 - Introduction to Data Warehousing (3 cr)
  • INET 4710 - Big Data Architecture (3 cr)