EDCC Logo
 
Computer Science

Course Descriptions

CS 102: Introduction to Computer Animation

Credits: 5.0

Introduces some basic techniques and tools of computer animation and sound production. Students develop their own unique computer character sprites, and create a short computer animation with accompanying sound and music.

Course Level Objectives

Upon successful completion of this course, students will be able to:

  • Use software to perform basic image manipulations including resizing, color adjustment, and positioning to create images suitable for use in a group animation. [REASON]
  • 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]
  • Write a computer program that displays animated images on the screen. [REASON]
  • Include meaningful sounds and music within an animated program. [COMMUNICATE]
  • Work as an effective team member to accomplish common animation project goals in a timely fashion. [COMMUNICATE]
  • Make an oral and visual presentation to a the class, summarizing their final project results. [COMMUNICATE]

  • CS 102: Introduction to Computer Animation: Lab

    Credits: 0.0

    This is the lab for CS 102.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 115: Introduction to Programming

    Credits: 5.0

    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. Prerequisite(s): MATH 090 or MATH 095 or CIS 114 with a grade of 2.0 or higher, or placement above MATH 095 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 115: Introduction to Programming: Lab

    Credits: 0.0

    This is the lab for CS 115.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 125: Linux and UNIX I

    Credits: 5.0

    First of a two-quarter survey of Linux/UNIX operations. Topics include base Linux commands; combining commands to create utilities; managing files, software and processes; creating partitions and Logical Volumes; editing text; managing users and groups; extended attributes and basic networking. Prerequisite(s): Some computer experience highly recommended.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Install and manage OS configuration settings on current Linux operating systems. [REASON]
  • Parse system logs for any relevant data and present it in a readable fashion. [REASON]
  • Manage local and networked files using Linux command line tools. [REASON]
  • Handle backing up files to compressed archives using tar and various compression algorithms. [REASON]
  • Create dynamically resizable disk volumes and optimize filesystem formatting. [REASON]
  • Manage users and permissions using groups and inheritable access control lists. [REASON]
  • Describe the pros and cons of various open source licenses. [COMMUNICATE]
  • Identify best use cases for Linux and other types of open source software. [COMMUNICATE]

  • CS 125: Linux/UNIX I: Lab

    Credits: 0.0

    This is the lab for CS 125.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 126: Linux and UNIX II

    Credits: 5.0

    Second of a two-quarter survey of Linux/UNIX operations. Topics include Boot process, process management, RPM, creating/optimizing RAID, encryption, managing user access, configuring dynamic/static networks, Bash scripting, Apache secure virtual hosts, Samba/NFS, Postfix mail server, SSH and NX. Prerequisite(s): CS 125 with a 2.5 or higher GPA or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Restrict user logins based on location, time of day, and other criteria. [REASON]
  • Create software packages from source and manage remote package repositories. [REASON]
  • Create and optimize advanced disk systems, including disk encryption. [REASON]
  • Configure Linux networking configuration using Bash shell scripts. [REASON]
  • Configure Web, dns, mail, and file servers securely. [REASON]
  • Manage secure remote graphical and cli logins. [REASON]
  • Explain various server configuration strategies to management personnel. [COMMUNICATE]

  • CS 126: Linux and Unix II: Lab

    Credits: 0.0

    This is the lab for CS 126.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS& 131: Computer Science I C++

    Credits: 5.0

    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. Prerequisite(s): CS 115 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Display a knowledge of the basic syntax and constructs of the 'C' programming language. [REASON]
  • Specify, design, code and debug programs which solve common scientific, technical and business problems. [REASON]
  • Perform necessary tasks using various programming tools such as an editor, compiler, debugger and profiler. [REASON]
  • Display an ability to use the concepts of procedural and functional abstraction to organize a program. [REASON]
  • Test a 'C' program for correctness and usability. [REASON]
  • Properly document code in a prescribed standard format. [COMMUNICATE]

  • CS& 131: Computer Science I C++: Lab

    Credits: 0.0

    This is the lab for CS 131.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 132: Computer Science II C++

    Credits: 5.0

    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. Prerequisite(s): CS& 131 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 132: Computer Science II C++: Lab

    Credits: 0.0

    This is the lab for CS 132.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 133: Computer Science III C++

    Credits: 5.0

    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. Prerequisite(s): CS 132 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 133: Computer Science III C++: Lab

    Credits: 0.0

    This is the lab for CS 133.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 135: C and C++ Review I

    Credits: 5.0

    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. Prerequisite(s): Previous programming experience in C, C? or Java or department permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • 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]
  • 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]
  • Design and write applications in C++ which demonstrate a mastery of data representation and abstraction using primitive types, arrays, structs, and pointers. [REASON]
  • Apply object oriented techniques to identify objects in a problem domain and code classes to represent those objects. [REASON]
  • Apply basic concepts of inheritance to create an application class which uses an inheritance hierarchy and polymorphic behavior to solve a problem. [REASON
  • Describe the basic characteristics of object oriented design and programming, and the advantages of employing object oriented techniques. [COMMUNICATE]
  • 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

    Credits: 5.0

    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. Prerequisite(s): Successful completion of CS 135 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Design and write small application programs in C++ that demonstrate a mastery of the basic template and exception handling constructs of the language. [REASON]
  • Write small programs which demonstrate use of low-level bitwise operations. [REASON]
  • Design and write applications that use the Standard Template Library to solve problems involving complex data structures and algorithms. [REASON]
  • Describe the fundamental graphics and input programming interface of the Windows operating system, including the message loop and callback mechanisms. [REASON]
  • Write a C++ program that utilizes the Windows programming interface to present a typical program interface including menus, dialog boxes, and buttons. [REASON]
  • Write a C++ program that utilizes the Windows graphics and mouse libraries to create an interactive 2D animation. [REASON]
  • 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]
  • Locate and use printed and online documentation to solve programming problems. [REASON]
  • Describe applications which will benefit from low-level bitwise operation. [COMMUNICATE]

  • CS& 141: Computer Science I Java

    Credits: 5.0

    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. Prerequisite(s): CS 115 or equivalent with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS& 141: Computer Science I Java: Lab

    Credits: 0.0

    This is the lab for CS 141.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 142: Computer Science II Java

    Credits: 5.0

    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. Prerequisite(s): CS& 141 or equivalent with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 142: Computer Science II Java: Lab

    Credits: 0.0

    This is the lab for CS 142.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 143: Computer Science III Java

    Credits: 5.0

    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. Prerequisite(s): CS 142 or equivalent with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 143: Computer Science III Java:LAB

    Credits: 0.0

    This is the lab for CS 143. Prerequisite(s): The objectives for Computer Science III Java Lab are covered in the lecture section.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 161: Introduction to Computer Game Development

    Credits: 5.0

    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. S/U grade option. Prerequisite(s): One programming course with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Categorize games according to common game genres. [REASON]
  • Describe diverse game components. [REASON]
  • Enumerate the general computer game platforms and the strength and weaknesses of each. [REASON]
  • Describe the game development process. [REASON]
  • Prepare a design document for a simple game. [REASON]
  • 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]
  • 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]
  • Independently research an aspect of computer game development. [REASON]
  • Describe general characteristics common to all games. [COMMUNICATE]
  • Complete a project as part of a team or group programming effort. [COMMUNICATE]
  • Present a reasoned opinion on a current social controversy involving the nature of computer games. [EXPLORE]

  • CS 161: Computer Game Development I: Lab

    Credits: 0.0

    This is the lab for CS 161.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 162: Graphics and Game Programming I

    Credits: 5.0

    Introduction to the Microsoft DirectX game and graphics libraries and their use in the development of Windows based games, animation, and other graphics applications. Prerequisite(s): CS 161 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 162: Graphics Program I: Lab

    Credits: 0.0

    This is the lab for CS 162.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 163: Graphics and Game Programming II

    Credits: 5.0

    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. Prerequisite(s): CS 162 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 163: Graphics Program II: Lab

    Credits: 0.0

    This is the lab for CS 163.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 170: Game Mathematics I

    Credits: 5.0

    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. Prerequisite(s): College algebra or department permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 172: Game Mathematics II

    Credits: 5.0

    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. Prerequisite(s): CS 170 with a grade of at least 2.5 or department permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Define a vector and describe and utilize common vector operations including addition, subtraction, and dot products. [REASON]
  • Define a matrix and common matrix properties and operations including the identity and transpose matrix determinant, matrix addition, subtraction, and multiplication. [REASON]
  • Solve systems of linear equations using matrix operations and gaussian elimination. [REASON]
  • Interpret common vector operations from both an analytic and geometric viewpoint. [REASON]
  • Define a linear transformation recognize linear transformations from both algebraic and geometric representations. [COMMUNICATE]
  • Write common transformation matrices used in game programming, including scaling, skewing, translation, rotation, and projection matrices. [REASON]
  • Define imaginary and complex numbers and their common properties and operations such as power, multiplication, division, addition, subtraction, conjugate, and magnitude. [REASON]
  • Define hypercomplex numbers and quaternions, and describe how they and their common operations represent a generalization of complex numbers. [COMMUNICATE]
  • 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]
  • Apply the principles of game mathematics to represent scene generation in a 3D game including motion, lighting and texturing. [REASON]
  • 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

    Credits: 5.0

    Techniques and tools used to create nongraphic game components such as joystick I/O, sound, video, networking, and artificial intelligence. Students integrate these components into a 2D game project. Prerequisite(s): CS 161 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 185: 2D Game Project: Lab

    Credits: 0.0

    This is the lab for CS 185.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 194: Three-Dimensional Graphics Animation

    Credits: 5.0

    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. Prerequisite(s): A working familiarity with computers is recommended.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Apply common modeling techniques such as extrusion, revolution, deformation, and fractal generation to create simple volumetric objects. [REASON]
  • 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]
  • Describe orthographic and perspective/camera views, and demonstrate an understanding by navigating and manipulating objects in these views using 3D animation software. [COMMUNICATE]
  • Describe how multiple world objects can be represented as a hierarchy, and animate multiple objects using this knowledge and 3D animation software. [COMMUNICATE]
  • Apply common modeling techniques such as extrusion, revolution, deformation, and fractal generation to create simple volumetric objects. [REASON]
  • Use various techniques to generate and apply surface textures to 3D objects. [REASON]
  • Use key frame and function curve animation techniques to animate a 3D object. [REASON]
  • Render, shade and optimize a scene. [REASON]
  • Create and complete final editing for a movie file. [REASON]
  • Set various camera views and scene light sources and be able to render the final scene using a commercial 3D graphics program. [REASON]

  • CS 194: 3D Graphics Animation: Lab

    Credits: 0.0

    This is the lab for CS 194.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 195: Three-Dimensional Computer Animation II

    Credits: 5.0

    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. Prerequisite(s): CS 194 with a grade of 2.5 or better, or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 195: 3D Computer Animation II

    Credits: 0.0

    This is the lab for CS 195.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 199: Special Projects

    Credits: 5.0

    Special study to be arranged by student and supervising instructor. S/U grade option. Credit available with approval. For information contact the division secretary in Alderwood Hall 218A or phone 425.640.1679.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 210: Game Physics

    Credits: 5.0

    Application of the laws of physics to the creation of computer games with physics-based realism. Prerequisite(s): MATH& 142, CS 132, and college level Physics, each with a grade of at least 2.5, or equivalent experience.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 215: Intermediate Visual Basic .NET

    Credits: 5.0

    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. Prerequisite(s): CS 115 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 215: Intermediate Visual Basic .NET: Lab

    Credits: 0.0

    This is the lab for CS 215.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 216: Advanced Visual Basic .NET Programming

    Credits: 5.0

    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. Prerequisite(s): CS 215 with a grade of at least 2.5 or permission of instructor.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 216: Advanced Visual Basic .NET Programming: Lab

    Credits: 0.0

    This is the lab for CS 216.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 217: Internet Programming with .NET

    Credits: 5.0

    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. Prerequisite(s): CS 115 with a grade of 2.5 or higher.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 217: Internet Programming with .NET: Lab

    Credits: 0.0

    This is the lab for CS 217.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 218: Introduction to C#

    Credits: 5.0

    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. Prerequisite(s): CS 115 or equivalent with a grade of 2.5 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 218: Introduction to C#: Lab

    Credits: 0.0

    This is the lab for CS 218.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 225: UNIX Shell Programming

    Credits: 5.0

    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. Prerequisite(s): CS 125 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 225: UNIX Shell Programming: Lab

    Credits: 0.0

    This is the lab for CS 225.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 226: Advanced UNIX: Perl

    Credits: 5.0

    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/ output, subroutines, Object-Oriented Perl, and Perl's relationship to other languages. Prerequisite(s): CS 125 or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Design and implement PERL programs for common system administration tasks. [REASON]
  • Utilize the UNIX-specific features of PERL. [REASON]

  • CS 226: Advanced UNIX:Perl: Lab

    Credits: 0.0

    This is the lab for CS 226.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 240: Android Applications

    Credits: 5.0

    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(s): CS& 141 with a grade of 2.5 or higher or instructor permission

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 240: Android Applications: Lab

    Credits: 0.0

    This is the lab for CS 240.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 255: Special Topics

    Credits: Maximum of 5.0 possible

    Current topics of interest to students of computer science. Topics will change from offering to offering. Prerequisite(s): A minimum of four computing related courses.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Understand basic principles involved in the topic of consideration. [REASON]
  • Implement a small program or system that makes use of principles involved in the topic. [REASON]

  • CS 255: Special Topics: Lab

    Credits: 0.0

    This is the lab for CS 255.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 262: Introduction to Three-Dimensional Graphics Programming

    Credits: 5.0

    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. Prerequisite(s): CS 185 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Describe how positions are represented in 3D Cartesian and non-Cartesian coordinate systems. [COMMUNICATE]
  • 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]
  • Sketch representations of various 3D geometric objects as a series of polygonal surfaces or meshes. [REASON]
  • 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]
  • Describe how scaling, translation and rotation of a 3D cube can be represented by matrix operations. [COMMUNICATE]
  • 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]
  • Define world, view, projection, and clipping transformations and be able to express how such a series of transformations describe the rendering process. [COMMUNICATE ]
  • Describe various color models commonly encountered in 3D graphics applications and commonly used techniques for specifying animation sequences. [COMMUNICATE]
  • Describe the relationship of the Direct3D immediate and retained modes and the relative advantages and disadvantages of using each. [COMMUNICATE]
  • Write a program which initializes a Direct3D retained mode application and creates a 3D clipper and clip list. [REASON]
  • Write a program which creates a Direct3D retained mode device, mesh scene frame, cameral frame, and viewport. [REASON]

  • CS 262: Introduction to Graphics Programming I: Lab

    Credits: 0.0

    This is the lab for CS 262.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 271: Three-Dimensional Game Development I DirectX

    Credits: 5.0

    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. Prerequisite(s): CS 132 or CS 135 or department permission. CS 161 highly recommended.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Program a game scene with ambient, directional and spot lighting. [REASON]
  • Program a scene which includes a texture mapped solid figure. [REASON]
  • Program mipmapping algorithms to improve the visual detail of a solid textured figure as the figure is approached. [REASON]
  • Write programs utilizing full Direct3D tools and capabilities. [REASON]
  • Describe the overall architecture of DirectX including the relationship of hardware and software resources. [COMMUNICATE]
  • Describe various rendering device performance characteristics, and their advantages and disadvantages. [COMMUNICATE]
  • Describe the effects of memory placement choices on mesh load and rendering times. [COMMUNICATE]
  • Describe the process of applying texture maps to polygon, including various common texture addressing modes. [COMMUNICATE]
  • Describe how aliasing can cause texture artifacts, and how various filtering techniques can help eliminate the artifacts. [COMMUNICATE]
  • 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

    Credits: 5.0

    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. Prerequisite(s): CS 271 with a grade of at least 2.5 or department permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • 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]
  • Write code which will implement a particle system that produces a realistic smoke trail. [REASON]
  • Design and implement an octree spatial portioning algorithm and integrate it into a general collision detection system. [REASON]
  • Write a program which will allow a user to move a sphere through a game world with realistic collision behavior. [REASON]
  • Write code that implements an animated skeleton and mesh skin. [REASON]
  • Describe how fog is represented in a 3D game, and be able to write D3D code to add fog to a game scene. [COMMUNICATE]
  • 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]
  • Describe collision detection algorithms for common geometric forms, and how to integrate such algorithms into a general game engine. [COMMUNICATE]
  • 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

    Credits: 5.0

    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. Prerequisite(s): CS 272 with a grade of at least 2.5 or department permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Program matrix operations which transform 3D geometric coordinates to their final perspective screen view. [REASON]
  • Render a frame with ambient, directional and spot lighting. [REASON]
  • Apply knowledge of material surface properties to program light characteristics in a game scene. [REASON]
  • Render a frame which includes a texture mapped solid figure. [REASON]
  • Describe the overall architecture of the OpenGL API. [COMMUNICATE]
  • 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

    Credits: 10.0

    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. Prerequisite(s): CS 273 with a grade of at least 2.5 or equivalent experience.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Write code which will implement multiple texturing. [REASON]
  • Write code which will use environment mapping to implement chrome mapping and cartoon shading. [REASON]
  • Use hierarchical transformations to position objects relative to one another. [REASON]
  • Use vertex animation to display animated characters. [REASON]
  • Describe how hardware considerations affect graphics efficiency, and how various optimization processes can be used to overcome efficiency bottlenecks. [COMMUNICATE]
  • Describe the limits on texture resolution and be able to determine cases in which the limits become important. [COMMUNICATE]
  • Describe skinning and its relationship to other animation techniques. [COMMUNICATE]
  • Describe the uses of spatial partitioning and write code to implement spatial partition algorithms such as, quadtrees, octtrees, KD-trees, and BSP Trees. [COMMUNICATE]
  • Describe the difference between broad and narrow phase collision detection and write a program that implements both. [COMMUNICATE]
  • 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]
  • Describe common methods of determining potential visibility sets. [COMMUNICATE]
  • 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

    Credits: 5.0

    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. Prerequisite(s): CS 132 or CS 135 or department permission. CS 161 and CS 271 highly recommended.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Design and implement a program that utilizes Dijkstra's path finding algorithm to navigate arbitrary maps. [REASON]
  • Design and implement a program that utilizes the A* path finding algorithms. [REASON]
  • Discuss the history and evolution of path finding. [COMMUNICATE]
  • Describe basic path finding methodology. [COMMUNICATE]
  • Compare and contrast Dijkstra's and the A* path finding algorithms. [COMMUNICATE]
  • 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

    Credits: 5.0

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

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

  • Utilize 3D objects in 3D space. [REASON]
  • Incorporate Collision concepts in a 3D environment. [REASON]
  • Implement sound and music attributes. [REASON]
  • Develop and use Art assets. [REASON]
  • Present a design for a 3D game and answer questions about it. [COMMUNICATE]
  • Work cooperatively and efficiently in a team to complete a working 3D game. [COMMUNICATE]

  • CS 285: 3D Game Project: Lab

    Credits: 0.0

    This is the lab for CS 285.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 290: Introduction to Software Testing and Quality Assurance

    Credits: 5.0

    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. Prerequisite(s): CS 115 with a grade of 2.5 or higher or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 290: Software Testing I: Lab

    Credits: 0.0

    This is the lab for CS 290.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 293: Game Testing

    Credits: 5.0

    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. Prerequisite(s): CS 290 recommended or instructor permission.

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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

  • CS 293: Game Testing: Lab

    Credits: 0.0

    This is the lab for CS 293.

    Course Level Objectives

    The objectives for this lab are covered in the corresponding lecture.


    CS 299: Special Projects

    Credits: 5.0

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

    Course Level Objectives

    Upon successful completion of this course, students will be able to:

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