Digital Media Design
University of Pennsylvania
DMD : Engineering Classes
Engineering Classes
Jump to Fine Arts Classes | Jump to Communications Classes

CSE 110
Intro To Computer Programming

How do you program computers to accomplish tasks? How do you break down a complex task into simpler ones? CSE 110 is a "Java lite" course that covers the fundamentals of object-oriented programming such as objects, classes, state, methods, loops, arrays, inheritance, and recursion using the Java programming language.

CSE 120
Programming Languages and Techniques I & Lab

How can you solve real world problems with a modern programming language? CSE 120/130 covers the core concepts of programming and computing using Java. Includes top down program design, testing and debugging, interactive programming, iteration, recursion, data structures, and inheritance.

CSE 121
Programming Languages and Techniques II & Lab

How do you write well-designed programs? We learn how to specify programs, how to prove that they are correct and have the expected performance, and how to organize information in data structures and process it with efficient algorithms. We also introduce software engineering methods including modular design, generic and reusable code, and design patterns. Java programming is used throughout to illustrate and exercise the course concepts.

CSE 240
Introduction to Computer Architecture

You know how to program, but do you know how computers really work? How do millions of transistors come together to form a complete computing system? This bottom-up course begins with transistors and simple computer hardware structures, continues with low-level programming using primitive machine instructions, and finishes with an introduction to the C programming language. This course is a broad introduction to all aspects of computer systems architecture and serves as the foundation for subsequent computer systems courses, such as Digital Systems Organization and Design (CSE 371), Computer Operating Systems (CSE 380), and Compilers and Interpreters (CSE 341).

CSE 260
Mathematical Foundations of Computer Science

What are the basic mathematical concepts and techniques needed in computer science? This course provides an introduction to Boolean logic, combinatorics, graph theory and probability theory as well as a rigorous grounding in writing and reading mathematical proofs.

CSE 262
Automata, Computability and Complexity

The course provides an introduction to the theory of computation. The treatment is mathematical, but the point of view is that of Computer Science. Roughly speaking, the theory of computation consists of three overlapping subareas: (1) formal languages and automata; (2) computability and recursive function theory; (3) complexity theory. The course will focus mostly on (1) and (2). The topics covered include finite automata and regular languages, context-free languages, Turing machines, Church's Thesis, undecidability, reducibility and completeness, time complexity and NP completeness.

CSE 320
Introduction to Algorithms

Problem solving. Constructs for representing and manipulating information. Recurrence relations. Asymptotic notation for analysis of algorithms. Advanced data structures such as balanced trees. Graph algorithms: searching, spanning, shortest paths, network flows. Algorithm design paradigms: greedy, divide-and-conquer, backtracking, dynamic programming, and randomization. Introduction to computational complexity, NP-completeness, approximation algorithms.

CSE 277
Intro To Computer Graphics Techniques

This course is focused on programming the essential geometric and mathematical concepts underlying modern computer graphics. Using primarily 2D implementations, it covers fundamental topics graphical user interface design, computational geometry, graphics algorithms, and image processing.

CSE 460
Computer Graphics

This course is designed to provide a comprehensive introduction to computer graphics leading to the ability to understand contemporary terminology, progress, issues, and trends. Topics which will be covered include geometric transformations, computer graphics software, three-dimensional model representations, visible surface algorithms, image synthesis, ray tracing, radiosity, anti-aliasing, animation techniques, and virtual environments. The interdisciplinary nature of computer graphics is emphasized in the wide variety of examples and applications presented with both image and animated materials. Course material is structured to meet the needs of both designers and users of interactive computer graphics systems.

CSE 462
Computer Animation

This course covers core subject matter common to the fields of robotics, character animation and embodied intelligent agents. The intent of the course is to provide the student with a solid technical foundation for developing, animating and controlling articulated systems used in interactive computer games, virtual reality simulations and high-end animation applications. The course balances theory with practice by "looking under the hood" of current animation systems and authoring tools and exams the technologies and techniques used from both a computer science and engineering perspective. Topics covered include: geometric coordinate systems and transformations; quaternions; parametric curves and surfaces; forward and inverse kinematics; dynamic systems and control; computer simulation; keyframe, motion capture and procedural animation; behavior-based animation and control; facial animation; smart characters and intelligent agents.

EAS 499
Senior Project