Course Descriptions
IMGD
IMGD 1000. Critical Studies of Interactive Media and Games.
Cat. I
This course introduces non-technical studies of computer-based interactive media and games. The course develops a vocabulary for discussing games and other interactive media, and tools for analyzing them. Students are expected to provide written critiques using the critical approaches presented in the course. The games and other interactive media critiqued may be commercially available or under development.
IMGD 1001. The Game Development Process.
Cat. I
This course discusses the process of game development. It examines the roles of different participants in the development process and how the technical development and the artistic development proceed in tandem. Group work is emphasized, especially the importance of collaboration between technical and artistic efforts. Students are expected to participate in game development using appropriate game development tools.
IMGD 1002. Storytelling in Interactive Media and Games.
Cat. I
This course explores different types of story within gaming and other interactive media. It delineates between linear, branching, and emergent storytelling, identifies hybrids, and finds new modes of making compelling narrative. A variety of games are discussed, including early text-based adventures, roleplaying games, shooters, and strategy games. Students will construct characters, situations, and narratives through game play and scripted cut scenes. Students will explore and use visual storytelling techniques.
IMGD 2000. Social Issues in Interactive Media and Games.
Cat. II
This course provides students with a realistic assessment of the potential and problems related to interactive media and games, especially computer games, and their effects on society. Topics include individual and group behavior, diversity, human responsibility, ethical and legal issues, and intellectual property. The course examines the issues from various points of view, and discover the political, social, and economic agendas of the people or groups championing those points of view. Students will write papers, participate in discussions, and research related topics.
Recommended background: IMGD 1000.
Offered in 2008-09 and in alternating years thereafter.
IMGD 2001. Philosophy and Ethics of Computer Games.
Cat. II
This course introduces students to some of the political and ethical dimensions of the new entertainment modalities. Students will explore such issues as representation and power (e.g., gaming and disability, and race stereotyping in games), the phenomenology of virtual reality, capitalism and the commodification of leisure, gender and sexual violence, and cyberspace and democracy. Students will also develop critical tools for evaluating the ethical and social content of their own and others’ games. In addition to writing several analytical papers on the critical theory of technology, students will be encouraged to work on game designs exploring philosophical or social themes.
Recommended background: IMGD 1000.
Offered in 2009-10 and in alternating years thereafter.
IMGD 2005. Machinima (Film Making in Virtual Environments)
Cat. I
This course will address the cinemagraphic and narrative techniques involved with film making using video-game technology. Creation and development of characters, environments, and narrative structures will be explored. Using commercial game engines and audio/video editors, students will write, design, and produce complete animated movies. Industrial and artistic applications of this film making technique are discussed as well as how Machinima is contextualized in the history of film animation and visualization. Recommended background: IMGD 1002.
IMGD 2101/AR 2101. 3D Modeling
Cat. I
This course focuses on the art of 3D computer modeling for graphics,animation, game design, and image visualization. Techniques in polygon, NURB, and subdiv modeling will be explored, as well as deformations, texture mapping, lighting, cameras, rendering, and MEL scripting. Realistic and stylized modeling concepts will be developed, including optimization for rigging and game design. Historical context in relation to traditional sculpture will be discussed.
Recommended background: AR1100 and AR1101.
IMGD 2201/AR 2201. The Art of Animation
Cat. I
This course examines the fundamentals of computer generated 2D and 3D modeling and animation as they apply to creating believable characters and environments. Students will learn skeletal animation and traditional polygonal animation, giving weight and personality to characters through movement, environmental lighting, and changing mood and emotion. Students will be expected to master the tools of 3D modeling and skinning, and scripting of behaviors.
Recommended background: AR 1101.
IMGD 2500. Design of Tabletop Strategy Games
Cat. II
The objective of the course is to teach students how to design board strategy games. The design principles are transferable to other types of games, such as computer games. Game quality issues such as rules unambiguity, depth, complexity, branching width, balance, and historical content are examined. Basic elements and types of game rules, such as map gridding, restricted play choices, resource limitations, and depths of game economics are discussed. Central to the course is the game design project: students design, playtest, and develop their own game. One two-hour laboratory a week covers play, and playtesting, and supports the game design project.
Recommended background: IMGD 1000
IMGD 3000. Technical Game Development I.
Cat. I
This course teaches technical Computer Science aspects of game development, with the focus of the course on low-level programming of a computer games. Topics include 2D and 3D game engines, simulation-type games, analog and digital controllers and other forms of tertiary input. Students will implement games or parts of games, including exploration of graphics, sound, and music as it affects game implementation.
Recommended background: CS 2303.
IMGD 3500. Artistic Game Development I.
Cat. I
This course focuses on the unique problems presented to the artist when working in game development. Students learn to work with 2D sprite-based art, including tiling and simple animation. They then explore 3D architecture, level design, texturing, and environmental animation. Students will use art to create compelling game experiences through environments by designing their own levels in both 2D and 3D games.
Recommended background: AR 3000.
IMGD 4000. Technical Game Development II.
Cat. I
This course focuses on the application of advanced Computer Science topics as they impact game development. Networking and distributed systems issues are addressed, including scalability and latency compensation techniques, for designing games for a online multi-player environments. AI, graphics and physics techniques specific to game development are discussed. Students will implement games or parts of games that apply advanced Computer Science topics.
Recommended background: IMGD 3000.
IMGD 4500. Artistic Game Development II.
Cat. I
This course focuses on the integration and organization of the various artistic elements used in game development. The course examines user interaction, interface design, and existing paradigms in current games. Students will combine elements of level design, animation, music, sound, and writing to create an aesthetically appealing game.
Recommended background: IMGD 1002, IMGD 3500, MU 1611.
Art / Music
Cat. I
This course provides an introduction to the basic principles of two and threedimensional visual organization. The course focuses on graphic expression, idea development, and visual literacy. Students will be expected to master basic rendering skills, perspective drawing, concept art, and storyboarding through traditional and/or computer-based tools.
AR 1101. Digital Imaging and Computer Art.
Cat. I
This course focuses on the methods, procedures and techniques of creating and manipulating images through electronic and digital means. Students will develop an understanding of image alteration. Topics may include color theory, displays, modeling, shading, and visual perception.
Recommended background: AR 1100.
AR 2101/IMGD 2101. 3D Modeling
Cat. I
This course focuses on the art of 3D computer modeling for graphics,animation, game design, and image visualization. Techniques in polygon, NURB, and subdiv modeling will be explored, as well as deformations, texture mapping, lighting, cameras, rendering, and MEL scripting. Realistic and stylized modeling concepts will be developed, including optimization for rigging and game design. Historical context in relation to traditional sculpture will be discussed.
Recommended background: AR1100 and AR1101.
AR 2201/IMGD 2201. The Art of Animation
Cat. I
This course examines the fundamentals of computer generated 2D and 3D modeling and animation as they apply to creating believable characters and environments. Students will learn skeletal animation and traditional polygonal animation, giving weight and personality to characters through movement, environmental lighting, and changing mood and emotion. Students will be expected to master the tools of 3D modeling and skinning, and scripting of behaviors.
Recommended background: AR 1101.
MU 3611. Computer Techniques in Music.
Cat. I
This course concentrates on both the technical and artistic aspects of computer music. Topics covered include the MIDI protocol and specification, sequencer design, voice editing, synthesizer architecture, and literature.
MU 3612. Computers and Synthesizers in Music.
Cat. I
This course focuses on technical and aesthetic problem solving in computer music. Using programming languages, students propose and design creative solutions to contemporary problems which currently have no commercial solutions. Students work with sequencers, signal processors, synthesizers, MIDI controllers, editors, and programming languages.
MU 3613. Digital Sound Design.
Cat. I
This course introduces the student to the theory and practice of digital sound design. It focuses on creative problem-solving in applications where digital audio production is a key component. Topics include digital sound recording and editing, creation and synchronization of digital sound tracks for video, theatrical sound design, and multimedia production.
Computer Science
CS 1101. Introduction to Program Design.
Cat. I
This course introduces principles of computation and programming with an emphasis on program design. Topics include design and implementation of programs that use a variety of data structures (such as records, lists, and trees), functions, conditionals, and recursion. Students will be expected to design, implement, and debug programs in a functional programming language.
Intended audience: students desiring an introduction to programming and program design.
Recommended background: none. Either CS 1101 or CS 1102 provide sufficient background for further courses in the CS department. Undergraduate credit may not be earned for both this course and CS 1102.
Undergraduate credit may not be earned both for this course and for CS 2135.
CS 1102. Accelerated Introduction to Program Design.
Cat. I
This course provides an accelerated introduction to design and implementation of functional programs. The course presents the material from CS 1101 at a fast pace (so students can migrate their programming experience to functional languages), then covers several advanced topics in functional programming (potential topics include macros, lazy programming with streams, and programming with higher-order functions). Students will be expected to design, implement, and debug programs in a functional programming language. Intended audience: students starting with substantial previous programming background.
Recommended background: prior programming background covering lists, trees, functions, and recursion.
Undergraduate credit may not be earned for both this course and CS 1101. Undergraduate credit may not be earned both for this course and for CS 2135.
CS 2102. Object-Oriented Design Concepts.
Cat. I
This course introduces students to an object-oriented model of programming. Building from the design methodology covered in CS 1101/CS 1102, this course shows how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students will be expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures.
Intended audience: students with prior program design experience who desire to learn object-oriented design.
Recommended background: CS 1101 or CS 1102.
Undergraduate credit may not be earned both for this course and for CS 2136.
CS 2303. Systems Programming Concepts.
Cat. I
This course introduces students to a model of programming where the programming language exposes details of how the hardware stores and executes software. Building from the design concepts covered in CS 2102, this course covers manual memory management, pointers, the machine stack, and input/ output mechanisms. The course will involve large-scale programming exercises and will be designed to help students confront issues of safe programming with system-level constructs. The course will cover several tools that assist programmers in these tasks. Students will be expected to design, implement, and debug programs in C++ and C.
Intended audience: computer science and computer engineering students with substantial prior object-oriented programming experience.
Recommended background: CS 2102.
CS 3041. Human-Computer Interaction.
Cat. I
This course develops in the student an understanding of the nature and importance of problems concerning the efficiency and effectiveness of human interaction with computer-based systems.
Topics include the design and evaluation of interactive computer systems, basic psychological considerations of interaction, interactive language design, interactive hardware design, and special input/output techniques.
Students will be expected to complete two projects. A project might be a software evaluation, interface development, or an experiment.
Intended audience: computer science majors, especially juniors.
Recommended background: CS 2102 or CS 2118.
CS 3043. Social Implications of Information Processing.
Cat. I
This course makes the student aware of the social, moral, ethical, and philosophical impact of computers and computer-based systems on society, both now and in the future.
Topics include major computer-based applications and their impact, humanmachine relationships, and the major problems of controlling the use of computers.
Students will be expected to contribute to classroom discussions and to complete a number of writing assignments.
Intended audience: students interested in the impact of a computer-oriented technology on his or her future way of life and well-being. This course is highly recommended for juniors.
Undergraduate credit may not be earned both for this course and for CS 505.
Recommended background: a general knowledge of computers and computer systems.
CS 3733. Software Engineering.
Cat. I
This course introduces the fundamental principles of software engineering. Modern software development techniques and life cycles are emphasized.
Topics include requirements analysis and specification, analysis and design, architecture, implementation, testing and quality, configuration management, and project management.
Students will be expected to complete a project that employs techniques from the topics studied.
Intended audience: computer science majors and others who expect to design software systems. This course should be taken before any course requiring a large programming project.
Undergraduate credit may not be earned both for this course and for CS 509.
Recommended background: CS 2102.
CS 4233. Object-Oriented Analysis and Design.
Cat. II
This Software Engineering course will focus on the process of Object-Oriented Analysis and Design. Students will be expected to complete a large number of exercises in Domain Modeling, Use Case Analysis, and Object-Oriented Design. In addition, the course will investigate Design Patterns, which are elements of reusable object-oriented software designs. This course will survey a set of design patterns and consider how these patterns are described and used to solve design problems.
Recommended Background: CS 2303 and CS 3733.
This course will be offered in 2010-11 and in alternating years thereafter.
CS 4341. Introduction to Artificial Intelligence.
Cat. I
This course studies the problem of making computers act in ways which we call “intelligent”.
Topics include major theories, tools and applications of artificial intelligence, aspects of knowledge representation, searching and planning, and natural language understanding.
Students will be expected to complete projects which express problems that require search in state spaces, and to propose appropriate methods for solving the problems.
Intended audience: computer science majors.
Undergraduate credit may not be earned both for this course and for CS 534.
Recommended background: CS 2102 and CS 2223.
Suggested background: CS 3133.
CS 4514. Computer Networks: Architecture and Implementation.
Cat. I
This course introduces principles and current trends in computer networks. The ISO Reference Model will be used as the framework with the course progressing through the physical, data link, network, transport, session, and presentation layers with specific examples and standards cited throughout for point-to-point, satellite, packet-radio, and local area networks.
Topics include motivation and objectives of computer networks, overview of network architectures, layered architectures, performance analysis, virtual circuits, datagrams, routing flow control, local area networks, internetworking, end-to-end communication, virtual terminal, file transfer protocols, and clientserver programming.
Students will be expected to design and implement projects such as simulation of the network/transport layer functions, routing, congestion control, an Ethernet controller, applications using TCP/IP or remote procedure calls.
Intended audience: computer science and computer engineering majors.
Undergraduate credit may not be earned both for this course and for CS 513.
Recommended background: CS 3013 and some knowledge of probability.
CS 4515. Computer Architecture.
Cat. II
This course explores modern computer architectures in terms of instruction sets and the organization of processors, controllers, memories, devices, and communication links.
Topics include an overview of computer systems, theoretical foundations, modern computer system components, pipelining of instruction sets, multifunction pipelines, parallel computer organization.
Students will be expected to design and implement programs which simulate significant components of modern computer architectures.
Intended audience: computer science and computer engineering majors.
Recommended background: CS 2011 or ECE 2801, and CS 3013.
This course will be offered in 2010-11 and in alternating years thereafter.
Cat. I
This course studies the use of the computer to model and graphically render two- and three-dimensional structures.
Topics include graphics devices and languages, 2- and 3-D object representations, and various aspects of rendering realistic images.
Students will be expected to implement programs which span all stages of the 3-D graphics pipeline, including clipping, projection, arbitrary viewing, hidden surface removal and shading.
Intended audience: computer science majors.
Undergraduate credit may not be earned both for this course and for CS 543.
Recommended background: CS 2223, CS 2303 and MA 2071.
Cat. II
This course provides an in-depth examination of the algorithms, data structures, and techniques used in modeling and rendering dynamic scenes. Topics include animation hardware and software, parametric blending techniques, modeling physical and articulated objects, forward and inverse kinematics, key-frame, procedural, and behavioral animation, and free-form deformation.
Students will be expected to develop programs to implement low-level animation algorithms as well as use commercial animation tools to design and produce small to moderate sized animations.
Intended audience: computer science majors.
Recommended background: CS 4731.
This course will be offered in 2010-11 and in alternating years thereafter.
