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

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

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 097 or ETEC 150 with a minimum grade of 2.0 or placement above MATH 097 or instructor permission.

Course Level Objectives

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

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

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

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 grade of 2.5 or higher or instructor permission.

Course Level Objectives

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

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

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

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

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

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

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

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 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

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

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

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

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

Course Level Objectives

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

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

  1. Categorize games according to common game genres.
  2. Describe diverse game components.
  3. Enumerate the general computer game platforms and the strength and weaknesses of each.
  4. Describe the game development process.
  5. Prepare a design document for a simple game.
  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.
  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).
  8. Independently research an aspect of computer game development.
  9. Describe general characteristics common to all games.
  10. Complete a project as part of a team or group programming effort.
  11. Present a reasoned opinion on a current social controversy involving the nature of computer games.

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

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

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

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

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

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

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

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

CS 199: Special Projects in Computer Science

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

  1. Successfully complete a project related to the specified topic.

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 minimum grade of 2.5 or instructor permission.

Course Level Objectives

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

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 minimum grade of 2.5 or instructor permission.

Course Level Objectives

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

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

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

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 minimum grade of 2.5 or instructor permission.

Course Level Objectives

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

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

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

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

  1. Design and implement PERL programs for common system administration tasks.
  2. Utilize the UNIX-specific features of PERL.

CS 240: Android Applications

Credits: 5.0

An introduction to Android app development using Android's variation of the Java programming language. Students explore Android's software stack, the Android SDK, agile development principles, data storage options, and app usability issues by developing a working Android app. Prerequisite(s): CS& 141 with a minimum grade of 2.5 or instructor permission.

Course Level Objectives

  1. Develop and test multiple-activity applications within the Android environment.
  2. Design understandable and convenient user interfaces.
  3. Program common Android controls.
  4. Access core Android applications from within an app, including email, messaging, calendars, maps, browsers, contacts, and others.

CS 255: Special Topics: Computer Science

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 or instructor permission.

Course Level Objectives

  1. Understand basic principles involved in the topic of consideration.
  2. Implement a small program or system that makes use of principles involved in the topic.

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

  1. Utilize 3D objects in 3D space.
  2. Incorporate Collision concepts in a 3D environment.
  3. Implement sound and music attributes.
  4. Develop and use Art assets.
  5. Present a design for a 3D game and answer questions about it.
  6. Work cooperatively and efficiently in a team to complete a working 3D game.

CS 290: Intro 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 minimum grade of 2.5 or instructor permission.

Course Level Objectives

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

CS 299: Special Projects in Computer Science

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

  1. Successfully complete a project related to the specified topic.