
DEPARTMENT CHAIR
Demetrios Michalopoulos
VICE CHAIR
David Falconer
DEPARTMENT OFFICE
Computer Science 522
DEPARTMENT WEBSITE
http://www.fullerton.edu/ecs
PROGRAMS OFFERED
Bachelor of Science in Computer Science
Master of Science in Computer Science
Minor in Computer Science
Master of Science in Software Engineering
FACULTY
Susamma Barua, Ning Chen, James Choi, Hwang Chung, Bin Cong, Spiros Courellis, David Falconer, Allen Holliday, Floyd Holliday, Chang-Hyun Jo, Donna Kastner, Barbara Laguna, Demetrios Michalopoulos, Mariko Molodowitch, Tae Ryu, and Xiong Wang
INTRODUCTION
The undergraduate computer science program at Cal State Fullerton offers students a comprehensive foundation that will permit them to adapt to new technologies and new ideas. The program spans a wide range, from its theoretical and algorithmic foundations to cutting-edge developments in bioinformatics, communications systems, databases, robotics, intelligent systems, software engineering, and other exciting areas.
The program provides students with a comprehensive background to take on varied categories of work. They are offered the necessary theories, principles, and practices to design and implement software which permits them to take on challenging programming jobs. They have the opportunity to become well-equipped to devise new ways to use computers. The computer science areas of networking, database design, and human-computer-interfacing have enabled
the development of the Word Wide Web. Now, computer scientists working in research and development are striving to make robots practical aides which demonstrate some aspects of intelligence, are using databases to discover new knowledge, and are using computers to help map human DNA as well as the DNA of other animals. The theoretical background available in the program provides the background to help develop effective ways to solve computing problems. This background allows students to determine the best possible ways to store
information in databases, send data over networks, and display complex images.
The bachelor's program is accredited by the Computing Accreditation Commission (CAC) of the Accreditation Boards for Engineering and Technology (ABET).

MISSION
The mission of the Computer Science Department is to provide students with a strong fundamental knowledge of Computer Science and the practical skills to adapt as technology changes.
EDUCATIONAL OBJECTIVES
The Computer Science program is designed to provide the student with the foundations of the discipline as well as the opportunity for specialization. Six objectives are addressed:
- development of the ability to work effectively as an individual or as a team member to produce correct, efficient, well-organized and documented programs in a reasonable time
-
development of the ability to recognize problems that are amenable to computer solutions, and knowledge of the tools necessary for solving such problems
- development of the ability to assess the implications of work performed
-
development of an understanding of basic computer architecture and operations
-
preparation to pursue in-depth training in one or more application areas, or further education in computer science
-
development of the ability to communicate effectively


