Computer Science
Degrees and Certificates
-
Computer Science, Accelerated BS/MS -
Computer Science, Bachelor of Science -
Computer Science and Digital Audio, Bachelor of Science -
Computer Science and Game Design, Bachelor of Science -
Computer Science in Artificial Intelligence, Bachelor of Science -
Computer Science in Real-Time Interactive Simulation, Bachelor of Science -
Computer Science, Master of Science -
Computer Science, Minor
Courses
CS 100: Computer Environment
Credits 4CS 115: Introduction to Scripting and Programming
Credits 3This course introduces programming environments to students who are not experienced programmers. This course covers simple logic, programming flow, and the use of variables. It introduces students to the history of programming and the basic vocabulary of the programming industry. The course culminates in a series of hands-on exercises using this knowledge to solve problems. At his or her discretion, the instructor may cover special topics in programming or scripting.
CS 116: Introduction to Programming
Credits 4This course introduces students not enrolled in a computer science program to the fundamentals of programming through usage of the C# language. Topics include the basics of computer hardware, simple logic flow, variables, expressions, conditionals, loops, functions, arrays and object-oriented programming.
CS 120: High-Level Programming I: The C Programming Language
Credits 4This course covers the fundamentals of programming in C. It focuses on developing a deep understanding of the structured programming concepts and practices. Topics include variables, data types, functions, control structures, pointers, strings, arrays, and dynamic allocation principles.
CS 165: Programming Foundations
Credits 4This course expands on basic programming skills through an exploration of object-oriented programming techniques. Topics may include classes, inheritance, interfaces, polymorphism, and data structures.
CS 170: High-Level Programming II: The C++ Programming Language
Credits 4This course covers the fundamentals of programming in C++. It focuses on developing an understanding of object-oriented concepts and principles. Topics include classes, operator overloading, function and class templates, composition, inheritance, and introduction to standard libraries such as containers and algorithms.
CS 174: Audio Scripting
Credits 3This course covers concepts and implementation strategies for using a high-level scripting language to achieve complex audio behavior in game development. Topics include principles of analog and digital audio, psychoacoustics, and programming.
CS 176: Advanced Scripting
Credits 3This course explores programming concepts for game designers in the context of developing video games. Topics covered include architecture patterns, advanced character controllers, cameras, and custom systems designed for versatility and scalability. Additional topics may include game testing automation, and networking.
CS 180: Operating Systems I: Man-Machine Interface
Credits 3This course focusses on dynamic trio of virtualization, concurrency, and persistence that powers modern computing systems. The course is designed to explore various operating system related topics like, virtualization, processes, threads, context switching, synchronization, scheduling, and virtual memory management algorithms. Additionally, it also focuses on the intricacies of file systems & disk management, unravelling the computer system's inner workings.
CS 185: C++ for Designers
Credits 3This course introduces the C++ language with particular emphasis on its object-oriented features. Topics covered include differences between scripting languages and C++, data types, namespaces, classes, inheritance, polymorphism, templates, and fundamental STL components.
CS 200: Computer Graphics I
Credits 3This course presents fundamental mathematical elements, data structures, and algorithms useful for animating and viewing 2D primitives. The course aims to fulfill two objectives. The first objective is to provide students with a sufficient mathematical and algorithmic background to design and implement 2D graphics applications. The second objective is to prepare students with the knowledge required for writing 3D graphics applications. The first half of the course deals with scan-conversion algorithms for rasterizing 2D primitives such as lines, circles, ellipses, triangles, and arbitrary polygons. The second half of the course is concerned with the viewing and animation of these 2D primitives. The course covers topics such as interpolation techniques, transformations, culling, clipping, animation techniques, and the 2D viewing pipeline.
CS 205: Professional and Societal Issues in Computing
Credits 3This course focusses on the local and global impact of computers, the Internet and related computer technology on society. Emphasis is placed on the social forces underlying the rapid and widespread adoption of computer technology. Topics covered include personal privacy, intellectual property, legislative and constitutional issues, changing labor force composition, and professional ethics.
CS 211: Introduction to Databases
Credits 3This course provides a broad overview of database systems. It presents the fundamentals, practices, and applications of computer databases. Topics include database architectures, data modeling, design schemes, transaction processing, and database implementation. Additional topics may include emerging technologies in the field.
CS 212: Advanced Databases
Credits 3This course offers an in-depth exploration of database management system concepts and their practical applications. It focuses on designing enterprise-scale data systems by introducing core system design principles aligned with software engineering while exploring industry best practices. Additionally, the course delves into specialized database technologies and their specific use cases, highlighting the role of databases in supporting complex, real-world applications and large-scale data environments.
CS 225: Advanced C/C++
Credits 3This course covers advanced features and techniques in C and C++. It focuses on developing an understanding of interaction and communication between classes and objects. Topics include bit manipulations, advanced memory management, advanced function and class templates, inheritance, design patterns, and STL containers and algorithms.
CS 230: Introduction to Game Engine Architecture
Credits 3This course explores the architecture and implementation techniques of game engines. Through hands-on projects, a basic game engine will be created and expanded, applying fundamental programming principles.
CS 231: Game Engine Architecture
Credits 3This course focuses on designing and creating game engine architecture with a small group of engineers. Over the course of a semester, a simple real-time game will be created to prove and test the architecture.
CS 232: Introductory Data Analysis
Credits 3This course covers basic concepts of data processing, cleaning, summarization, and visualization. The course introduces exploratory data analysis, and basic concepts of probability and statistics as they are applied in data analysis.
CS 245: Interactive Sound Synthesis
Credits 3This course examines the principles and practicalities of digital sound synthesis. Topics include the digital representation of sound, real–time generation and manipulation of audio data, MIDI, wavetable synthesis, additive synthesis, sound modeling, and FM synthesis.
CS 246: Advanced Sound Synthesis
Credits 3This course covers the basic building blocks that go into making a sound engine. Topics may include: audio file formats, sound card architecture, low level sound APIs, high level sound APIs, streaming audio, mixing, digital filters and effects, 3D audio, audio spectra and the Fast Fourier Transform.
CS 250: Computer Graphics II
Credits 3This course examines the mathematical elements and algorithms used in the design and development of real-time 3D computer graphics applications, such as games, cockpit simulators, and architectural walk-throughs. 3D computer graphics involve drawing pictures of 3D objects, usually on a 2D screen. This process of generating a 2D image of a 3D graphics application can be described as a series of distinct operations performed on a set of input data. Each operation generates results for the successive one. This process is called the graphics rendering pipeline, and it is the core of real-time computer graphics. The graphics pipeline can be conceptualized as consisting of three stages: application, transformation, and rasterization. The course begins by introducing the 3D graphics pipeline. The application stage is examined from the viewpoint of the representation, modeling, and animation of 3D objects. Topics include user interaction, camera animation techniques, simulation of dynamic objects, and collision detection techniques. Next, the course examines the process of mapping 3D graphic objects from model-space to viewport coordinates. The transformation stage implements this process. Finally, the conversion of a geometric primitive in viewport coordinates into a 2D image is studied. The rasterization stage implements this final process.
CS 251: Introduction to Computer Graphics
Credits 3This course provides a high-level overview of 3D computer graphics. It is intended for game designers and artists to enable them to understand the fundamental components of graphics engines and their applications in real-time simulation and video game software. Course topics include graphics pipeline architecture, 3D transformation operations, viewing and projection, lighting and shading models, surface detail techniques, shadow algorithms, hidden object culling and removal techniques, 3D object modeling, and animation and physically-based motion control. The popular graphics programming languages (GDI plus, OpenGL, DirectX) and shader programming are also discussed in the course.
CS 260: Computer Networks I: Interprocess Communication
Credits 3This course provides an introduction to hierarchical network communication within a distributed computing environment. The curriculum encompasses network technologies, architecture, and protocols, with a particular focus on the TCP/IP stack.
CS 261: Computer Networks II
Credits 3This course builds upon the foundational knowledge acquired in the introductory network course, deepening the understanding of network communication within distributed computing environments. Topics covered include data replication and systemic scalability, distributed-system languages and platforms, and operational practices for service development and real-time data replication.
CS 271: Supervised Machine Learning
Credits 3This course covers fundamental machine learning algorithms and their implementation using supervised learning techniques. Topics include classification and regression supervised learning algorithms.
CS 272: Reinforcement Machine Learning
Credits 3This course covers the fundamentals of goal-directed machine learning using reinforcement learning principles. Decision-making frameworks based on exploitation and exploration are covered. The course also covers single- and multiple-state space approximations using regular- and linear-function approximation techniques.
CS 280: Data Structures
Credits 3This course introduces classical abstract data types (ADT) in computer science. ADTs provide the hierarchical views of data organization used in programming. Among the topics covered are the algorithms and primitives of the data structures for arrays, linked lists, stacks, queues, trees, hash tables, and graphs. n In addition, the course provides an introduction to algorithm complexity and notation.
CS 300: Advanced Computer Graphics I
Credits 3This course introduces students to algorithms that are essential to creating photorealistic images in interactive simulations. n Topics covered include an overview of modern GPU (graphics processor unit) architecture and the common graphics APIs used, including OpenGL and DirectX. Rendering techniques covered include texturing, illumination models, transparency, shading algorithms, mapping techniques (bump mapping, environment/ reflection mapping, etc.), and shadows. Students learn how-to implement all algorithms by using vertex and pixel shaders.
CS 314: Distributed Data Management
Credits 3This course covers building blocks of big data engineering. Topics include the foundational concepts of distributed computing, distributed data processing, data management, data pipelines, cloud computing, and big data analytics.
CS 315: Low-Level Programming
Credits 3This course delves into the intricacies of modern microprocessor architectures, instruction sets, and the relationship between source code and machine instructions. Topics include the application of assembly language for program analysis, debugging, optimization, and gaining deeper insights into the impact of high-level code modifications. Additionally, it explores how CPU and memory architectures, cache hierarchies, and memory access patterns play crucial roles in program execution efficiency and overall system performance.
CS 318: Mathematics of Digital Signal Processing I
Credits 3This course explores the mathematical foundations of digital signal processing, with applications to digital audio programming. Topics include: digital signals, sampling and quantization, complex numbers and phasors, complex functions, feedforward filters, feedback filters, frequency response and transfer functions, periodic signals and Fourier series, discrete Fourier transform and fast Fourier transform, comb and string filters, Z-transform and convolution.
CS 319: Mathematics of Digital Signal Processing II
Credits 3This course continues to explore the mathematical foundations of digital signal processing, with applications to digital audio programming. Topics include: Review of digital signals, Z-transforms and convolution, filter types, applications of fast Fourier transform, switching signals on and off, windowing, spectrograms, aliasing, digital to analog conversion, Nyquist Theorem, filter design, Butterworth filters, reverb, and the phase vocoder.
CS 325: User Interface and User Experience Design
Credits 3This course presents fundamental topics in the field of human-computer interface design. Topics covered in the course will help students understand human capabilities, design principles, prototyping techniques and evaluation methods for human-computer interfaces, with special emphasis on natural user interfaces. The course will guide the students towards an implementation of a novel user interaction.
CS 330: Algorithm Analysis
Credits 3This course covers a variety of algorithms and algorithmic patterns. It focusses on developing an understanding of the internal structure, workings, and common properties of algorithms. Topics include divide-and-conquer, dynamic programming, greedy algorithms, incremental improvement, and computational complexity.
CS 350: Advanced Computer Graphics II
Credits 3This course deals with the efficient representation and processing of complex 3D scenes in order to avoid bottlenecks in the use of the CPU and the GPU. Specific topics include a variety of spatial data structures (binary space-partitioning trees, octrees, kd-trees, and grid data structures), several object-culling methods (occlusion, viewport, and portal), and finally the construction and uses of bounding volumes and their hierarchies for collision detection and related geometric operations.
CS 355: Parallel Programming
Credits 3This course presents an introduction to multi-threaded and distributed programming. The course covers some classical problems and synchronization mechanisms, as well as modern libraries that support parallel programming. The course also covers distributed programming models and applications to video game programming.
CS 362: Operations Research
Credits 3This course introduces the fundamental concepts and numerical methods employed in the field of operations research. The course focuses on methods in constraint-based optimization. Topics include linear programming, inventory modeling, and decision-making under uncertainty.
CS 365: Software Engineering
Credits 3This course covers a wide range of topics in software engineering from the practical standpoint. It encompasses project management issues as well as technical development principles and methods. Topics include system architecture, security, methodologies and notation, UML, object oriented analysis and design, requirements analysis, implementation, verification, validation, maintenance, and software engineering standards. Risk management and iterative design receive special emphasis. Student teams apply acquired knowledge to a substantial project.
CS 370: Computer Imaging
Credits 3This course introduces image-processing methods and applications relevant to the development of real-time interactive simulations. The course covers fundamental concepts in image representation, image filtering, frequency domain processing, and image-based rendering methods. Topics include image serialization, 2D filtering, Fourier transforms, noise modeling, and high dynamic-range imaging.
CS 372: Machine Learning and Artificial Intelligence I
Credits 3This course covers fundamental concepts and techniques in machine learning and their practical applications in various domains. Topics include key principles of learning theory, methods for model selection and evaluation, regression analysis and classification algorithms. Additional topics may explore unsupervised learning and emerging topics in the field.
CS 373: Machine Learning and Artificial Intelligence II
Credits 3This course focuses on recommendation systems and reinforcement learning methods in machine learning. Topics include clustering, classification, exploration-exploitation dilemma, q-learning, reinforcement learning environments and hyperparameter tuning.
CS 374: Natural Language Processing
Credits 3This course introduces fundamental methods and algorithms in the field of Natural Language Processing. Topics include regular expressions, finite-state automata, language morphology, syntactic parsing, and parts-of-speech tagging. Additional topics may include feature extraction, unification, and lexical semantics.
CS 375: Compilers and Interpreters
Credits 3This course presents fundamental topics in the field of compiler construction. Topics covered in the course will help students understand and implement a compiler for a high-level programming language. The course will guide the students towards an in-depth understanding of compilation techniques and runtime implementation for a modern programming language.
CS 376: Deep Learning
Credits 3This course introduces the theory and applications of neural networks and deep learning. Topics include artificial neural networks, backpropagation, hyperparameter selection and optimization methods in deep learning, convolutional and recurrent neural networks, deep reinforcement learning, large language models, and generative models. Additional topics may include other recent advancements in deep learning.
CS 380: Artificial Intelligence for Games
Credits 3This course introduces students to a wide range of concepts and practical algorithms that are commonly used to solve game Al problems. Case studies from real games are used to illustrate the concepts. Students have a chance to work with and implement core game Al algorithms. Topics covered include the game Al programmer mindset, Al architecture (state machines, rule-based systems, goal-based systems, trigger systems, smart terrain, scripting, message passing, and debugging Al), movement, pathfinding, emergent behavior, agent awareness, agent cooperation, terrain analysis, planning, and learning/adaptation.
CS 381: Introduction to Artificial Intelligence
Credits 3This course covers fundamental areas of Artificial Intelligence, including various search algorithms, game playing, constraint satisfaction problems, propositional and first-order logic, and planning. The course will also explore practical skills relevant to implementation of Al techniques, practices, and design solutions.
CS 388: Introduction to Portable Game System Development
Credits 3This course introduces students to portable game systems programming and development, which is different from PC programming and development due to the embedded structure of the machine. Students work with a very limited amount of memory and CPU power. To overcome the system's memory limitations, several graphics techniques are used, such as tile-based game objects and backgrounds using color palettes. As for the CPU limitations, fixed point decimal is used instead of float numbers, along with asynchronous operations. Several portable game system specific topics, such as managing multiple graphics engines simultaneously and handling the touch pad are discussed.
CS 391: Code Analysis and Optimization
Credits 3This course focuses on understanding the details for the computer, compiler, and language, specifically how to apply these towards practical problem of solving crashes and performance issues. The emphasis is not only on knowing what and why, but also about taking that knowledge and creating useful tools and techniques for solving these problems.
CS 399: Special Topics in Computer Science
Credits 3The content of this course may change each time it is offered. It is for the purpose of offering a new or specialized course of interest to the faculty and students that is not covered by the courses in the current catalog.
CS 460: Advanced Animation and Modeling
Credits 33D animation and modeling play significant roles in computer simulation and video game software. Game developers need to have a comprehensive understanding of these techniques. This course introduces algorithms for specifying and generating motion for graphical objects. It addresses practical issues, surveys accessible techniques, and provides straightforward implementations for controlling 3D moving entities with different characteristics. The class covers two broad categories. Students will first learn an interpolation-based technique, which allows programmers to fill in the details of the motion or shape once the animator specifies certain basic information, such as key frames, paths, coordinate grids, or destination geometry. Then, they learn a behavior-based technique, which generates motion that satisfies a set of rules, such as kinematics, physics, or other constraints.
CS 500: Ray Tracing
Credits 3This course focuses on rendering techniques used for ray tracing. The course culminates with an implementation of a path-tracing algorithm able to generate images demonstrating lighting and modeling techniques not found in traditional real-time graphics. Topics include solid modeling, intersection calculations, and illumination models.
CS 518: Mathematics of Digital Signal Processing I
Credits 3This course explores the mathematical foundations of digital signal processing, with applications to digital audio programming. Topics include: digital signals, sampling and quantization, complex numbers and phasors, complex functions, feedforward filters, feedback filters, frequency response and transfer functions, periodic signals and Fourier series, discrete Fourier transform and fast Fourier transform, comb and string filters, Z-transform and convolution.
CS 519: Mathematics of Digital Signal Processing II
Credits 3This course continues to explore the mathematical foundations of digital signal processing, with applications to digital audio programming. Topics include: Review of digital signals, Z-transforms and convolution, filter types, applications of fast Fourier transform, switching signals on and off, windowing, spectrograms, aliasing, digital to analog conversion, Nyquist Theorem, filter design, Butterworth filters, reverb, and the phase vocoder.
CS 525: Advanced C/C++
Credits 3This course covers advanced features and techniques in C and C++. It focuses on developing an understanding of interaction and communication between classes and objects. Topics include bit manipulations, advanced memory management, advanced function and class templates, inheritance, design patterns, and STL containers and algorithms.
CS 529: Fundamentals of Game Development
Credits 3CS 532: Data Analysis
Credits 3This course covers basic concepts of data processing, cleaning, summarization, and visualization. The course introduces exploratory data analysis, and basic concepts of probability and statistics as they are applied in data analysis.
CS 535: Algorithm Analysis
Credits 3CS 541: Advanced Computer Graphics
Credits 3CS 545: Data Science
Credits 3This course presents a variety of computational tools for modeling and understanding complex data and explores the data science lifecycle. Topics include manipulating data, exploratory data analysis, statistical inference, spam filters and naïve Bayes, neural networks, and machine learning algorithms such as linear regression, k-nearest neighbors, and k-means. The course will focus on both understanding the mathematics underlying the computational methods and gaining hands-on experience in the application of these techniques to real datasets.
CS 550: Physics Simulation
Credits 3This course will cover the implementation of various physics topics, as well as collision detection and collision resolution algorithms. Special topics such as stacking, soft-bodies, and friction may be covered.
CS 560: Advanced Animation and Modeling I
Credits 33D animation and modeling play significant roles in computer simulation and video game software. Game developers need to have a comprehensive understanding of these techniques. This course introduces algorithms for specifying and generating motion for graphical objects. It addresses practical issues, surveys accessible techniques, and provides straightforward implementations for controlling 3D moving entities with different characteristics. The course covers two broad categories. Students first learn an interpolation-based technique, which allows programmers to fill in the details of the motion or shape once the animator specifies certain basic information, such as key frames, paths, coordinate grids, or destination geometry. Then they learn a behavior-based technique, which generates motion that satisfies a set of rules, such as kinematics, physics, or other constraints.
CS 561: Advanced Animation and Modeling II
Credits 3This course is the continuation of Advanced Animation and Modeling I. It introduces students to advanced animation and modeling algorithms and techniques in some special areas to increase the physical realism of dynamic objects in 3D graphical environments. The topics include group object (particles, fish, and birds) control, natural phenomena (water, snow, soil, smoke, and fire) simulation, plant (trees and grass) modeling, facial animation (expression and speech synchronization), and deformable object modeling.
CS 562: Advanced Real-Time Rendering Techniques
Credits 3This course introduces students to data structures, algorithms, and techniques concerned with rendering images more accurately and efficiently in interactive computer simulations and video game software. Topics include patch and surface algorithms, terrain rendering techniques, anti-aliasing theory and practice, advanced lighting techniques, hard and soft shadow map methods, multi-pass rendering techniques, high-dynamic range (HDR) rendering, advanced shading and mapping, and real-time vertex/pixel shader programming essentials. Additionally, students practice these subjects by working with the supporting OpenGL or DirectX libraries.
CS 570: Computer Imaging
Credits 3CS 571: Advanced Computer Imaging
Credits 3This course introduces the structure and implementation of the computer vision pipeline. Topics covered include image analysis, feature detection, Fourier transforms, pattern recognition, image stitching, and computational photography.
CS 572: Machine Learning and Artificial Intelligence I
Credits 3CS 573: Machine Learning and Artificial Intelligence II
Credits 3CS 576: Deep Learning
Credits 3CS 580: Artificial Intelligence in Games
Credits 3CS 581: Introduction to Artificial Intelligence
Credits 3CS 598: Computer Science Seminar
Credits 1Every semester, guest speakers, faculty members, and/ or graduate students offer to DigiPen students a number of presentations that cover different research topics in computer science. Each speaker decides on the choice of topic, but they usually are within the general boundaries of students' courses of study. This seminar aims not to pursue any particular topic but rather to explore new research in more depth to allow students to develop their own skills in theoretical analysis. Each speaker's paper(s) are available to students. They are required to read these papers and to choose one to expand upon for a final paper and an oral presentation.
CS 599: Special Topics in Computer Science
Credits 3The content of this course may change each time it's offered. It is for the purpose of offering a new or specialized course of interest to the faculty or students that is not covered by the courses in the current catalog.
CS 601: Research Methods in Computer Science
Credits 3CS 602: Master's Thesis
Credits 3This course is the final part of the master's program thesis. Students work under the supervision of a thesis advisory committee to develop the theory and algorithms of the proposed research topic, usually leading to creation of a prototype to verify the theory and methods. Upon completion of the class, the student must submit his or her formal written thesis to the advisory committee and pass an oral exam defending the thesis.
CS 605: Applied Project
Credits 3This capstone course provides students with the opportunity to apply advanced knowledge and skills to a substantial real-world problem or industry-relevant challenge within the field of computer science. Students will propose, design, develop, and evaluate a practical software or systems-based solution. The course emphasizes the application of technical, analytical, and project management skills. Deliverables include a formal project proposal, system design documentation, implementation of a functioning product or prototype, and a final written report and oral presentation that critically assess the project’s outcomes, challenges, and broader impact.