Visit the Computer Science department home page.
Chair: James Schwing
James Schwing, Parallel Algorithms, User Interface Design, Computer Graphics, Computer Aided Design
Grant Eastman, Systems Design and Analysis, Networking, Computer Architecture
Edward Gellenbeck, User Interface Design, Web Development
Boris Kovalerchuk, Artificial Intelligence, Simulation and Optimization, Computer Architecture
Isabelle Bichindaritz, Artificial Intelligence, Knowledge Engineering, Case Based Reasoning, Medical Informatics
The Department of Computer Science offers a degree program leading to the Bachelor of Science in Computer Science. The Department of Computer Science also jointly offers a program with the Industrial Engineering Technology (IET) Department in the College of Education and Professional Studies in Computer engineering Technology. Information related to the Computer Engineering Technology program can be found in the IET section of the catalog.
The field of computer science can trace its beginnings and much of its foundation to both mathematics and engineering. Because of this, studies in computer science range from theory through experimental techniques to engineering methodology. The purpose of the computer science curriculum is to expose students to aspects of each of these disciplines and foster an appreciation and understanding of. To accomplish this, students are exposed to the broad theoretical basis of computer science as well as a strong laboratory component. The laboratory experience is more than simple programming. Rather, it is through the laboratories that students are introduced to both the experimental and the design aspects of computer science.
Using the philosophy as a base, the Computer Science Department has designed a curricular model that seeks to increase relevance to the real world. In particular, the senior project, a capstone course series - CS 480 & 481 - adopts a theme that expands upon the experimental and design approach of typical computer science curricula. This capstone series address the creativity and productivity elements required for business and industry applications today. Students become engaged in projects that investigate each stage of transforming a creative idea into a productivity enhancing system in a realistic context.
Standards for Admission
Admission to the Computer Science major or minor is selective. A cumulative grade point average of 2.50 is required in the Pre-Admission requirements listed below. Students should submit their application during the quarter in which they are completing the Pre-Admission requirements. Applications will be accepted through the last day of classes (i.e., the week before finals) of the Fall, Winter, and Spring quarters for admission the following quarter. A completed application must include the standard major application form and an advisor approved graduation plan.
Students must be accepted as a Computer Science major or minor prior to enrolling in computer science classes beyond CS 301 with the exception of CS 311. Students applying for admission to the major may register for courses for the following quarter but will be dropped if not admitted.
Students should request admission to the Computer Science Pre-Major prior to completion of the Pre-Admission requirements.
The Computer Science Department believes that advising is one of the keys to success in an undergraduate program. To that end, majors and minors are required to meet with a faculty advisor every tem in order to register. Pre-majors are also encouraged to meet with their designated faculty advisor each term. Advisors and advising times are listed with the Computer Science office.
General University Requirements Credits ENG 101, English Composition I 4 ENG 102, English Composition II 4 Major Requirements CS 110, Program Fundamentals I 4 CS 111, Program Fundamentals II 4 CS 301, Data Structures 4 MATH 172.1, Calculus 5 Pre-admission Total 25
In order to expose computer science majors to a broad theoretical base while emphasizing the laboratory experience, students will complete the CS Core courses. to add depth and flexibility to their academic programs, student will work out a focus area with a major advisor. A specific focus may be developed in many areas of computer science, examples include: artificial intelligence, computer systems, information systems, scientific computing, and software engineering. A table of possible sequences of focus area electives follow the core requirements.
CS Requirements Credits
Pre-Admission Major Requirements 17
CS 112, Foundations of Computer Science 4
CS 302, Advanced Data Structures 4
CS 311, Computer Architecture I 4
CS 312, Computer Architecture II 4
CS 325, Technical Writing in Computer Science 3
CS 361, Principles of Programming Languages I 4
CS 362, Principles of programming Languages II 4
CS 392, Lab Experience in Teaching
in Computer Science 1
CS 420, Database Management Systems 4
CS 427, Algorithm Analysis 4
CS 446, User Interface Design 4
CS 470, Operating Systems 4
CS 480, Software Engineering 4
CS 481, Software Engineering Project 2
CS 489, Senior Colloquium 1
CS 492, Lab Experience in Teaching
in Computer Science 2
MATH260, Sets and Logic 5
MATH330, Discrete Mathematics 5
Focus Area Electives 24
Focus Area Electives List
Students may use additional courses as their focus area electives with the approval of their major advisor.
CS 350, Web Development Technology
CS 410, Formal Language Theory
CS 418, Microprocessor Systems
CS 435, Simulation
CS 440, Computer Graphics
CS 450, Computer Network and Data Communication
CS 455, Artificial Intelligence
CS 456, Data Mining
CS 458, Artificial Intelligence Project
CS 460, Optimization
CS 465, Compiler Design
CS 473, Parallel Computing
CS 490, Cooperative Education (Maximum 4 credits)
CS 496, Individual Study
EET 221, Basic Electricity
EET 2211, Basic Electricity Laboratory
EET 312, Basic Electronics
EET 371, Digital Circuits
EET 375, Microprocessor Applications
MATH courses at or above the level of 1722
ACCT 215, 252, Accounting I and II
ECON 201, Principles of Macro Economics
OMIS 221, Business Statistics
OMIS 386, Management Information Systems
Possible Focus Area Sequences
The table below summarizes typical focused sequences taken by students.
AI - Artificial Intelligence
Sys - Computer Systems
IS - Information Systems
Sci - Scientific Computing
SW - Software Design and Engineering
Computer Science Minor Programs
The Department of Computer Science has designed two minor programs to meet the varying needs of undergraduate students.
Computer Science Minor
This minor is designed for students who wish to investigate the basic core of the computer science discipline. This minor is appropriate for any student including those in teacher education seeking to enhance their technical computer science background
Required Courses Credits CS 110, Programming Fundamentals I 4 CS 111, Programming Fundamentals II 4 CS 301, Elementary Data Structures 4 CS 311, Assembly Language Programming 4 MATH 130.1, Finite Mathematics 5 MATH 163.2, Pre-Calculus Mathematics II 5 MATH 260, Sets and Logic 5 Total 31
Applied Computer Science Minor
Students also taking the Personal Computing Minor offered through ITAM will not be allowed to double count courses for these minors.
Required Courses Credits CS 110, Programming Fundamentals I 4 CS 111, Programming Fundamentals II 4 CS 301, Elementary Data Structures 4 MATH 130.1, Finite Mathematics 5 MATH 163.2, Pre-Calculus Mathematics II 5 or OMIS 221, Introductory Business Statistics (5) Electives 12-14 At least one course will be in computer science. The other electives will be computer related and may be selected from the student's major with the approval of an advisor. Total 34-36
CS 101. Computer Basics (4). Prerequisite, high school or college algebra. Literacy course; basic computer structure; introduction to word processing, spreadsheet and database programs; introduction to the Internet.
CS 105. The Logical Basis of Computing (4). Problem solving; algorithm development; complexity; computability. Representation of algorithms as computer programs; data; decision and control; inherent sources of error.
CS 110. Programming Fundamentals I (4). Fundamental concepts of programming from an object-oriented perspective. Classes, objectives and methods, algorithm development, program solving techniques, basic control structures, primitive types and arrays.
CS 111. Programming Fundamentals II (4). Prerequisites, CS 110, MATH 163.1. Continuation of object-oriented programming concepts introduced in CS 110. Inheritance, exceptions, graphical user interfaces, recursion, and data structures.
CS 112. Foundations of Computer Science (4). Overview of the computer science profession including basic computer organization, algorithm development and analysis, computer data representation, computer applications and social issues..
CS 157. Introduction to COBOL Programming (4). Prerequisite, CS 101 or equivalent. An introduction to the COBOL programming language. Business algorithms are developed and translated into common business oriented language programs.
CS 167. Visual Basic Programming (4). Prerequisites, MATH 130.1 or 163.1, CS 101, AMBE 101 or equivalent. An introduction to Visual Basic programming. Topics will include problem solving, algorithm development, syntax and semantics of Visual Basic, and program debugging. Not intended for CS majors.
CS 177. Introduction to FORTRAN Programming (4). Prerequisites, MATH 163.1 or equivalents. Mathematical and logical algorithms are translated into FORTRAN programs.
CS 187. Introduction to C++ Programming (4). Prerequisite, MATH 130.1 or MATH 163.1 or equivalent. Mathematical and logical algorithms are translated into C++ programs.
CS 201. Technology and Society (3). The computer impact, how computers work, applications in business, government, human affairs, control of computer systems. A general survey course.
CS 284. Computer Terminal Equipment Use at CWU (1). Corequisite for courses in departments requiring use of the computer at CWU.
CS 290. Cooperative Education (1-5). An individualized contracted field experience with business, industry, government, or social service agencies. This contractual arrangement involves a student learning plan, cooperating employer supervision, and faculty coordination. Prior approval required. May be repeated. Grade will be S or U.
CS 298. Special Topics (1-6).
CS 301. Data Structures (4). Prerequisites, CS 111, MATH 163.2. Introduction to data structures, simple list processing, basic searching and sorting techniques, stacks, queues and trees. Formerly CS 265. Students may not receive credit for both.
CS 302. Advanced Data Structures and File Processing (4). Prerequisite, CS 301, and MATH 172.1. Sequential, random access and indexed file organizations; B-trees; external searching and sorting; I/O buffering. Formerly CS 340. Students may not receive credit for both.
CS 305. Programming Language Survey (3). Prerequisite, CS 301. One or more sections offered each quarter, each of which features a programming language of interest for historical, functional, or theoretical reasons. Languages offered will include: A. "FORTRAN", B. "C++", C.. "COBOL", D. "MODULA-2", E. "ADA", F. "LISP", G. "SNOBOL", H. "ALGOL", I. "APL", J. "PROLOG", K. "PASCAL", L. "ICON", M. "SMALLTALK", N. "JAVA". Formerly CS 274. Students may not receive credit for both. May be repeated for credit under different topic.
CS 311. Computer Architecture I (4). Prerequisite, CS 112. Basic computer organization, data representations, assembly language, addressing techniques.
CS 312. Computer Architecture II (4). Prerequisite, CS 301 and CS 311. Introduction to the structure of computers. Digital circuits, central processing units, memory, input/output processing, parallel architectures. Formerly CS 383. Students may not receive credit for both.
CS 325. Technical Writing in Computer Science (3). Prerequisites, ENG 102, CS 301. Writing and editing technical material in computer science.
CS 333. Computer Science Topics for Educators (4). Prerequisite, CS 111. Use and analysis of various applications and utility software packages. Recommended for the prospective teacher.
CS 334. Computer Languages for Educators (4). Prerequisite, CS 111. Introduction to and comparison of computer languages appropriate for use by educators. Recommended for the prospective teacher.
CS 350. Web Development Technology (4). Prerequisites, CS 301, and CS 325. Techniques for World Wide Web software development including XHTML, style sheets, scripting languages, Web databases, XML, and ethical issues related to the Web.
CS 361. Principles of Language Design I (4). Prerequisites, 302. Topics will include evolution of programming languages, syntax and semantics, bindings, scoping, data types, assignment, control, and subprograms.
CS 362. Principles of Language Design II (4). Prerequisites, CS 361 and MATH 260 (can be taken concurrently). Topics will include abstract data types, parallel processing, object-oriented programming, exception handling functional programming, and logic programming.
CS 367. Advanced Visual Basic Programming (4). Prerequisite, CS 167 or equivalent. Visual Basic programming and applications. Topics will include advanced data structures, error trapping and debugging, advanced VB and ActiveX controls, macros and databases. Not intended for CS majors.
CS 392. Lab Experience in Teaching Computer Science (1). Prerequisite, CS 301 and permission of department. Supervised experience in developing procedures and techniques in teaching computer science. Grade will be S or U.
CS 401. Computer Architecture for Educators (3). Prerequisite, Computer Literacy. Computer Architecture for Educators is designed to acquiant the educator with the hardware aspects of technology, particularly hardware related to activities using technology to enhance learning.
CS 410. Formal Language Theory (4). Prerequisites, CS 325, MATH 230. Language classes: regular, context-free, recursive; language acceptors; finite automata, push-down automata, Turing machines. Four hours lecture per week.
CS 418. Microprocessor Systems (4). Prerequisites, CS 311, CS 325, and either CS 312 or EET 372. Microcomputer systems; peripheral interfacing; interrupt handling; I/O; programming techniques.
CS 420. Database Management Systems (4). Prerequisites, CS 302, CS 325, and MATH 330. Logical aspects of database processing; concepts of organizing data into integrated databases; hierarchical, network, and relational approaches.
CS 427. Algorithm Analysis (4). Prerequisites, CS 302, CS 325, and MATH 330 (minimum grade C). Topics will include basic algorithmic analysis, algorithmic strategies, fundamental computing algorithms, basic computability, the complexity classes P and NP, and advanced algorithmic analysis.
CS 435. Simulation (4). Prerequisites, CS 325, MATH 330 and MATH 311 (may be taken concurrently) and CS 302. Principles of computer simulation; applications of several simulation languages to continuous and discrete systems.
CS 440. Computer Graphics (4). Prerequisites, CS 302 and CS 325. Graphic I/O devices; 2-dimensional and 3-dimensional display techniques; display processors; clipping and windowing; hidden line removal; data structures for graphics.
CS 446. User Interface Design and Development (4). Prerequisites, CS 301, CS 325, and MATH 311 or OMIS 221. The relationship of user interface design to human-computer interaction. Types of user interfaces, methods of evaluation, user centered design and task analysis, programming tools and environments, and hardware devices.
CS 450. Computer Network and Data Communication (4). Prerequisites, CS 301, CS 311, and CS 325. Device protocols; network configurations; encryption; data compression and security; satellite networks.
CS 455. Artificial Intelligence (4). Prerequisites, CS 302, CS 325, CS 362 and MATH 330. Introduction to the principles of artificial intelligence. Pattern matching, knowledge representation, natural language processing, expert systems.
CS 456. Data Mining (4). Prerequisites, CS 420 or permission of instructor and MATH 311 or OMIS 221. Data mining methods for discovering hidden patterns in large databases and data warehouses with applications in business, science, and engineering.
CS 458. Artificial Intelligence Project (2). Prerequisite, CS 325 and CS 455. Implementation of a significant project relating to artificial intelligence.
CS 460. Optimization (4). Prerequisites, CS 325, CS 427, MATH 265 and MATH 311. Linear programming; game theory; PERT; network analysis; duality theory; and sensitivity analysis.
CS 462. Computer Methods for Social Sciences (4). Prerequisite, at least one course in statistics. Assumes no prior computer experience. How to produce descriptive and inferential statistics and simple graphs using Minitab and SPSS-X. Also listed as PSY 462. Students may not receive credit for both.
CS 465. Compiler Design (4). Prerequisites, CS 325 and CS 362. Theory of compiler construction and computer language design; students write a compiler.
CS 470. Operating Systems (4). Prerequisites, CS 302, CS 312, CS 325. Topics will include principles of operating systems, concurrency, scheduling and dispatch, memory management, processes and threads, device management, security and protection, and file systems.
CS 473. Parallel Computing (4). Prerequisites, CS 325 and CS 470. Major parallel architectures and languages. Parallel programming methodologies and applications.
CS 480. Software Engineering (4). Prerequisites, CS 325, CS 420, and senior standing. The software development process: user requirements, specifications, design, coding, testing, maintenance, documentation and management; students work in teams to develop large software projects.
CS 481. Software Engineering Project (2). Prerequisites, CS 325, CS 480. Continuation of coding, testing, and implementation phases of project begun in CS 480.
CS 489. Senior Colloquium (1). Prerequisites, CS 325 and Senior class standing. Introduction to research in Computer Science through investigation of ethical and historical topics in the field. End of major assessment activities.
CS 490. Cooperative Education (1-12). An individualized contracted field experience with business, industry, government, or social service agencies. This contractual arrangement involves a student learning plan, cooperating employer supervision, and faculty coordination. Prior approval required. May be repeated. Grade will be S or U.
CS 491. Workshop (1-6). The title of the workshop and the credits shall be determined at the time the workshop is approved. Designed to give an opportunity for individual and group study of special areas of computer applications. With the approval of Department Chair, course may be designed for regular letter grade or S or U, depending upon course objectives and methods of instruction.
CS 492. Laboratory Experience in Teaching (1-2). Prerequisites, CS 302, CS 392, and permission. Supervised progressive experience in developing procedures and technique in teaching computer science. May be repeated to a maximum of 15 credits. Grade will be S or U.
CS 493. Practicum (1-5). Prerequisites, 15 credits in CS and permission. Supervised progressive experience in management, operation, programming or systems work in one of the university's computing centers.
CS 496. Individual Study (1-6). Prerequisite, permission of instructor.
CS 498. Special Topics (1-6).
CS 499. Seminar (1-5).
The following programs/courses are on reserve and may be offered subject to program needs: CS 305A, CS 305 D-L. Programming Language (3).