
Main Page
About DigiPen
Degree Programs
Course Catalog
Faculty of Science
Faculty of Art
Course Descriptions
Art
Computer Science
CS
EE
EEL
Game Design
General Education
Math and Physics
Admissions
Incoming Students
Continuing Education
Workshops
Apply Online
Financial Aid
Campus Life
Visiting DigiPen
Events Calendar
Request Info
Order Apparel
Singapore Campus
CS 100
Computer Environment I (3 Cr.) CS 100 CS100
Prerequisites: None
Description: This course provides students with a solid understanding of the fundamental elements on which computers are based. Topics covered by the curriculum include basic electricity and electric circuits, digital systems, logic circuits and algebra, and data representations. This knowledge eliminates “mysteries” about hardware and provides students with a well-rounded understanding of computers.
CS 105
Computer Environment II (3 Cr.)
Description: CS 105 students learn the function and implementation of digital memory, microprocessors, microcontrollers, and embedded systems. Students work together in small teams to design, build, and test autonomous robotic car projects. This practical exercise builds upon the theoretical lectures on electronics, low-level programming, and algorithm design. This understanding of hardware enables students to expand the limits of their future games with unique interface devices, while the practical experience of low-level programming provides the students with skills essential for code optimization.
CS 115
Introduction to Scripting and Programming (3 Cr.)
Prerequisite: CG 350
Description: This class introduces programming environments to students who are not experienced programmers. This course will cover simple logic, programming flow, and the use of variables. It will introduce 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 and scripting.
CS 120
High-Level Programming I – The C Programming Language (3 Cr.)
Prerequisites: None
Description: In presenting the C programming language, this course serves as a foundation for all highlevel programming courses and projects. It provides the fundamentals in programming, including control- flows (such as statement grouping, decision making, case selection, procedure iteration, and termination test) and basic data types (such as arrays, structures, and pointers). Additionally, it will discuss intensively the lexical convention, syntax notation, and semantics.
CS 170
High-Level Programming II – The C++ Programming Language (3 Cr.)
Prerequisite: CS 120
Description: This course is a continuation of High Level Programming I (CS 120). It introduces the C++ language with particular emphasis on its object-oriented features. Topics to be covered include stylistic and usage differences between C and C++, namespaces, function and operator overloading, classes, inheritance, class and function templates, STL lists, and vectors.
CS 180
Operating System I, Man-Machine Interface (3 Cr.)
Description: This course presents an overview of modern operating systems, in particular Windows and Linux/Unix as implemented on modern PCs. After an overview of what an operating system is and does, we cover the following: organization and design (the kernel and various subsystems), process management (creation and management of processes and threads, including an introduction to multi-threaded programming), networks (the TCP/IP stack and the organization of the Internet), interprocess communication, process synchronization (locks, semaphores, and methods to avoid deadlocks), memory management (hardware and process views of memory layout and demand-paged virtual memory), file systems, and security and protection (viruses, worms, and Trojan horses).
CS 200
Computer Graphics I (3 Cr.)
Prerequisites: MAT 150, CS 170
Description: CS200 presents fundamental mathematical elements, data structures, and algorithms useful for animating and viewing twodimensional 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 threedimensional 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 220
Advanced C (3 Cr.)
Prerequisite: CS 170
Description: This course focuses on advanced topics of the C programming language. Such topics include advanced pointer manipulation techniques, pointer applications, and using standard library functions more efficiently. The course also presents students with many methods designed to avoid common C programming errors and pitfalls. Mastering the various topics presented in this course will enable students to become more productive programmers.
CS 225
Advanced C/C++ (3 Cr.)
Prerequisite: CS 170
Description: This course builds on the foundation created in the first two high-level programming courses (CS 120/170). It presents advanced topics of the C/C++ programming language in greater detail. Such topics include advanced pointer manipulation, utilizing multi-dimensional arrays, complex declarations, and standard library functions. Advanced C++ topics include class and function templates, operator overloading, multiple inheritance, runtime type information, the standard template library, and performance issues.
CS 230
Game Implementation Techniques (3 Cr.)
Prerequisites: CS 120
Concurrent Course: CS 170
Description: This course introduces students to Win32 user-interface programming, GDI+, and the fundamentals of 2D bitmap operations. Win32 UI programming and GDI+ are important when creating tools for production purposes, while 2D bitmap operations are the foundation of all computer graphics. The course also covers C++ programming techniques. Assignments will test all topics covered and emphasize correctness, maintainable coding styles, and performance.
CS 241
Fundamental Computer Graphics (3 Cr.)
Prerequisites: MAT 140, MAT 200
Description: This course covers the contents of CS 200 and CS 250 in a single semester. It examines the algorithms and mathematical elements needed to generate and render 2D and 3D scenes. Topics include the graphics pipeline 2D and 3D coordinate systems and their transformations, homogeneous coordinates and perspective calculations, scan-conversion algorithms, color models, collision detection techniques, and basic culling, clipping, and intersection.
CS 245
Introduction to Interactive Sound Synthesis (3 Cr.)
Prerequisites: CS 170, CS 180, MAT 140, PHY 200
Description: This course explores dynamic sound synthesis, 3D-directional auditory effects, and sonic ambience to real-time simulation and video games. The subjects include mixing audio and modulating dry recorded sounds using wave table synthesis. Students will learn how to create collision sounds using additive synthesis, wind effects using subtractive synthesis, natural sounds using granular synthesis and physical modeling, ambiences using layering and spectral filtering, 3D spatialized surround sound panning, inter-aural time difference, inter-aural intensity difference, and Head Related Transforms (HRTFS). Students will also study algorithms and techniques for real-time multi-threaded programming and synthesized sound integration for the game engine.
CS 250
Computer Graphics II (3 Cr.)
Prerequisite: CS 200
Description: CS 250 examines the mathematical elements and algorithms used in the design and development of real-time threedimensional computer graphics applications such as games, cockpit simulators, and architectural walkthroughs. 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 considered 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 260
Computer Networks I, Interprocess Communication (3 Cr.)
Prerequisite: CS 170
Description: This course introduces the hierarchical network communication in a distributed computing environment. Course topics cover network technologies, architecture, and protocols. The curriculum will give specific emphasis to the TCP/IP stack and in making students familiar with writing portable socketbased software. It prepares students for programming multi-player games in later semesters.
CS 261
Computer Networks II (3 Cr.)
Prerequisite: CS 260
Description: This class extends the TCP/IP protocols studied in CS 260 to wireless devices. This course goes further in depth into some topics covered in the introductory networks course as well as additional subjects of interest. Topics include TCP/IP related protocols such as NAT, WAP, and DNS; physical media access such as aloha, OFDM, and WIDEBAND; wireless standards and protocols; and network security. The curriculum will cover additional topics based on the state of the industry.
CS 270
Advanced C++, Designing Classes (3 Cr.)
Prerequisite: CS 220
Description: This course presents the Object-Oriented Methodologies used in the development of large software projects. Combined with the knowledge acquired in the C++ Programming Language courses (CS 120/170/220), students will be able to better manage their Game Software Design and Production and produce reusable code and libraries. Among the advanced C++ topics are class and function templates, function and operator overloading, multiple inheritance, runtime type information, the standard template library, and performance issues.
CS 280
Data Structures (3 Cr.)
Prerequisite: CS 220 or CS 225
Description: This course introduces the 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. In addition, the course provides an introduction to algorithm complexity and notation.
CS 300
Advanced Computer Graphics I (3 Cr.)
Prerequisite: CS 250
Description: As the complexity of 3D computer environment and objects increase, the efficiency of the graphics rendering pipeline becomes critical to all video game and real-time simulation software. This course deals with the issues of how to effectively remove invisible objects/ polygons to reduce the workload of the pipeline processors. The class covers two groups of hidden surface removal algorithms: the first group identifies the invisible objects/polygons by putting them in certain order (such as BSP-tree, Octree, priority list, etc.), while the second group eliminates hidden objects/polygons while only processing visible ones (such as back-face culling, portal, occlusion map, etc.). This class will also introduce students to basic programming in OpenGL.
CS 315
Low-Level Programming (3 Cr.)
Prerequisite: CS 105, CS 120, CS 180
Description: This course introduces students to microprocessor architecture as well as the knowledge required to directly address and program the microprocessor and the various hardware devices connected to it. Since the resulting code is usually faster than similar code written in a high-level language such as C or C++, low-level programming has great importance in improving the response speed of real-time interactive programs. In this course, students program a microprocessor used to control a hand-held gaming device. The processor used is typically an 8-bit machine, which is easier to understand than 32 or 64-bit machines, but uses the same principles. Topics include registers, instruction set, addressing modes, the stack, I/O ports, interrupts, graphics, animation, collision detection, scrolling, and windowing. There is also a brief introduction to the instruction sets used on larger machines.
CS 330
Algorithm Analysis (3 Cr.)
Prerequisites: CS 270 or CS 225, CS 280, MAT 200
Description: This course provides students with an introduction to the analysis of algorithms, specifically proving their correctness and making a statement about their efficiency. Topics for discussion may include loop invariants, strong mathematical induction and recursion, asymptotic notation, recurrence relations, and generating functions. Students will examine examples of algorithm analysis from searching and sorting algorithms.
CS 341
Advanced Computer Graphics (3 Cr.)
Prerequisites: CS 241, MAT 250
Description: This course studies algorithms and techniques that are designed to improve the efficiency of the graphics pipeline and increase the realism of a 3D graphical environment. Students will study techniques that add details on objects’ surfaces, including lighting and shading models, texture mapping, bump mapping, environmental mapping, and shadow algorithms. The course will also address algorithms that eliminate invisible polygons/objects from being further processed by the graphics pipeline, including BSPTree, occlusion, and portal. It will also introduce students to programming in OpenGL.
CS 350
Advanced Computer Graphics II (3 Cr.)
Prerequisite: CS 300
Description: This course is the continuation of CS 300. Students will study the algorithms and methods that add surface details to objects without increasing the complexity of the geometric representation of 3D graphical environment. These techniques are essential for improving the efficiency and realism of video games. Topics covered in this class include illumination models, transparency models, shading algorithms, mapping techniques (such as texture mapping, bump mapping, environmental mapping, and refractive mapping), and shadow models. The class will also introduce students to the corresponding OpenGL API supporting these surface detail functions.
CS 365
Software Engineering (3 Cr.)
Prerequisite: [CS 225]] or CS 270
Description: This 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 will apply acquired knowledge to a substantial project.
CS 370
Image Processing (3 Cr.)
Prerequisite: CS 280
Description: This course introduces some of the popular image processing techniques. Course material covers methods students can apply in creating special effects with digital images and preparing graphics information for either human or computer interpretation. Professionals use these methods for either image enhancement or restoration. Course content covers both image processing, which transforms an image, and computer vision, which extracts a measurement or description. It also presents the Fourier transform and frequency domain interpretation of images. Other topics include edge detection, color transformations, high dynamic range, histograms, segmentation, morphology, and pattern classification. Students may do a project using a live camera.
CS 380
Robotic Intelligence (3 Cr.)
Prerequisite: CS 280
Description: The techniques developed for real-time adaptive control of mobile robots are among the AI methods most suitable for game characters. Since robots and game characters must navigate unknown terrain and avoid or overcome obstacles, all planning must be subject to instant revision. This class treats game characters as virtual robots. Students will use robotic AI methods without building any physical robots. The class covers the hierarchical control paradigm and expert systems based on LISP or related scripting languages. It then focuses on reactive agents using subsumption architecture or potential fields. The class then examines the hybrid paradigm and navigation. It concludes with implementation examples in games.
CS 381
Machine Learning (3 Cr.)
Prerequisite: CS 280
Description: This course deals with constructing computer programs that automatically improve with experience. Observed events are used to inductively construct decision trees, which can be used by computer-controlled game characters to change behaviors. Students will explore concept learning, partial ordering, reinforcement learning, conditional probability, Bayesian learning, the evaluation of hypotheses and instance-based learning. Types of neural networks examined include perceptrons, back-propagation, radial basis functions, and adaptive resonance theory. We demonstrate the effectiveness of genetic algorithms and show the power of a neuro-genetic approach. The class concludes by looking at inductive analytical learning.
CS 400
Ray Tracing (3 Cr.)
Prerequisite: CS 350 or equivalent
Description: This course introduces students to the ray tracing technique used in computer graphics. Students will examine the ray tracing model, the mathematics of ray-surface intersection computations, the physics underlying local and global illumination models, various antialiasing techniques, and the practicalities of implementing a recursive ray tracer.
CS 420
Graphics File Format and Data Compression Techniques (3 Cr.)
Prerequisites: CS 250 and CS 280, or CS 340
Description: This course covers data compression techniques for still images and multimedia. It includes the theory behind data compression and demonstrates how it is used in specific formats. Methods include run length encoding, entropy coding, dictionary compression, transforms, and motion compensation. The techniques are illustrated by examining various popular graphic file formats such as BMP, TIFF, GIF, JPEG, DXF, and MPEG.
CS 460
Advanced Animation and Modeling I (3 Cr.)
Prerequisites: CS 300, MAT 300, GAT 300
Description: 3D animation and modeling play significant roles in computer simulation and video game software. This course introduces students to 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.
CS 500
Ray Tracing (3 Cr.)
Prerequisite: Entrance into the Master of Science in Computer Science program
Description: This course introduces the ray tracing technique in computer graphics. It places particular emphasis on studying the mathematical elements of light illumination models, light intersection calculations, and data structure organization. This is a graduate version of CS 400.
CS 510
Advanced Real-time Rendering Techniques (3 Cr.)
Prerequisite: CS 341 or CS 350
Description: This 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, light map and shadow map methods, multi-pass rendering techniques, and real-time vertex/pixel shader programming essentials. Additionally, students will practice these subjects by working with the supporting OpenGL functions.
CS 520
Reasoning Under Uncertainty (3 Cr.)
Prerequisites: CS 380, CS 381, or equivalent
Description: This class covers advanced search techniques. It explores decision making in uncertain environments and uses techniques from blackboard architectures, fuzzy inference systems, and knowledge engineering. Students are expected to have a basic understanding of machine intelligence since this course will cover advanced techniques. For example, support vector machines are a more sophisticated form of a neural network that uses advanced mathematics to achieve faster learning. Adaptive resonance theory has been extended using a theory of brain functioning to the Artificial Brain. Type 1 fuzzy systems cover the ambiguities of the world; Type 2 fuzzy systems extend to deal with uncertainty.
CS 530
Advanced Game Engine Design (3 Cr.)
Prerequisite: CS 341 or CS 350
Description: A game engine is a complex framework or library that provides vital functionalities to any video game independent of the game content or genre. A well-designed game engine must at least provide the following functionalities: data management, rendering, networking, dynamics, input controllers, audio, editing tools, modeling tools, and a high-level application programming interface (API) for the entire framework that hides the lowlevel details of graphics, networking, and audio programming. Thus, a game engine is a complex library consisting of various components that must all be integrated together into a single framework in an ef- ficient manner using the principles of object-oriented design. In this course, students will study the computer graphics, mathematics, data structures, and algorithms required to design and architect a game engine that can handle complex graphics applications that handle three-dimensional data such as games and computer-aided design.
CS 560
Advanced Animation Algorithms I (3 Cr.)
Description: 3D animation and modeling play significant roles in computer simulation and video game software. This course introduces students to 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.
CS 561
Advanced Animation and Modeling II (3 Cr.)
Prerequisite: CS 460 or CS 560
Description: This course is the continuation of CS 460/560. 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 599
Special Topics (3 Cr.)
Prerequisite: Upon approval of academic advisor
Description: This course is an upper- level graduate class. It is offered infrequently to explore various subjects that may be topical or of special interest. Subjects might include (but are not limited to) 3D graphics rendering algorithms, advanced animation and modeling techniques, artificial intelligence, numerical solutions, and mathematics, physics, and their applications in real-time interactive simulations and video game software.
CS 601
Thesis I (3 Cr.)
Prerequisite: Upon approval of academic advisor
Description: This course is the first part of master’s program thesis. The student shall work with the thesis advisory committee to select a research topic, conduct a complete survey in the related field, identify fundamental knowledge, and collect materials and tools that are essential to his or her research work. Upon completion of the course, the student shall produce a written document to summarize the above steps and also include the proposed approaches to the problem.
CS 602
Thesis II (3 Cr.)
Prerequisite: CS 601 and approval of thesis advisory committee
Description: This course is the second part of master’s program thesis. The student shall continue to work under the supervision of the thesis advisory committee to create the theory of the proposed research topic, develop algorithms, and possibly create 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 to summarize the entire research and pass the oral exam to defend the thesis.