BACHELOR OF SCIENCE IN COMPUTER SCIENCE
The Computer Science curriculum is under revision; for current requirements, refer to the department website.
Each Computer Science major is required to complete a minimum of 130 units including
general education. The degree program assumes that the student has already obtained a working knowledge of at least one high-level programming language such as C++ and a working knowledge of personal computing fundamentals and applications, including word processing, spreadsheets, database systems, e-mail systems, and presentation graphics. Students without this knowledge may be required to take up to seven additional units of course work beyond those normally required by the major.
Courses taken toward the major or toward the requirements in related fields must be taken on a traditional (letter grade) basis, unless the course is offered only on a non-traditional (credit/no credit) basis, or if the course is passed by a challenge examination. Students must maintain at least a 2.0 grade point average in all college-level units attempted, in all units attempted at CSUF, and in all units attempted in the major. A maximum of 6 units in the range "D minus" (0.7) through "D plus" (1.3) can be counted towards the major, provided the courses are Technical Electives or Requirements in Related Fields, excluding the Mathematics requirement. A "C" average (2.0) and a grade of "C minus" (1.7) or better is required in all courses applied to the major.
Computer Science Placement Examination
Before entry into the first course required by the major (Computer Science 131), the student is required to take a placement examination or complete the required prerequisite courses offered by the department.
Computer Science Core (49 units)
Students must take and pass a Computer Science Department Programming Exam before taking upper-division Computer Science courses. The exam will be included in Computer Sci 301 Programming Lab Practicum (2 units).
Lower-Division Core (13 units)
Computer Sci 131 Data Structures Concepts (3)
Computer Sci 231 File System Concepts (3)
Computer Sci 240 Computer System Architecture I (3)
Computer Sci 241 Low-level Language Systems (3)
Computer Sci 253U Workshop in UNIX (1)
Upper-Division Core (24 units)
Computer Sci 301 Programming Lab Practicum (2)
Computer Sci 315 Social and Ethical Issues in Computing (1)
Computer Sci 321 High-Level Language Concepts (3)
Computer Sci 331 Data Structures and Algorithm Analysis (3)
Computer Sci 351 Operating Systems Concepts (3)
Computer Sci 375 Problem Solving Strategies (3)
Computer Sci 423 Language Processor Techniques (3)
Computer Sci 440 Computer System Architecture II (3)
Computer Sci 461 Software Engineering Techniques (3)
Technical Electives (12 units)
Each Computer Science major must take 12 units of technical electives which must be approved in advance by a departmental adviser. These electives must be selected from upper-division courses offered by the department or upper-division courses in numerical analysis. The electives shall constitute a coherent body of study consistent with the student's professional and educational objectives. No more than three (3) units of course work may be selected from Computer Science courses numbered 490 through 499.
Requirements in Related Fields (39 units)
Mathematics Requirement (18 units)
Mathematics 150A,B Calculus (4,4)
Mathematics 270A,B Mathematical Structures (3,3)
Mathematics 338 Statistics Applied to Natural Sciences (4)
Science Requirements (12 units)
Physical Science (8 units)
One of the following combinations:
Physics 225 Fundamental Physics: Mechanics (3)
Physics 225L Fundamental Physics: Laboratory (1)
Physics 226 Fundamental Physics: Electricity and Magnetism (3)
Physics 226L Fundamental Physics: Laboratory (1)
OR
Chemistry 120A General Chemistry (5)
Chemistry 125 General Chemistry for Engineers (3)
OR Geological Sci 101 Physical Geology (3)
Geological Sci 101L Physical Geology Laboratory (1)
Geological Sci 201 and 201L Earth History and Laboratory (4)
Biological Science (4 units)
Biology 101 Elements of Biology (3)
Biology 101L Elements of Biology Laboratory (1)
Undesignated Units (9 units)
These are to be taken in related fields and/or career support fields, with prior adviser approval.
Upper-Division Writing Requirement (3 units)
Computer Science 311, which meets the university requirements for an upper-division writing course, must be completed before the senior year. This course must be passed with a "C" (2.0) or better.
General Education (39 units)
Computer Science students must complete the university's 51-unit general education requirements. Twelve of these 51 units will be
completed in the major's "Requirements in Related Fields." For the remaining 39 units see the "General Education" section of this catalog.
Second Language Requirement
Since the Bachelor of Science in Computer Science is a high-unit program, majors are exempt from the Second Language Graduation Requirement.

