Undergraduate Program

If you are an undergraduate at Texas A&M interested in graphics, this page describes the basics.

What Graphics Is

Many students have some misconceptions about what is involved in the study of computer graphics within a computer science program.  The term "computer graphics" has many different meanings, depending on the context, and even here at Texas A&M you will find a couple of other classes/programs that cover "computer graphics."  There is nothing wrong with this designation, as it makes sense in its own context, but it can cause confusion.  As a few examples:

  • In art, "computer graphics" might mean artwork created on or with a computer

  • In communication, "computer graphics" can mean images or layouts designed using a computer

  • In engineering, "computer graphics" can mean using a CAD system to perform drafting functions

  • In film, "computer graphics" can mean scenes created or modified using a computer

Within computer science, computer graphics refers to the ideas, algorithms, techniques, hardware, etc. that are used to generate an image from a given model.  When computer scientists refer to computer graphics, they refer to the process, not to the application.  In a similar way to how a compiler class teaches you how to make a compiler (not how to use one), a computer graphics class teaches you how to create software (and hardware) that generates images, and less how to use such a program once it is made.  In a graphics class in computer science, you should not expect to learn how to use various colors to reflect moods (see an art class), how to use a software package to draw an image or layout a document (see a communication class), how to use AutoCad to draw your mechanical part (see an engineering drawing class), or how to make your own movie (see a film class).  On the other hand, if you are interested in knowing how a program generates colors in a simulated environment, how the pixels in a computer generated image are determined and manipulated, how the lines, curves, etc. in a drafting system are represented, or how certain special effect in a movie can be generated, a computer (science) graphics class might tell you that.

There are also several topics of study closely related to graphics.  Computer vision can be thought of as the inverse of graphics - i.e. starting with an image and ending with a model.  Image processing is the process of taking an image (or sequence of images) and manipulating (such as to achieve an effect or to compress for storage/transmission).  Modeling (including geometric modeling) refers to the process of making and working with the models that are the "input" to computer graphics.  Because all of these topics are closely related, the ideas and principles among them will often overlap, and you will often find those topics considered part of computer graphics (as well as topics in their own right).  Likewise, graphics sometimes tends to be include several "graphics applications."  Thus, you will sometimes find people grouping things like games, visualization, or graphical user interfaces under the term "computer graphics."

Background and Prerequisites

If you are interested in taking the undergraduate graphics class, there are two key aspects.  First, you should be comfortable with programming.  This would include being familiar with the material from the listed prerequisites.  The undergraduate graphics class usually involves a good amount of programming.  Hopefully, since the class is an upper level elective, most students in the class should be fine in this regard.

Second, many students do not realize that there is a relatively higher level of math required for understanding computer graphics.  To understand even basic computer graphics, you will need to be comfortable with basic linear algebra.  If you plan to go far with computer graphics, math background becomes even more important.  I cannot emphasize enough that if you would like to work long-term in graphics, you should be comfortable with mathematics.

For students at TAMU wanting to pursue graphics, I strongly suggest you choose to take linear algebra as your prerequisite class (differential equations is the other option).  Ideally, you would also take differential equations (as well as things like numerical methods and modern algebra), as it can also be useful in graphics, but it does not play as big of a role in the basic class.

CPSC 441 - The Undergraduate Graphics Class

The undergraduate computer graphics class focuses on fundamentals of 3D computer graphics.  This includes things like scan conversion (converting a line or triangle into pixels), modeling (how to represent 3D objects) and transformations (how to position those objects and then figure out where they end up on the screen), hidden surface removal (how to figure out which things block out which other things in a view), and lighting (how to figure out color and appearance in a virtual scene).  Programming using a modern graphics API (currently OpenGL) is also taught, so students should be able to create their own graphics-based programs by the end of the course.

The course regularly includes students from other majors, as well.  Because computer graphics has such a wide range of applications, there are many fields that can find it useful. 

Students who finish the class, even those who find it a lot of work, very often say they enjoyed it.  If you are at all interested in the class, you are encouraged to take it.

Further Undergraduate Work

Since it is a senior-level elective, CPSC 441 is often one of the last classes many students are able to take.  However, if a student is interested in graphics and has additional time as an undergraduate, there are several possibilities.

First, there are several other undergraduate classes, that while not graphics classes, are related or useful for pursuing graphics work.  These include:

  • CPSC 442 (Scientific Programming) - These methods become very important for a number of graphics applications.  It is an excellent class to have if you plan more advanced study in graphics or geometry.

  • CPSC 452 (Robotics and Spatial Intelligence) - There is a large amount of overlap in the problems and issues faced in graphics and in robotics.

  • CPSC 436 (Computer-Human Interaction) - Graphics are often used to enhance the way people deal with the computer.  This course will deal with some of the interaction issues that may be involved when applying graphics techniques.

  • Math courses, particularly linear algebra and differential equations.  As mentioned above, you can't have too much math.

  • Other CS classes, if that's your particular interest.  For example, computer architecture can be important in understanding graphics hardware.  Information storage and retrieval can be important in dealing with the sometimes large data sets encountered in graphics applications.

  • Classes outside CS, that deal with graphics applications or related areas.  These might include multimedia or image processing classes in Electrical Engineering, engineering drawing classes, or 3D modeling classes in architecture.  These would depend on your particular interests.

Second, undergraduates who did very well in 441 have occasionally opted to take the graduate-level computer graphics class, CPSC 641, while undergraduates.  This requires permission of the instructor, and is not offered as often as 441, so it may not be an option for students.  If you are interested in this option, you should contact the advising office as well as the CPSC 641 instructor to find out about the possibility of doing so.

Third, some undergraduate students have chosen to pursue an independent study project (485).  This requires working closely with a faculty advisor on a particular topic, and you should approach a faculty member individually to ask about pursuing one of these.  Speaking personally, I (John Keyser) have found that I am not generally able to take on more than one or two students a year in such projects.  While I have directed several such projects in the past, I now try to limit myself to taking on at most one student, and preferably through the undergraduate Research Fellows program.  [As an aside, I recommend the Research Fellows program to any undergraduate interested in pursuing research and graduate school.] 

Graduate School

Students wishing to continue their studies on to graduate school have several different opportunities.  A large number of computer science departments around the country perform graphics research.  There are are also a few other programs around that tend to mix computer graphics with other areas (such as game programming or art) for a more interdisciplinary program.  There are many opportunities out there for further study.

At Texas A&M, there are generally two options.  One is the graduate program in Computer Science.  More details can be found on this website under the Graduate Program link.  The other is the graduate program in Visualization Sciences (i.e. the Viz Lab), offered in the College of Architecture.  This program requires a mix of art and computer skill.  For Computer Science/Computer Engineering majors, the artistic part is often the area lacking for admission into that program.  If you are interested in the Viz Lab program, you should contact them to find out about admission and study plan possibilities.