/CSC-133

CSC 133: Object-Oriented Computer Graphics Programming – Fall 2021

Primary LanguageJava

CSC-133

CSC 133: Object-Oriented Computer Graphics Programming – Fall 2021

Catalog Description:

Introduction to computer graphics and to advanced topics in object-oriented programming. Mobile application development; implementation of event-driven systems; advanced object- oriented concepts such as inheritance and polymorphism; implementation of software design patterns; graphical user interface development; fundamentals of 2D graphics systems. Application of these topics to mobile programming. Prerequisites: CSC 130 and CSC 131. Units: 3

Course Structure:

This course has two separate but equally important two main goals: an understanding of the advanced features of the so-called “object-oriented (OO) programming paradigm”, and an understanding of the fundamentals of computer graphics (CG) programming. This course also allows students to gain experience in mobile application development by applying the introduced OO and CG concepts to this development environment.

We will cover the OO concepts of abstraction, encapsulation, inheritance, and polymorphism, including discussion of their variations both conceptually and in terms of language-specific implementations. We will also look at formalisms for specification of OO systems (specifically, Unified Modeling Language or UML). In addition, we will cover various design patterns for OO systems which will be emphasized as an underlying theme throughout the course.

In the CG area we will cover hardware characteristics of graphics systems, and go through basic CG operations such as line and polygon drawing, 2D object modeling, geometric transformations, and transformations for mapping between “world” and “screen” space. We will also cover CG-based user interfaces (GUIs), including how event-driven components for GUI implementation work.

The OO and CG topics in the course will not be covered separately, but rather will be closely integrated and frequently co-mingled. It will be quite common to spend one class period (or even just part of one period) talking about some OO-related topic, and then switch to a discussion of a CG-related application of that OO topic. One reason for this is to insure equal emphasis on both of the course goals; another is simply that many of the OO topics have a strong relationship to various CG topics. Covering the topics in parallel thus has the extra benefit of reinforcement.

There is a potential drawback to organizing a course as just described: students who do not regularly follow lectures, will likely find that the penalty for doing so is significantly greater than it might be in some other courses. You might find, for example, that a graphics concept is being explained by utilizing an OO concept previously explained (but which was missed due to not following lectures). This makes it considerably more difficult to understand the new topic, which in turn tends to have negative impact on both the amount of time it takes to do assignments and on your ability to do well on exams. The course organization described above should make it easy for students who follow lectures regularly, to keep up and do well.

This course utilizes mobile technology as a tool for teaching course topics and requires students to solve their assignments using this emerging technology. These allow students to relate course topics (e.g. OO programming, design patterns, graphical user interface design, event handling, animation, and computer graphics techniques) to mobile application development process, a skill that is increasingly demanded by the job market. Since the prerequisite course sequence at CSUS uses the Java programming language, as a mobile application development environment we will be using a Java-based framework called Codename One (CN1). Other advantages of CN1 includes: it is a cross-platform framework (i.e. the applications developed in this framework run on various mobile platforms including Android, iOS, and Windows); it is free for academic use and it is open-source; and it comes with a simulator environment (i.e. to develop and run the application you do not need to have a physical mobile device).