2013-2014 Catalog 
    
    May 04, 2024  
2013-2014 Catalog [ARCHIVED CATALOG]

Computer Science Course List


Computer Science

Courses

  • CS 102 - Introduction to Computer Animation



    5.0 Credits
    Introduces some basic techniques and tools of computer animation and sound production. Students develop their own unique computer character sprites, and create a short interactive computer animation with accompanying sound and music (was CMPSC 102).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Use software to perform basic image manipulations including resizing, color adjustment, and positioning to create images suitable for use in a group animation. [REASON]
    2. Use drawing and character modeling techniques to modify a unique character representation that can be used as a basis for a digital sprite in a group project. [REASON]
    3. Write a computer program that displays animated images on the screen. [REASON]
    4. Include meaningful sounds and music within an animated program. [COMMUNICATE]
    5. Work as an effective team member to accomplish common animation project goals in a timely fashion. [COMMUNICATE]
    6. Make an oral and visual presentation to a the class, summarizing their final project results. [COMMUNICATE]
  • CS 115 - Introduction to Programming



    5.0 Credits
    An introductory course in programming using VB.NET. No previous programming experience is expected. Topics include designing, creating and debugging interactive, event-driven programs with a graphical user interface and developing problem-solving skills (was CMPSC 115).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Use correct syntax and structure of the Visual Basic language. [REASON]
    2. Design an appropriate User Interface for a simple Visual Basic application. [REASON]
    3. Analyze problems typical of the business, scientific or home environment and to formulate solutions in quantitative terms capable of computer solution. [REASON]
    4. Design algorithms typically used in computer programming. [REASON]
    5. Lay out a flow chart for a typical algorithm. [REASON]
    6. Utilize Sequence, Selection and Iteration constructs in the design of solutions. [REASON]
    7. Design, code, correct, test and execute a Visual Basic program. [REASON]
  • CS 125 - Linux and UNIX I



    5.0 Credits
    First of a two-quarter survey of Linux/UNIX operations. Topics include general operating system functions and principles, Bourne and bash shells, basic commands for common system operations, Linux installation/setup (was CMPSC 132).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Install and change settings for a current version of the Linux operating system. [REASON]
    2. Utilize UNIX commands to perform common system operations. [REASON]
    3. Apply problem-solving skills with valid logical reasoning to solve various computer-related problems. [REASON]
    4. Describe the basic components and functions of computer operating systems. [COMMUNICATE]
    5. Explain the differences and similarities between different operating systems. [COMMUNICATE]
  • CS 126 - Linux and UNIX II



    5.0 Credits
    Second of a two-quarter survey of Linux/UNIX operations. Topics include general operating system functions and principles, advanced commands, regular expressions and scripting (was CMPSC 133).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Demonstrate proficiency in the use of Linux/UNIX utilities. [REASON]
    2. Utilize UNIX commands to perform common system operations such as creating and moving files. [REASON]
    3. Utilize UNIX utilities to manipulate files and perform system tasks such as cutting and sorting fields of files. [REASON]
    4. Perform basic process and job control tasks. [REASON]
    5. Demonstrate logical reasoning to solve specific computer-related problems. [REASON]
    6. Explain the structure of the Linux/UNIX file system. [COMMUNICATE]
  • CS& 131 - Computer Science I C++



    5.0 Credits
    Introduction to programming for students majoring in Computer Science, technical or engineering fields. Covers the fundamental syntax and constructs of the C/C++ programming languages and general concepts of programming.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Display a knowledge of the basic syntax and constructs of the ‘C’ programming language. [REASON]
    2. Specify, design, code and debug programs which solve common scientific, technical and business problems. [REASON]
    3. Perform necessary tasks using various programming tools such as an editor, compiler, debugger and profiler. [REASON]
    4. Display an ability to use the concepts of procedural and functional abstraction to organize a program. [REASON]
    5. Test a ‘C’ program for correctness and usability. [REASON]
    6. Properly document code in a prescribed standard format. [COMMUNICATE]
  • CS 132 - Computer Science II C++



    5.0 Credits
    Intermediate concepts of object-oriented program design and implementation using the C++ language. Topics include class design, polymorphism, composition, common algorithms, and the general use of object-oriented programming principles and algorithms for sorts and searches (was CMPSC 143).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Develop complex abstract data types, and corresponding C++ classes, including overloaded operators. [REASON]
    2. Code and utilize common algorithms and analyze them for efficiency using Big-O and Big Omega notation. [REASON]
    3. Use the basic constructs of the C++ programming language to write a correct, efficient and maintainable applications program. [REASON]
    4. Describe the concepts of abstracting, encapsulation, inheritance, and polymorphism and explain how they have been incorporated within the C++ language. [COMMUNICATE]
    5. Be able to work cooperatively in small groups to produce a correct, efficient and maintainable program. [COMMUNICATE]
  • CS 133 - Computer Science III C++



    5.0 Credits
    C++ Data Structures. Topics include: data structures such as list, stacks, queues, various binary trees and iterators; single, multiple and virtual inheritance, polymorphism, the STL and object-oriented design techniques (was CMPSC 144).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and implement a class representation of an abstract type. [REASON]
    2. Use inheritance, multiple inheritance and virtual inheritance in designing and coding class structures. [REASON]
    3. Apply polymorphism and virtual methods to generalize programming solutions. [REASON]
    4. Design and code implementations of types such as stacks, queues, lists, and multiple form of trees. [REASON]
    5. Use the Standard Library features to implement standard program components. [REASON]
    6. Develop medium to large scale programs. [REASON]
    7. Work in a small group to develop complex projects. [COMMUNICATE]
  • CS 135 - C and C++ Review I



    5.0 Credits
    Part one of a two-quarter sequence. A review of the fundamental concepts of the C and C++ languages. Topics include program flow constructs, functions, references and pointers, operator overloading, file I/O, classes, and object oriented design (was CMPSC 145).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and write a small application program in C++ which demonstrates a mastery of the basic conditional, interactive, input/output, and functional constructs of the language. [REASON]
    2. Use the common tools found in a typical programming environment such as an editor, debugger, profiler, object browser, compiler, make facility, etc. to compile, debug and execute a multi-file program. [REASON]
    3. Design and write applications in C++ which demonstrate a mastery of data representation and abstraction using primitive types, arrays, structs, and pointers. [REASON]
    4. Apply object oriented techniques to identify objects in a problem domain and code classes to represent those objects. [REASON]
    5. Apply basic concepts of inheritance to create an application class which uses an inheritance hierarchy and polymorphic behavior to solve a problem. [REASON
    6. Describe the basic characteristics of object oriented design and programming, and the advantages of employing object oriented techniques. [COMMUNICATE]
    7. Clearly communicate problem and solution descriptions to peers using an online forum, and work with peers to jointly solve problems. [COMMUNICATE]
  • CS 136 - C and C++ Review II



    5.0 Credits
    Part two of a two-quarter sequence. Basic characteristics of C/C++ and the use of C++ for Windows graphics and game programming. Advanced features of C++ such as Template Library, exception handling, bit operations, and the use of C++ to implement 2D graphics techniques (was CMPSC 146).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and write small application programs in C++ that demonstrate a mastery of the basic template and exception handling constructs of the language. [REASON]
    2. Write small programs which demonstrate use of low-level bitwise operations. [REASON]
    3. Design and write applications that use the Standard Template Library to solve problems involving complex data structures and algorithms. [REASON]
    4. Describe the fundamental graphics and input programming interface of the Windows operating system, including the message loop and callback mechanisms. [REASON]
    5. Write a C++ program that utilizes the Windows programming interface to present a typical program interface including menus, dialog boxes, and buttons. [REASON]
    6. Write a C++ program that utilizes the Windows graphics and mouse libraries to create an interactive 2D animation. [REASON]
    7. Describe how the Standard Template Library, exception handling, and bitwise operations are used in typical game programs, and write a small 2D game that utilizes those constructs in an appropriate manner. [REASON]
    8. Locate and use printed and online documentation to solve programming problems. [REASON]
    9. Describe applications which will benefit from low-level bitwise operation. [COMMUNICATE]
  • CS& 141 - Computer Science I Java



    5.0 Credits
    Introduction to Java programming. Topics include basic Java syntax, data types, control structures, methods, object representation using classes, graphics, Applets and arrays, all within a framework of general object oriented programming principles (was CMPSC 151).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Use the basic constructs of the Java programming language to write a correct, efficient and maintainable application program. [REASON]
    2. Analyze real-world problems in quantitative terms and formulate programming solutions. [REASON]
    3. Describe object-oriented concepts and structures in Java. [REASON]
    4. Design and implement algorithms typically used in computer programming. [REASON]
    5. Work cooperatively in small groups to design, implement and test a program. [COMMUNICATE]
  • CS 142 - Computer Science II Java



    5.0 Credits
    Intermediate Java programming. Topics include algorithm development, searching/sorting, complexity/efficiency, recursion, user interface design, class relationships including composition and inheritance and an introduction to abstract data types (was CMPSC 152).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and implement Java programs creating a hierarchy of classes with inheritance, composition and interface implementation. [REASON]
    2. Create highly useable graphical user interfaces using Java tools. [REASON]
    3. Write Java programs utilizing recursion and various searching and sorting algorithms. [REASON]
    4. Work cooperatively in small groups to produce and test correct, efficient and maintainable programs. [COMMUNICATE]
  • CS 143 - Computer Science III Java



    5.0 Credits
    Java Data Structures. Topics include data structures such as lists, stacks, queues and various binary trees, inheritance and interfaces, using standard collection classes and algorithms and Generics (was CMPSC 153).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design, implement and test programs properly utilizing multiple data structures. [REASON]
    2. Analyze algorithms for efficiency (big O and big Omega). [REASON]
    3. Produce and test complex n-tier programs in a professional manner. [REASON]
    4. Work cooperatively in small groups to produce correct, efficient and maintainable program. [COMMUNICATE]
  • CS 161 - Introduction to Computer Game Development



    5.0 Credits
    Fundamentals of computer game programming, including a survey of computer game categories and platforms, major game components, an overview of the game development process, and an introduction to game graphics programming using the Windows API (was CMPSC 161). S/U grade option.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Categorize games according to common game genres. [REASON]
    2. Describe diverse game components. [REASON]
    3. Enumerate the general computer game platforms and the strength and weaknesses of each. [REASON]
    4. Describe the game development process. [REASON]
    5. Prepare a design document for a simple game. [REASON]
    6. Describe some basic concepts, features, and techniques of graphics programming including the representation and display of points, colors, lines, polygons, and bitmaps, the translation, scaling and rotation of images, sprite creation and animation, scrolling, and simple collision detection. [REASON]
    7. Create an optimized game that includes geometric transformations, multilevel scrolling, sprite animation, and collision detection using Visual Basic.NET and the Windows GDI+ (Graphics Device Interface). [REASON]
    8. Independently research an aspect of computer game development. [REASON]
    9. Describe general characteristics common to all games. [COMMUNICATE]
    10. Complete a project as part of a team or group programming effort. [COMMUNICATE]
    11. Present a reasoned opinion on a current social controversy involving the nature of computer games. [EXPLORE]
  • CS 162 - Graphics and Game Programming I



    5.0 Credits
    Introduction to the Microsoft DirectX game and graphics libraries and their use in the development of Windows based games, animation, and other graphics applications (was CMPSC 162).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Describe the general purpose of programming libraries and application programming interfaces (APIs). [REASON]
    2. Describe various graphics and multimedia programming libraries available for the Windows environment. [REASON]
    3. Describe the general principles of the COM (Component Object Model) architecture. [REASON]
    4. Describe the various components of the DirectX programming library including DirectDraw, DirectSound, DirectMusic, DirectInput, Direct3D, DirectShow, DirectPlay, DirectMedia, and Direct Animation. [REASON]
    5. Enumerate the hardware and software requirements needed to both develop and run DirectX applications. [REASON]
    6. Make DirectX function calls from within Visual Basic.NET, C#, or C++ programs. [REASON]
    7. Create an application using .NET and DirectDraw which will allow a user to smoothly scroll through a tiled “world”. [REASON]
    8. Describe some common programming problems associated with smooth animation. [COMMUNICATE]
    9. Complete a project as part of a team or group programming effort. [COMMUNICATE]
  • CS 163 - Graphics and Game Programming II



    5.0 Credits
    Fundamental concepts used in 2D graphics and animation, as well as the techniques and tools needed to create a game application using the DirectX 2D graphics and animation library (was CMPSC 163).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Install, configure, and utilize Visual Studio and the DirectX software development kit. [REASON]
    2. Create, debug, and test a program using appropriate DirectX components, image buffering, timers, and user input. [REASON]
    3. Describe the representation of colors in Windows programs in palletized and non-palletized modes. [REASON]
    4. Describe and implement various line drawing and fill algorithms. [REASON]
    5. Describe the representation of colors in Windows programs in palletized and non-palletized modes. [REASON]
    6. Implement fundamental algorithms to perform pixel, line, bitmap clipping, and 2D matrix transformations of points, lines, and polygons. [REASON]
    7. Complete a project as part of a team or group programming effort. [COMMUNICATE]
  • CS 170 - Game Mathematics I



    5.0 Credits
    First of a two-course sequence. Introduction to the mathematical principles used to represent 2D and 3D space in game programming. Topics include sets, functions, polynomials, trigonometry, analytic geometry, and their application to computer game graphics and physics (was CMPSC 170).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Define a set and utilize set notation and operations including Cartesian product. [REASON]
    2. Interpret common set operations from both an analytic and geometric viewpoint. [REASON]
    3. Graph various functions in 2D and 3D space. [REASON]
    4. Use polynomial functions to solve interpolation, approximation, and prediction problems characteristic of computer games. [REASON]
    5. Use trigonometric functions and identities to solve 2D and 3D problems in math, physics and computer graphics. [REASON]]
    6. Represent basic 2D and 3D figures such as ellipses, paraboloids, ellipsoids, and prisms using analytic geometry. [REASON]
    7. Clearly communicate problem and solution descriptions to peers, and work with peers to jointly solve mathematical problems. [COMMUNICATE ]
  • CS 172 - Game Mathematics II



    5.0 Credits
    Second of a two-part sequence covering the mathematical principles used to represent 2D and 3D space in games. Topics include vectors, linear transformations, quarternions, analytic geometry, and their application to computer game programming (was CMPSC 172).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Define a vector and describe and utilize common vector operations including addition, subtraction, and dot products. [REASON]
    2. Define a matrix and common matrix properties and operations including the identity and transpose matrix determinant, matrix addition, subtraction, and multiplication. [REASON]
    3. Solve systems of linear equations using matrix operations and gaussian elimination. [REASON]
    4. Interpret common vector operations from both an analytic and geometric viewpoint. [REASON]
    5. Define a linear transformation recognize linear transformations from both algebraic and geometric representations. [COMMUNICATE]
    6. Write common transformation matrices used in game programming, including scaling, skewing, translation, rotation, and projection matrices. [REASON]
    7. Define imaginary and complex numbers and their common properties and operations such as power, multiplication, division, addition, subtraction, conjugate, and magnitude. [REASON]
    8. Define hypercomplex numbers and quaternions, and describe how they and their common operations represent a generalization of complex numbers. [COMMUNICATE]
    9. Apply quaternion operations to common game programming tasks such as 2D collision, 3D reflection, polygon penetration, and lighting and shadow casting in 3D games. [REASON]
    10. Apply the principles of game mathematics to represent scene generation in a 3D game including motion, lighting and texturing. [REASON]
    11. Clearly communicate problem and solution descriptions to peers, and work with peers to jointly solve mathematical problems. [COMMUNICATE]
  • CS 185 - Two-Dimensional Game Development Project



    5.0 Credits
    Techniques and tools used to create non-graphic game components such as joystick I/O, sound, video, networking, and artificial intelligence. Students integrate these components into a 2D game project (was CMPSC 185).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Write an application with sound that retrieves, interprets and handles data from and to multiple devices. [REASON]
    2. Create and edit a sound sample that can be used in a game. [REASON]
    3. Utilize basic fundamentals of game physics. [REASON]
    4. Define various fundamentals of working with sound and sound files. [COMMUNICATE]
    5. Create and present a design document for a game. [COMMUNICATE]
    6. Work on a team to create, debug and test a 2D video game which incorporates graphics, sound, input and physics modeling. [COMMUNICATE]
  • CS 194 - Three-Dimensional Graphics Animation



    5.0 Credits
    General principles of representing and animating 3D objects, and application to 3D computer animation. Students model, texture, animate, and render objects using Maya, a high-end animation software package, producing a final short animation sequence (was CMPSC 194).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Apply common modeling techniques such as extrusion, revolution, deformation, and fractal generation to create simple volumetric objects. [REASON]
    2. Describe how motion can be represented as translation, rotation and change of scale, and demonstrate their understanding by applying these transformations using 3D animation software. [COMMUNICATE]
    3. Describe orthographic and perspective/camera views, and demonstrate an understanding by navigating and manipulating objects in these views using 3D animation software. [COMMUNICATE]
    4. Describe how multiple world objects can be represented as a hierarchy, and animate multiple objects using this knowledge and 3D animation software. [COMMUNICATE]
    5. Apply common modeling techniques such as extrusion, revolution, deformation, and fractal generation to create simple volumetric objects. [REASON]
    6. Use various techniques to generate and apply surface textures to 3D objects. [REASON]
    7. Use key frame and function curve animation techniques to animate a 3D object. [REASON]
    8. Render, shade and optimize a scene. [REASON]
    9. Create and complete final editing for a movie file. [REASON]
    10. Set various camera views and scene light sources and be able to render the final scene using a commercial 3D graphics program. [REASON]
  • CS 195 - Three-Dimensional Computer Animation II



    5.0 Credits
    A continuation of CS 194. Advanced techniques for texturing, animating and rendering 3D computer models as well as their implementation using Maya 3D animation software. S/U grade option.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Describe the importance of surface texture in the creation of 3D objects. [COMMUNICATE]
    2. Describe and use multiple techniques to generate and apply surface textures to 3D objects. [COMMUNICATE]
    3. Explain the advantages and disadvantages of different texturing techniques. [COMMUNICATE]
    4. Describe the relative motion of simple jointed models, and how such models can be animated using forward and inverse kinematic techniques. [COMMUNICATE]
    5. Utilize kinematic techniques to animate a 3D jointed model. [REASON]
    6. Build a complex scene and animate it with interacting complex movements. [REASON]
    7. Describe the 3D rendering process. [COMMUNICATE]
    8. Utilize software to render, shade and optimize a scene. [REASON]
    9. Create and complete final editing for a movie file. [REASON]
  • CS 199 - Special Projects



    5.0 Credits
    Special study to be arranged by student and supervising instructor (was CMPSC 199). S/U grade option. Note: Credit available with approval. For information contact the division secretary in Alderwood Hall, 218A or phone 425.640.1679.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Successfully complete a project related to the specified topic. [REASON]
  • CS 210 - Game Physics



    5.0 Credits
    Application of the laws of physics to the creation of computer games with physics-based realism (was CMPSC 210).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Describe the benefit of physics-based realism to a video game. [COMMUNICATE]
    2. Describe the concepts of rigid body dynamics as it applies to real-time simulations. [COMMUNICATE]
    3. Design and implement a real-time simulation that includes projectiles and vehicles. [REASON]
  • CS 215 - Intermediate Visual Basic .NET



    5.0 Credits
    Intermediate topics of visual program design and implementation using Visual Basic .NET. Topics include arrays, object-oriented programming, files and streams, error handling and debugging SQL, database programming with ADO.NET, and multimedia (was CMPSC 215).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Use the basic constructs of Visual Basic to write a correct, efficient and maintainable application program. [REASON]
    2. Use Visual Basic to access files and databases. [REASON]
    3. Use Visual Basic to link applications. [REASON]
    4. Work cooperatively in small groups to produce a correct, efficient and maintainable program including error-handling and debugging. [REASON]
    5. Produce well written and easily understood documentation of program code. [COMMUNICATE]
  • CS 216 - Advanced Visual Basic .NET Programming



    5.0 Credits
    Introduces advanced topics of visual program design and implementation using Visual Basic .NET. Topics include database programming and SQL, ADO.NET, data structures and collections, ASP.NET and Web services, and networking (was CMPSC 216).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Write substantive, efficient, and maintainable application programs using the advanced tools of Visual Basic .NET. [REASON]
    2. Build reusable and dynamic data structures, such as linked lists, queues, stacks utilizing classes, inheritance and composition. [REASON]
    3. Create Web services applications and distinguish usage of ASP.NET among clients and servers. [REASON]
    4. Implement VB.NET networking applications using sockets. [REASON]
    5. Explain the essentials of accessing a relational database with SQL and ADO.NET from within an application program. [COMMUNICATE]
    6. Demonstrate appropriate implementation of classes and collection hierarchies. [COMMUNICATE]
    7. Work cooperatively in small groups to produce significant and practical Windows and Web application programs. [COMMUNICATE]
  • CS 217 - Internet Programming with .NET



    5.0 Credits
    Design, implementation and deployment of applications, Web services, and components in an enterprise environment. Uses the latest tools and languages supported by the .NET framework (was CMPSC 217).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Convert an existing VB or C++ program to a Web service. [REASON]
    2. Design and implement an ASP.NET based program utilizing relational databases and SQL. [REASON]
    3. Use existing web controls and create new Web controls to implement a web based application. [REASON]
    4. Integrate a data source with a Web control or web service. [REASON]
    5. Work cooperatively in small groups to design, program, and deploy applications, Web services, and components. [COMMUNICATE]
  • CS 218 - Introduction to C#



    5.0 Credits
    Introduces the C# programming language. Topics include basic C# syntax, data types, control structures, methods, object representation using classes and arrays, all within a framework of general object oriented programming principles (was CMPSC 225).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and implement programs with multiple classes using accepted object oriented techniques. [REASON]
    2. Develop an object oriented Windows application that uses C# syntax, constructs, structures and multiple classes. [REASON]
    3. Work with a team to design, implement and test a C# program. [COMMUNICATE]
  • CS 225 - UNIX Shell Programming



    5.0 Credits
    An intermediate course that extends previous experience with the Bourne/bash shells to program scripts used to automate system administrative tasks. Topics include environment/user defined variables, branches, loops, menus, user interaction, and functions (was CMPSC 233).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and implement useful shell scripts utilizing AWK programming language statements. [REASON]
    2. Utilize shell variables, environment variables, shell language constructs and advanced file commands within shell scripts. [REASON]
    3. Compare and contrast the Bourne, C and Korn Shells. [COMMUNICATE]
    4. Describe the responsibilities of the UNIX system administrator and perform the common tasks performed by a system administrator. [COMMUNICATE]
    5. Relate UNIX specific features to generalized operating system principles. [COMMUNICATE]
  • CS 226 - Advanced UNIX: Perl



    5.0 Credits
    Introduction to the Perl language and its use in UNIX scripting. Topics include scalar, list, hash and reference variables, control structures, formats, regular expressions, file and process input and output, subroutines, Object Oriented Perl, and Perl’s relationship to other languages (was CMPSC 234).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Design and implement PERL programs for common system administration tasks. [REASON]
    2. Utilize the UNIX-specific features of PERL. [REASON]
  • CS 240 - Android Applications



    5.0 Credits
    An introduction to Android, a software stack for mobile devices that includes an operating system, middleware and key application. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using a variation of the Java programming language. Prerequisite: CS& 141 with a grade of 2.5 or higher or instructor permission

     

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Develop and test simple applications within the Android environment. [REASON]
    2. Develop and test applications which properly interact with common Android controls. [REASON]
    3. Design Android interfaces which are understandable and convenient for the user to use. [REASON]
    4. Demonstrate understanding of Android core applications including an email client, SMS program, calendar, maps, browser, contacts and others. [COMMUNICATE]

  • CS 255 - Special Topics



    Maximum of 5.0 possible Credits
    Current topics of interest to students of computer science. Topics will change from offering to offering (was CMPSC 255).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Understand basic principles involved in the topic of consideration. [REASON]
    2. Implement a small program or system that makes use of principles involved in the topic. [REASON]
  • CS 262 - Introduction to Three-Dimensional Graphics Programming



    5.0 Credits
    Introduction to the fundamental concepts of 3D graphics and animation, including an investigation of the 3D rendering pipeline and the use of the Microsoft Direct 3D library to implement a working 3D application (was CMPSC 262).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Describe how positions are represented in 3D Cartesian and non-Cartesian coordinate systems. [COMMUNICATE]
    2. Describe various attributes, operations, and algorithms associated with graphics primitives including line drawing and shape filling algorithms and describe the relative advantages and disadvantages of each. [COMMUNICATE]
    3. Sketch representations of various 3D geometric objects as a series of polygonal surfaces or meshes. [REASON]
    4. Encode a series of 2D points in a matrix form, perform scalar by matrix multiplication, matrix addition, subtraction, and multiplication, and be able to geometrically interpret the results of such operations. [REASON]
    5. Describe how scaling, translation, and rotation of a 3D cube can be represented by matrix operations. [COMMUNICATE]
    6. Describe how a perspective projection may be expressed as a matrix operation and how the overall rendering process can be considered as a series of “space” transformations which transforms the object from its local space to a screen space. [COMMUNICATE]
    7. Define world, view, projection, and clipping transformations and be able to express how such a series of transformations describe the rendering process. [COMMUNICATE ]
    8. Describe various color models commonly encountered in 3D graphics applications and commonly used techniques for specifying animation sequences. [COMMUNICATE]
    9. Describe the relationship of the Direct3D immediate and retained modes and the relative advantages and disadvantages of using each. [COMMUNICATE]
    10. Write a program which initializes a Direct3D retained mode application and creates a 3D clipper and clip list. [REASON]
    11. Write a program which creates a Direct3D retained mode device, mesh scene frame, cameral frame, and viewport. [REASON]
  • CS 271 - Three-Dimensional Game Development I DirectX



    5.0 Credits
    First of a three-course sequence. Introduction to 3D game programming using the latest version of the Microsoft 3D API. Topics include a review of 3D mathematics, transformation pipeline, initializing Direct 3D, vertex and index buffers, and single and multi-texture effects (was CMPSC 271). Prerequisite: CS 132  (was CMPSC 143) or CS 135  (was CMPSC 145) or department permission. CS 161  (was CMPSC 161) highly recommended.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Program a game scene with ambient, directional and spot lighting. [REASON]
    2. Program a scene which includes a texture mapped solid figure. [REASON]
    3. Program mipmapping algorithms to improve the visual detail of a solid textured figure as the figure is approached. [REASON]
    4. Write programs utilizing full Direct3D tools and capabilities. [REASON]
    5. Describe the overall architecture of DirectX including the relationship of hardware and software resources. [COMMUNICATE]
    6. Describe various rendering device performance characteristics, and their advantages and disadvantages. [COMMUNICATE]
    7. Describe the effects of memory placement choices on mesh load and rendering times. [COMMUNICATE]
    8. Describe the process of applying texture maps to polygon, including various common texture addressing modes. [COMMUNICATE]
    9. Describe how aliasing can cause texture artifacts, and how various filtering techniques can help eliminate the artifacts. [COMMUNICATE]
    10. Clearly communicate problem and solution descriptions to peers, and work with peers to jointly solve problems. [COMMUNICATE]
  • CS 272 - Three-Dimensional Game Development II DirectX



    5.0 Credits
    Second of a three-course sequence covering 3D game programming using the latest version of the Microsoft 3D API. Topics include camera management systems, texture compression, advanced texturing and alpha blending, loading GILES levels, and advanced 3D rendering techniques (was CMPSC 272).

    Course-level Learning Objectives (CLOs)
    Upon successful completion of this course, students will be able to:

    1. Recognize and describe several special effects such as particle systems, billboards, texture animation, corona, constrained billboards, and animated textures, and be able to describe situations in which these special effects can best be implemented. [REASON]
    2. Write code which will implement a particle system that produces a realistic smoke trail. [REASON]
    3. Design and implement an octree spatial portioning algorithm and integrate it into a general collision detection system. [REASON]
    4. Write a program which will allow a user to move a sphere through a game world with realistic collision behavior. [REASON]
    5. Write code that implements an animated skeleton and mesh skin. [REASON]
    6. Describe how fog is represented in a 3D game, and be able to write D3D code to add fog to a game scene. [COMMUNICATE]
    7. Describe how transparency is modeled in a 3D rendering engine, and how alpha blending, depth ordering, and texture color keying are related to transparency models. [COMMUNICATE]
    8. Describe collision detection algorithms for common geometric forms, and how to integrate such algorithms into a general game engine. [COMMUNICATE]
    9. Clearly communicate problem and solution descriptions to instructor and peers, and work with peers to jointly solve game programming problems. [COMMUNICATE]
  • CS 273 - Three-Dimensional Game Development III DirectX



    5.0 Credits
    Third of a three-course sequence covering 3D game programming using the latest version of the Microsoft 3D API. Topics include D3DX meshes, progressive meshes, hierarchies, and frame based and mesh hierarchy based animation (was CMPSC 273). Prerequisite: CS 272  (was CMPSC 272) with a grade of at least 2.5 or department permission.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Program matrix operations which transform 3D geometric coordinates to their final perspective screen view. [REASON]
    2. Render a frame with ambient, directional and spot lighting. [REASON]
    3. Apply knowledge of material surface properties to program light characteristics in a game scene. [REASON]
    4. Render a frame which includes a texture mapped solid figure. [REASON]
    5. Describe the overall architecture of the OpenGL API. [COMMUNICATE]
    6. Clearly communicate problem and solution descriptions to peers, and work with peers to jointly solve mathematical problems. [COMMUNICATE]
  • CS 274 - Three-Dimensional Game Development IV DirectX



    10.0 Credits
    Course covers 3D game programming using the latest version of the DirectX API. Topics include particle systems, shadows, reflections, curved surface representations, collision detection and spatial partitioning (was CMPSC 274). Prerequisite: CS 273  (was CMPSC 273) with a grade of at least 2.5 or equivalent experience.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Write code which will implement multiple texturing. [REASON]
    2. Write code which will use environment mapping to implement chrome mapping and cartoon shading. [REASON]
    3. Use hierarchical transformations to position objects relative to one another. [REASON]
    4. Use vertex animation to display animated characters. [REASON]
    5. Describe how hardware considerations affect graphics efficiency, and how various optimization processes can be used to overcome efficiency bottlenecks. [COMMUNICATE]
    6. Describe the limits on texture resolution and be able to determine cases in which the limits become important. [COMMUNICATE]
    7. Describe skinning and its relationship to other animation techniques. [COMMUNICATE]
    8. Describe the uses of spatial partitioning and write code to implement spatial partition algorithms such as, quadtrees, octtrees, KD-trees, and BSP Trees. [COMMUNICATE]
    9. Describe the difference between broad and narrow phase collision detection and write a program that implements both. [COMMUNICATE]
    10. Describe situations in which different collision detection strategies, such as ray intersection testing, ellipsoid, unit spheres, swept sphere and triangle are applicable, and be able to write algorithms to implement each technique. [COMMUNICATE]
    11. Describe common methods of determining potential visibility sets. [COMMUNICATE]
    12. Clearly communicate problem and solution descriptions to the instructor and peers, and work with peers to jointly solve programming problems. [COMMUNICATE]
  • CS 283 - Artificial Intelligence for Game Developers



    5.0 Credits
    Data structures and algorithms used in computer game AI. Includes a discussion of the two most general aspects of game AI including pathfinding and decision making. Pathfinding topics include grid traversal and search algorithms, pathfinding with A*, and waypoint networks. Decision making topics include finite state machines, scripting, and squad level AI (was CMPSC 283). Prerequisite: CS 132  (was CMPSC 143) or CS 135  (was CMPSC 145) or department permission. CS 161  (was CMPSC 161) and CS 271  (was CMPSC 271) highly recommended.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Design and implement a program that utilizes Dijkstra’s path finding algorithm to navigate arbitrary maps. [REASON]
    2. Design and implement a program that utilizes the A* path finding algorithms. [REASON]
    3. Discuss the history and evolution of path finding. [COMMUNICATE]
    4. Describe basic path finding methodology. [COMMUNICATE]
    5. Compare and contrast Dijkstra’s and the A* path finding algorithms. [COMMUNICATE]
    6. Clearly communicate problem and solution descriptions to peers, and work with peers to jointly solve programming problems. [COMMUNICATE]
  • CS 285 - Three-Dimensional Game Development Project



    5.0 Credits
    Application of basic 3D game concepts, techniques, and tools to the design and creation of a 3D game (was CMPSC 285.0). Prerequisite: CS 161  (was CMPSC 161) or instructor permission.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Utilize 3D objects in 3D space. [REASON]
    2. Incorporate Collision concepts in a 3D environment. [REASON]
    3. Implement sound and music attributes. [REASON]
    4. Develop and use Art assets. [REASON]
    5. Present a design for a 3D game and answer questions about it. [COMMUNICATE]
    6. Work cooperatively and efficiently in a team to complete a working 3D game. [COMMUNICATE]
  • CS 290 - Introduction to Software Testing and Quality Assurance



    5.0 Credits
    Covers the fundamental concepts and techniques of software testing and quality assurance. Topics include goals of testing and quality assurance, classification of bugs, testing categories and techniques, test design, metrics and complexity (was CMPSC 290). Prerequisite: CS 115  (was CMPSC 115) with a grade of 2.5 or higher or instructor permission.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Complete a standardized bug report. [REASON]
    2. Distinguish between black box and white box testing and between structural and functional testing. [REASON]
    3. Create black box test plan for a program. [REASON]
    4. Describe the overall goals and limitations of testing and software quality assurance. [COMMUNICATE]
    5. Describe the key components of a testing model including the project, environment, program, bug, and tests. [COMMUNICATE]
    6. Describe tactics for finding and analyzing both reproducible and non-reproducible coding errors and be able to find and analyze such errors in a program. [COMMUNICATE]
    7. Describe regression testing and its general purpose. [COMMUNICATE]
    8. Describe the purpose, domain, and limitations of automated testing. [COMMUNICATE]
  • CS 293 - Game Testing



    5.0 Credits
    Commercial tools and techniques used for testing games, including testing using console company “technical checklist”. For students wishing to embark on careers in game testing or expand existing testing skills to meet the specialized requirements of the game industry (was CMPSC 293). Prerequisite: CS 290  (was CMPSC 290) recommended or instructor permission.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Identify structural components of a game that require independent testing. [REASON]
    2. Identify interactions between structural components in a game that require testing. [REASON]
    3. Identify and report common bugs in game control devices. [REASON]
    4. Enumerate game genres and testing problems and strategies specific to each genre. [REASON]
    5. Utilize testing tools to implement portions of a video game test plan. [REASON]
    6. Describe the specialized problems that the hardware and software design of video games presents to the tester. [COMMUNICATE]
    7. Describe the common tools available for video game testing. [COMMUNICATE]
    8. Work in a group to design and implement a test plan for a video game. [COMMUNICATE]
  • CS 299 - Special Projects



    5.0 Credits
    Special study to be arranged by student and supervising instructor (was CMPSC 299). S/U grade option. Note: Credit available with approval. For more information contact the division secretary in ALD 218A or phone (425)640-1679.

    Course-level Learning Objectives (CLOs)
    Upon successful completion of the course, students will be able to:

    1. Successfully complete a project related to the specified topic. [REASON]


  •