MINOR IN COMPUTER SCIENCE
A Computer Science minor shall consist of 20 units of adviser-approved courses including Computer Science 121, 131, 253U, and 313. It shall include at least six units of upper-division courses (which may include 313) taken in residence. At least 12 units must be distinct and different from the units used to complete the requirements for
the major; at least six of these 12 units must be upper-division.
All prerequisites must be observed. 
MASTER OF SCIENCE IN COMPUTER SCIENCE
Admission to Graduate Standing: Conditionally Classified
A bachelor's degree from an accredited institution with a grade-point average of at least 2.5 in the last 60 semester units attempted is required. Any deficiencies must be made up and will require six or more units of adviser-approved course work with at least a 3.0 average in addition to those required for the degree.
Application Deadlines
The deadlines for completing online applications are March 1st for the fall semester and October 1st for the spring semester (see http://www.csumentor.edu). Mailed applications need to be postmarked by the same deadlines. However, deadlines may be changed based upon enrollment projections. Check out the university graduate studies website for current information at http://www.fullerton.edu/graduate.
Classified Graduate Standing
Achievement of this status requires the following:
1. Approval of a formal study plan (see description below) by the Computer Science Graduate Committee and the Associate Vice President, Academic Programs (or designee).
2. Satisfactory completion of no more than nine units on the study plan.
3. Satisfactory completion of the following courses or equivalents including prerequisites: Computer Science 231, 240, 241, 321, 331, 351, 375, 423, 431, and Mathematics 270A,B.
4. Competency in written communication in English must be demonstrated by a passing score on the California State University Examination in Writing Proficiency. The requirement must be satisfied before the student can be classified and before 500-level courses may be attempted. The student who fails to pass the EWP test may complete Computer Science 311 (Technical Writing for Computer Science) with a grade of "B minus" (2.7) or better as an alternative to the EWP requirement.
Talented professional computer scientists have traditionally come from a diversity of undergraduate preparations. The listed courses have been carefully selected to provide an adequate basis for graduate work while not unfairly precluding admission of persons without a bachelor's degree in computer science. It should be noted, however, that each of these courses has prerequisites and the student without preparation in a closely related degree may have considerable work to complete beyond the courses listed here. Reference should be made to the catalog descriptions for prerequisites of each course deficiency.
If you have not taken many of the undergraduate prerequisites, you can follow an accelerated path of preparation for your graduate courses. The following prerequisite courses are the "fast track" and do not grant units toward the degree.
Comp Sci 901 Programming Concepts and Fundamental Data Structures
Comp Sci 902 Computer Architectures and Low-Level Languages
Comp Sci 903 File Structures and Database Systems
Comp Sci 904 Advanced Algorithms and Data Structures
Comp Sci 905 Programming Languages and Compilers
Comp Sci 906 Operating Systems
These courses and their prerequisites constitute program prerequisites. Students are not allowed to enroll in courses for which they have prerequisite deficiencies. Students with knowledge equivalent to any or all of these prerequisite courses are encouraged to satisfy such prerequisites by advanced placement examinations. Consult a Computer Science graduate adviser for further information.
Study Plan
Prior to admission to classified graduate standing in Computer Science, the student with the aid of a Computer Science graduate adviser shall prepare and submit for approval by the Computer Science Department graduate committee a formal study plan consisting of a minimum of 30 units of 400 level and graduate course work.
This shall include Computer Science 440, 461, 589, 597 or 598; one of 541, 542, 543, 544, 545, 546, 547 or 548; and 15 units of electives (9 units must be at the 500 level). At least 15 units shall represent courses offered by the Department of Computer Science. Courses offered by other disciplines, not listed here, and related to the student's objectives in Computer Science may be approved by petition to the Department of Computer Science.
All course work in the study plan must be completed with a GPA of at least 3.0.
Graduate Student Advisement
The graduate program adviser provides overall supervision of the graduate program. The individual student chooses an adviser from the full-time faculty of the Computer Science Department on the basis of the student's particular interests and objectives. 
COMPUTER SCIENCE COURSES
Courses are designated as CPSC in the class schedule.
Prerequisites for Computer Science courses may be waived only by department petition.
| CPSC 102 Introduction to Information and Multimedia Technology | | Description: (Same as InfoSys/DecSci 102) | Units: (2)
| | CPSC 103 Introduction to Personal Computer Applications | | Description: Introduction to use and application of personal computers: word processing, spreadsheets, database systems, e-mail systems and World Wide Web. Evaluation of personal computers and software. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 121 Programming Concepts | | Description: Prerequisite: three years high school mathematics including trigonometry. Introduction to programming of digital computers; subroutines, functions, and structure of algorithms; elementary input/output; arrays; strings, and data types; documentation. (3 hours lecture, 2 hours laboratory) | Units: (4)
| | CPSC 131 Data Structures Concepts | | Description: Prerequisites: Computer Science 121 or sufficient score on the Computer Science Placement Exam, high school computer applications, and three years high school mathematics including trigonometry. Data structures: linked lists, stacks, queues, arrays, sequential text files, text formatting. | Units: (3)
| | CPSC 203 Advanced Personal Computing | | Description: Prerequisite: Computer Science 103. Computer networks. Work-group computing: electronic mail, scheduling, work-flow automation, central repositories. Desktop publishing. Vertical and horizontal software suites. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 223A Ada Programming | | Description: Prerequisite: Computer Science 241. Ada control statements, types, subprograms, array and record types, packages, exceptions, access variables, dynamic objects, files, generics, compilation units, tasking, and low-level programming. Laboratory programming assignments. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 223C COBOL Programming | | Description: Prerequisite: Computer Science 231. COBOL identification, environment, data and procedure divisions; moving data; printing information; arithmetic verbs; control statements; arrays and tables; sequential, relative, and indexed files; subprograms; report writer module. Laboratory programming assignments. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 223H Visual BASIC Programming | | Description: Prerequisite: Computer Science 231. Elements of Visual BASIC, forms and controls, properties, mouse events, multiple-document interface, processing files, accessing databases, dynamic data exchange, object linking and embedding. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 223J Java Programming | | Description: Prerequisite: Computer Science 223V or Computer Science 131 and proficiency in C++ language. Characteristics of Java: portable, robust, secure, object-oriented, high performance; using the Java environment; server administration; types, expressions, and control flow; classes, interfaces, and packages; threads; exceptions; class libraries; Java for the Internet; tools, the Java Virtual machine. (2 hours lecture, 2 hours lab per week) | Units: (3)
| | CPSC 223V C++ Programming | | Description: Prerequisite: programming concepts course using a language other than C++. C++ types, arithmetic, operators, control structures, assignment operators, functions, scope, recursion, logical operators, arrays, pointers, characters, strings, structures, unions, enumerations, classes, operator overloading, inheritance, virtual functions, polymorphism, stream input/output, templates, exception handling, file processing. Laboratory programming assignments. Credit earned not applicable toward a bachelor’s degree in computer science, except with adviser approval. | Units: (3)
| | CPSC 231 File System Concepts | | Description: Prerequisites: Computer Science 131 and proficiency in the C++ language. Characteristics and utilization of bulk storage devices. B-trees, sequential and random access methods. Introduction to relational data model. | Units: (3)
| | CPSC 240 Computer System Architecture I | | Description: Prerequisites: Computer Science 131 and either Mathematics 270A or Mathematics 280. Digital logic and architecture of a computer system, machine level representation of data, memory system organization, and techniques for interrupt handling. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 241 Low-level Language Systems | | Description: Prerequisite: Computer Science 131. Corequisite: Computer Science 240. The structure of low-level computer languages. Machine, assembly, and macro language programming. Principles of assembler operation. Laboratory programming assignments. (2 hours lecture, 2 hours laboratory) (Same as Electrical Engineering 241) | Units: (3)
| | CPSC 253U Workshop in UNIX | | Description: Prerequisite: Computer Science 121 or General Engineering 205. Workshop in the use of the UNIX operating system. Offered Credit/No Credit only. (2 hours activity) | Units: (1)
| | CPSC 301 Programming Lab Practicum | | Description: Prerequisites: Computer Science 231, 240, 241 and 253U. Intensive programming covering concepts learned in lower-division courses. Includes procedural and object oriented design, documentation, arrays, classes, file input/output, recursion, pointers, dynamic variables, data and file structures. | Units: (3)
| | CPSC 303 Multimedia Concepts | | Description: Prerequisites: Computer Science 103, 121 and completion of the General Education critical thinking requirements. Components and issues associated with multimedia technology, applications of multimedia and its evolution. Laboratory activities will include developing a multimedia application using a PC-based authoring tool. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 311 Technical Writing for Computer Science | | Description: Prerequisite: English 101. Corequisite: Computer Science 301. Practice in developing documentation skills as used in the computer field. Topics include proposals, feasibility studies, user guides and manuals, business communication and technical presentation. Case studies in professional ethics. Both written and oral reports are required. | Units: (3)
| | CPSC 313 The Computer Impact | | Description: Prerequisites: upper-division standing and one course from General Education Category III.A.1. Effect of computer use on individuals and organizations. Side effects of innovative technology and the resulting changes to organizations, social institutions, and human perceptions of events. Emphasis on personal responsibility, legal ramifications, and educational implications. Hands-on use of e-mail and the World Wide Web. | Units: (3)
| | CPSC 315 Social and Ethical Issues in Computing | | Description: Prerequisite: Computer Science 311. The course will cover relevant issues that responsible professionals will face in a complex technological society. Issues covered are professional ethics, computer control, piracy, encryption, benefits and downside of computers, privacy and computer crimes. Both written and oral reports required. | Units: (1)
| | CPSC 321 High-Level Language Concepts | | Description: Corequisite: Computer Science 301. Language definition concepts. Data types and structures. Control structures and data flow. Run-time considerations. Interpretive languages. Introduction to lexical analysis and parsing. | Units: (3)
| | CPSC 322L Introduction to Computer Aided Design | | Description: (Same as Mechanical Engineering 322L) | Units: (3)
| | CPSC 331 Data Structures and Algorithm Analysis | | Description: Prerequisites: Computer Science 301; Mathematics 150B and 270B. Corequisite: Mathematics 338. Advanced data structures: recursion, stack, trees, hashing, queues, sorting and searching, disjointed sets and graph algorithms. Emphasis on algorithm efficiency analysis. Quantitative experiments and written laboratory reports are required. | Units: (3)
| | CPSC 341 Client Server Systems | | Description: Prerequisites: Computer Science 231. A study of the client/server environment including platforms, operating systems, networks, middle- ware, distributed processing, data communication, optimization, client/ server model, and trends. Programming exercises in a language suitable for the client/server environment. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 351 Operating Systems Concepts | | Description: Corequisite: Computer Science 301. Resource management, memory organization, input/output, control process synchronization and other concepts as related to the objectives of multi-user operating systems. | Units: (3)
| | CPSC 361 Software Design Concepts | | Description: Prerequisites: Computer Science 223A, 223J or 223N; and 241. Concepts and methodologies of the object-oriented paradigm. Object-oriented analysis and object-oriented design. Implementation of moderate size object-oriented systems. Topics in embedded systems. (2 hours lecture, 2 hours laboratory) | Units: (3)
| | CPSC 375 Problem Solving Strategies | | Description: Prerequisites: Computer Science 321, 331 and Mathematics 338. Complexity classes, including undecidable and NP-complete problems. Problem solving strategies applied to parallel and distributed processing, numerical computation, and artificial intelligence. Greedy methods, divide-and-conquer, dynamic programming, approximation, and search methods. | Units: (3)
| | CPSC 423 Language Processor Techniques | | Description: Prerequisites: Computer Science 321 and 331. Concepts behind the design and implementation of programming language processors such as compilers and interpreters. The design of a small compiler from a software engineering perspective. | Units: (3)
| | CPSC 431 Database Systems | | Description: Prerequisites: Computer Science 231 and 331. Database design and applications, database programming using SQL and other languages, query optimization, transaction management. | Units: (3)
| | CPSC 433 Data Security and Encryption Techniques | | Description: Prerequisites: Computer Science 311, 351 and Mathematics 270B. System security and encryption. Current issues in security, encryption and privacy of computer based systems. | Units: (3)
| | CPSC 437 Web Programming and Data Management | | Description: Prerequisites: Computer Science 431. Various techniques for developing Web-based database applications using software engineering methodology. Introduce concept and architecture of Web servers, Web database design techniques, client/server side programming, and Web applications tools and techniques. | Units: (3)
| | CPSC 440 Computer System Architecture II | | Description: Prerequisites: Computer Science 240 and 241. Computer performance, price/performance, instruction set design and examples. Processor design, pipelining, memory hierarchy design, and input/output subsystems. | Units: (3)
| | CPSC 451 Advanced Operating Systems | | Description: Prerequisite: Computer Science 351. The course covers internal structures of a modern operating system. The specific topics include processes, process communication, file systems, networking, and the I/O system. There will be several programming assignments which will utilize calls and other low-level interfaces. | Units: (3)
| | CPSC 457 Computer Communications | | Description: Prerequisite: Computer Science 351. An introduction to digital data communications. Terminology, networks and their components, common-carrier services, telecommunication facilities, terminals, error control, multiplexing and concentration techniques. | Units: (3)
| | CPSC 459 Micro-Computer Software Systems | | Description: Prerequisite: Computer Science 351. The design and implementation of software. Analysis of a micro-computer operating system and work on a team to implement a significant programming assignment. | Units: (3)
| | CPSC 461 Software Engineering Techniques | | Description: Prerequisites: Computer Science 311, 321, 331 and passing score on the Examination in Writing Proficiency. Analysis, design and implementation of large scale software using classical and object oriented technologies. Students will work in team projects. Oral presentation and written project documentation are required. | Units: (3)
| | CPSC 465 Principles of Computer Graphics | | Description: Prerequisite: Computer Science 331. Examination and analysis of computer graphics; software structures, display processor organization, graphical input/output devices, display files. Algorithmic techniques for clipping, windowing, character generation and viewpoint transformation. | Units: (3)
| | CPSC 481 Artificial Intelligence | | Description: Prerequisite: Computer Science 375. Use of computers to simulate human intelligence. Topics include production systems, pattern recognition, problem solving, searching game trees, knowledge representation, and logical reasoning. Programming in AI environments. | Units: (3)
| | CPSC 483 Data Mining and Pattern Recognition | | Description: Prerequisites: Computer Science 331. Classification techniques, discriminant functions, training algorithms, potential function theory, supervised and unsupervised learning, feature selection, clustering techniques, multidimensional rotations and rank ordering relations. | Units: (3)
| | CPSC 491T Variable Topics in Computer Science | | Description: Prerequisites: junior or senior standing and consent of instructor. Lectures and/or workshop covering various current Computer Science topics. Course may be repeated for up to 3 units. Course topics may be taken only once. | Units: (1)
| | CPSC 495 Internship in Computer Science | | Description: Prerequisites: Computer Science or related major and consent of instructor. Practical experience relevant to computer science in government or private agencies. Written and oral reports are required. | Units: (1-3)
| | CPSC 499 Independent Study | | Description: Prerequisite: approval by the computer science chair. Special topic in Computer Science, selected in consultation with and completed under the supervision of instructor. | Units: (1-3)
| | CPSC 531 Advanced Database Management | | Description: Prerequisite: Computer Science 431. Implementation techniques for query analysis, data allocation, concurrency control, data structures, and distributed databases. New database models and recent developments in database technology. Student projects directed to specific design problems. | Units: (3)
| | CPSC 541 Systems and Software Standards and Requirements | | Description: Prerequisite: Computer Science 461 or equivalent work experience. This course introduces students to the SESC framework and the IEEE Software Engineering Standards. The course will cover establishing of the following standards: Software Life Cycle Processes, Work Product Standards, Process Standards, Requirement Analysis and Management, and System Integration. Additionally, the framework of CMMI will be introduced, and a number of practical lessons discussed. | Units: (3)
| | CPSC 542 Software Verification and Validation | | Description: Prerequisite: Computer Science 461 or equivalent work experience. Theory and practice needed to ensure that a high quality software product is developed. Topics covered include a quality assessment, proof of correctness, testing, and limitations of current verification and validation methods. | Units: (3)
| | CPSC 543 Software Maintenance | | Description: Prerequisite: Computer Science 461 or equivalent work experience. Software creation, reuse, enhancement, adaptation and correction. Alternatives to coding, language concepts, role of standards, style, management, tools, performance analysis, regression analysis, and productivity issues. | Units: (3)
| | CPSC 544 Software Process Definition | | Description: Prerequisite: Computer Science 461 or equivalent work experience. This course provides practical guidance for improving the software development and maintenance process with a focus on understanding and managing the software process. Students will learn how to establish an effective software process for an organization, and how to make existing process better. | Units: (3)
| | CPSC 545 Software Design and Architecture | | Description: Prerequisites: Computer Science 461 or equivalent work experience. Development of software systems at the highest level. Systems view of software development, trade-offs between software and hardware. User interfaces, requirements analysis, techniques for development from requirements, system integration, and transition into use. Includes case studies and project. | Units: (3)
| | CPSC 546 Software Project Management | | Description: Prerequisite: Computer Science 461 or equivalent work experience. Process considerations in software systems development. Materials and tools in software project planning. Mechanisms for monitoring and controlling software projects. | Units: (3)
| | CPSC 547 Software Measurement | | Description: Prerequisite: Computer Science 461 or equivalent work experience. Introduction to current industry software measurement practices and systematic measurement process models. Outline major paradigms for selecting measures. Stress practitioner-based measurement: software specifications and designs, code and implementation, and test and evaluation. | Units: (3)
| | CPSC 548 Professional, Ethical and Legal Issues for Software Engineers | | Description: Prerequisite: Computer Science 461 or equivalent work experience. This course explores professional, legal and ethical issues pertaining to software engineering. Topics include professional codes of ethics, intellectual property laws, computer privacy, and human-computer interaction. Relevant regulatory documents and their applications are studied. | Units: (3)
| | CPSC 551 Operating Systems Design | | Description: Prerequisite: Computer Science 351. Design and evaluation techniques for controlling automatic resource allocation, providing efficient programming environments and appropriate user access to the system, and sharing the problem solving facilities. | Units: (3)
| | CPSC 558 Advanced Computer Networking | | Description: Prerequisite: Computer Science 457. System-oriented view of computer network design, protocol implementation, networking, high-speed networking, network management, computer network performance issues. | Units: (3)
| | CPSC 566 Advanced Computer Graphics | | Description: Prerequisite: Computer Science 465. Three dimensional: reflection models, shading techniques, rendering process, parametic representation, ray tracing, radiosity, texture, anti-aliasing, animation, color science. | Units: (3)
| | CPSC 583 Expert Systems Design Theory | | Description: Prerequisite: Computer Science 481. Knowledge representation and search strategies for expert systems; logic programming; expert system tools. Project. | Units: (3)
| | CPSC 585 Artificial Neural Networks | | Description: Prerequisite: Computer Science 481. Principles of neural networks; neural networks paradigms, software implementations, applications, comparison with statistical methods, use of fuzzy logic; project. | Units: (3)
| | CPSC 589 Seminar in Computer Science | | Description: Prerequisites: one 400-level course in Computer Science and passing score on the Examination in Writing Proficiency. Research methods in computer science. Student presentations covering current topics, research advances, updating of concepts and verifications of principles of computer science. (Examples: large-scale parallelism, Internet security, design for user interfaces, computers in instruction). | Units: (3)
| | CPSC 597 Project | | Description: Prerequisites: classified graduate standing, approval of the computer science graduate adviser and Computer Science 589. | Units: (3)
| | CPSC 598 Thesis | | Description: Prerequisites: classified graduate standing, approval of the computer science graduate adviser and Computer Science 589. | Units: (3)
| | CPSC 599 Independent Graduate Research | | Description: Prerequisites: classified graduate standing, approval of the computer science department chair and Computer Science 589. Special topic in computer science, selected in consultation with and completed under supervision of a full-time faculty member. | Units: (1-3)
| | CPSC 901 Programming Concepts and Fundamental Data Structures | | Description: Prerequisite: three years high school math including trigonometry. Using C++, Abstract Data Type (ADT) including linked lists, stacks, queues, tables; Object Oriented Programming (OOP) including classes, operator overloading, inheritance, virtual functions, polymorphism, stream input/output, templates; basic file structures and file processing. Not applicable for graduate degree credit. | Units: (3)
| | CPSC 902 Computer Architectures and Low-Level Languages | | Description: Prerequisite: Mathematics 270A. Digital logic and computer system architecture, machine level representation of data, memory system organization, Input/Output (I/O) Subsystem, and techniques for interrupt handling; Low-level computer language programming; Machine, assembly, and macro languages including principles of assembler operations. Not applicable for graduate degree credit. | Units: (3)
| | CPSC 903 File Structure and Database Systems | | Description: Prerequisite: Computer Science 901 and 902. Fundamental concepts of file structures. Characteristics and utilization of bulk storage devices. Various indexing techniques (e.g., B-tree, Hashing, etc.) and search methods using C++. Fundamental concepts of database management systems. Database design and application development. SQL programming. Not applicable for graduate degree credit. | Units: (3)
| | CPSC 904 Advanced Algorithms and Data Structures | | Description: Prerequisites: Computer Science 903, Mathematics 150B, 270B and 338. Concepts of theoretical computer science at a more advanced level. Topics covered are efficiency, data structures, and algorithms. In particular, Strassen’s algorithm for matrix multiplication, various sorting algorithms, NP-completeness, and other topics important to algorithmic efficiency are discussed. A strong mathematical background is recommended. Not applicable for graduate degree credit. | Units: (3)
| | CPSC 905 Programming Languages and Compliers | | Description: Prerequisite: Computer Science 904. Language definitions, bindings, type checking, scopes, data types, control structures, subprograms. Design and implementation of programming language processors such as compliers and interpreters. Not applicable for graduate degree credit. | Units: (3)
| | CPSC 906 Operating Systems | | Description: Prerequisite: Computer Science 903. Intensive Training course covering concepts learned in Computer Science 253U and 351. Includes the principles of process management, memory management, file management, and I/O device management. Also includes Unix basic user commands, editors, Shell scripts, and programming environment. Not applicable for graduate degree credit. | Units: (3)
|

|