디지펜게임공학전공 커리큘럼

Curriculum of DigiPen Game Engineering Department

The two main themes throughout the course are vector geometry and linear transformations. Topics from vector geometry include vector arithmetic, dot product, cross product, and representations of lines and planes in three-space. Linear transformations covered include rotations, reflections, shears and projections. Students study the matrix representations of linear transformations along with their derivations. The curriculum also presents affine geometry and affine transformations along with connections to computer graphics. This course also includes a review of relevant algebra and trigonometry concepts.

This course provides students with a detailed examination of the fundamental elements on which computers are based. Topics covered include number systems, representation of numbers in computation, basic electricity, electric circuits, digital systems, logic circuits, data representations, digital memory, computer architecture, and operating systems. Operational code and assembly languages are discussed, examined, and used in either a microprocessor or microcontroller environment, such as a personal computer or an autonomous car.

This course serves as a foundation for all high-level programming courses and projects by introducing control flow through statement grouping, decision making, case selection, and procedure iteration as well as basic data types. Additionally, this course addresses the lexical convention, syntax notation, and semantics of the C programming language.

This course focuses on generating and discussing ideas for composition and engages in all stages of the writing process, with emphasis on the development and application of critical 77 DigiPen Institute of Technology ≫ digipen.edu 20162017 Course Catalog 77 thinking skills. The primary focus of the course is developing the ability to construct, write, and revise argumentative/persuasive essays. Assignments may also include other types of writing, such as narrative, descriptive, and comparative essays.

Students explore how their culture, gender, economic status, age, and other personal characteristics influence their work communications. The course explores verbal and non-verbal communication skills in a global work environment. Students learn written communication techniques most effective for use in the technology workplace. Additionally, students explore and practice negotiation skills, both internally and externally at their workplace.

This class presents an overview of the way the game development industry works and a history of game development. It exposes students to the positions and job responsibilities that each member of a game development team has, along with the industry requirements for concept pitches, design documents and schedules. It also introduces sprite animation, object motion, and input processing, which students use in the creation of a game of their own design.

This course introduces the C++ language with particular emphasis on its object-oriented features. Topics include stylistic and usage differences between C and C++, namespaces, function and operator overloading, classes, inheritance, templates, and fundamental STL components.

This course extends the standard calculus of one-variable functions to multi-variable vector-valued functions. Vector calculus is used in many branches of physics, engineering, and science, with applications that include dynamics, fluid mechanics, electromagnetism, and the study of curves and surfaces. Topics covered include limits, continuity, and differentiability of functions of several variables, partial derivatives, extrema of multi-variable functions, vector fields, gradient, divergence, curl, Laplacian, and applications.

This project focuses on the creation of a simple game or simulation. Students work together on teams of three or four members. All projects must be written entirely in C (C++ is not allowed) and cannot use external libraries or middleware of any kind (except those provided by the instructor). Topics include effective team communication, planning, documentation, debugging, source control, testing, and iterative software development techniques.

This presents game implementation techniques and engine architecture. Students investigate foundational concepts of game architecture, such as game-system component separation and game flow, while learning about essential elements such as the game state manager, input/output handler, and frame rate controller. This course introduces Windows programming, state machines, and collision detection algorithms, which students will integrate into their own remakes of classic games. As part of their implementation, students create and expand their own collision, vector, and matrix libraries, enabling them to incorporate basic physics engines. Students survey concepts in space partitioning, particle systems, map editors, and other elements as a bridge to more advanced concepts in implementation techniques and engine architecture.

This 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 scanconversion 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.

This course builds on the foundation created in the first two high-level programming courses (CS 120 and CS 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.

This course presents an overview of modern operating systems as implemented on personal computers. It presents an overview of what an operating system is and does, with emphasis on the following topics: organization and design, process management, threading, interprocess communication, process synchronization, and memory management.

This calculus-based course presents the fundamental principles of mechanics, including kinematics, Newtonian dynamics, work and energy, momentum, and rotational motion.

This project is divided into two semesters and focuses on the creation of a simple real-time game or simulation with 2D graphics (3D games are not allowed). Students work together on teams of three or four members to implement technical features, such as audio effects, music playback, pattern movement, simple artificial intelligence, same-machine multiplayer (networking is not allowed), particle systems, scrolling, and simple physics. All projects must be written with a core of C++ code and cannot use middleware such as preexisting physics engines, networking engines, etc. Additional topics may include basic software architecture, essential development practices, fundamentals of team dynamics, and task prioritization methods.

This course is a continuation of MAT 180. Topics covered include differential operators on vector fields, multiple integrals, line integrals, general change of variable formulas, Jacobi matrix, surface integrals, and various applications. The course also covers the theorems of Green, Gauss, and Stokes.

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 apply acquired knowledge to a substantial project.

This calculus-based course presents the fundamentals of fluid dynamics, oscillations, waves, geometric optics, and thermodynamics.

In this class, students work to complete and polish the projects they began in GAM 200. Additional topics may include intermediate software architecture, advanced debugging techniques, bug tracking, formal playtesting, game pacing, and game balance.

This 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. In addition, the course provides an introduction to algorithm complexity and notation.

This 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.

This course presents the mathematical foundations of linear algebra, which includes a review of basic matrix algebra and linear systems of equations as well as basics of linear transformations in Euclidean spaces, determinants, and the Gauss-Jordan Algorithm. The more substantial part of the course begins with abstract vector spaces and the study of linear independence and bases. Further topics may include orthogonality, change of basis, general theory of linear transformations, and eigenvalues and eigenvectors. Other topics may include applications to least-squares approximations and Fourier transforms, differential equations, and computer graphics.