California State University, Fullerton College of Engineering and Computer Science

Course Descriptions

Prerequisites for computer science courses may be waived only by Department petition. Prerequisite courses must be passed with a grade of "C" or better.

layout image

Computer Science Courses

CPSC 121 Programming Concepts (4 units)
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)


CPSC 131 Data Structures Concepts (3 units)
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.


CPSC 231 File System Concepts (3 units)
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.


CPSC 240 Computer System Architecture I (3 units)
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).


CPSC 241 Low level Language Systems (3 units)

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


CPSC 253U Workshop in UNIX (1 unit)

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)


CPSC 311 Technical Writing for Computer Science (3 units)
Prerequisites: Computer Science 231, 241 and English 101.
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 required.


CPSC 321 High Level Language Concepts (3 units)
Prerequisites: Computer Science 231 and 241.
Language definition concepts. Data types and structures. Control structures and data flow. Run time considerations. Interpretive languages. Introduction to lexical analysis and parsing.


CPSC 331 Information Structure Concepts (3 units)
Prerequisites: Computer Science 231, 241, 253U, Mathematics 150B, 270B.
Corequisite: Mathematics 338.
Advanced data structures, sorting, searching, graph algorithms. Introduction to efficiency analysis. (2 hours lecture, 2 hours laboratory).


CPSC 351 Operating Systems Concepts (3 units)
Prerequisites: Computer Science 231, 240, 241, and 253U.
Resource management, memory organization, input/output, control process synchronization and other concepts as related to the objectives of multi user operating systems.


CPSC 375 Problem Solving Strategies (3 units)

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 intelligent. Greedy methods, divide and conquer, dynamic programming, approximation, and search methods.


CPSC 423 Language Processor Techniques (3 units)

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.


CPSC 431 Database Systems (3 units)
Prerequisites: Computer Science 231 and 331.
Database models: hierarchical, network, relational, functional, E R and object based. Distributed DBMS and concurrency control. Query optimization. (2 hours lecture, 2 hours laboratory).


CPSC 433 Data Security and Encryption Techniques (3 units)
Prerequisites: Computer Science 311, 351 and Mathematics 270B.
System security and encryption. Current issues in security, encryption and privacy of computer based systems.


CPSC 437 Web Database Development (3 units)
Prerequisite: 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 application tools and techniques.


CPSC 440 Computer System Architecture II (3 units)
Prerequisites: Computer Science 240 and 241.
Computer performance, price/performance, instruction set design and examples. Processor design, pipe lining, memory, hierarchy design, and input/output subsystems.


CPSC 451 Advanced Operating Systems (3 units)
Prerequisite: Computer Science 351.
The course covers internal structures of a modern operating system. The specific topics include: processing, process communication, file systems, networking, and the I/O subsystem. There will be several programming assignments which would utilize calls and other low level interfaces.


CPSC 457 Computer Communications (3 units)

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.


CPSC 459 Micro Computer Software Systems (3 units)
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.


CPSC 461 Software Engineering Techniques (3 units)

Prerequisites: Computer Science 311, 321, 331 and passing score on the (EWP) Examination in Writing Proficiency.
The design and development of large software systems. Organization and control of the system development process. Students will implement and discuss large-scale team projects. (2 hours lecture, 2 hours laboratory).


CPSC 465 Principles of Computer Graphics (3 units)
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.


CPSC 477 Cybernetics and Information Theory (3 units)
Prerequisites: Computer Science 331and Math 150B.
Formal theories underlying artificial intelligence. Cybernetics, information theory, decision models, Shannon's theorem, adaptive machines, search techniques, stochastic automata, time series analysis and reliability theory.


CPSC 481 Artificial Intelligence (3 units)
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.


CPSC 483 Pattern Recognition Techniques (3 units)
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.


CPSC 521 Compiler Design (3 units)
Prerequisite: Computer Science 423.
Corequisite: Computer Science 589.
Techniques for the design of compilers and their relations to formal automata and formal grammars, including finite state automata, push down automata, Turing machines, regular languages, and context free languages.


CPSC 531 Design of Database Management Systems (3 units)
Prerequisite: Computer Science 431.
Corequisite: Computer Science 589.
Database design and implementation techniques for query processing. Transaction management. Introduction to different databases such as object-oriented databases, temporal databases, real-time databases, parallel databases, distributed databases, spatial databases, multimedia databases, deductive databases, active databases plus recent database technology such as data warehousing, OLAP, Data mining.


CPSC 541 - Systems and Software Standards and Requirements (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
This class serves as the foundation for other process-oriented classes by outlining the benefits of Software Engineering Standards. The students will be introduced 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.

CPSC 542 - Software Verification and Validation (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
The students will learn how to ensure that a high quality software product is developed. The course will cover the theory and practice of V&V methods such as walkthroughs, inspections, and CleanRoom.† It will show how to create functional test cases, using boundary value analysis and equivalence classes, and how to create structural test cases, determine degrees of coverage, and perform data flow analysis.

CPSC 543 - Software Maintenance (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
The Student will learn the principles of generating maintainable software. The course will also cover Theory and practice of maintaining large scale software and application of maintenance metrics In this course, we will cover the problems in maintaining software systems, building software in view of the maintenance problems, the activity of maintenance and some management issues in maintenance.

CPSC 544 - Software Process Definition (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
This course provides practical guidance for improving the software development and maintenance process. We focus on understanding and managing the software process because this is where software organizations encounter the most serious problems. In the class, students will learn how to establish an effective software process for an organization, and how to make existing process better.

CPSC 545 - Software Design and Architecture (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
The students will learn how to analyze and design large scale software and apply different architecture styles to software design. Case studies and projects are assigned as a practical component of the course.

CPSC 546 - Software Project Management (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
The students will learn how to plan and control the development activities of a project. The course will cover schedule and cost (staffing) estimation. It will show how to develop a master program plan, define task interrelationships, identify the critical path, and track the progress of a project using methods such as Earned Value Analysis.

CPSC 547 - Software Measurement (3 units)
Prerequisite: CPSC 461 or equivalent work experience.
This course explores current software measurement practices. Topics include measuring software specifications and designs; measuring software code and implementation; measuring software testing and evaluation. The course stresses a practitioner-based approach to systematic measurement process model and outlines major paradigms for selecting measures.

CPSC 548 - Professional, Ethical and Legal Issues for Software Engineers (3 units)
Prerequisite: CPSC 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. The course presents relevant regulatory documents and their applications in analyzing case studies.


CPSC 551 Operating Systems Design (3 units)
Prerequisite: Computer Science 351.
Corequisite: Computer Science 589.
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.


CPSC 558 Advanced Computer Networking (3 units)
Prerequisite: Computer Science 457.
Corequisite: Computer Science 589.
System-oriented view of computer network design, protocol implementation, networking, high-speed networking, network management, computer network performance issues.


CPSC 566 Advanced Computer Graphics (3 units)

Prerequisite: Computer Science 465.
Corequisite: Computer Science 589.
Three dimensional reflective models, shading techniques, rendering process, parametric representation, ray tracing, radiosity, texture, anti aliasing, animation, color science.


CPSC 583 Expert Systems Design Theory (3 units)
Prerequisite: Computer Science 481.
Corequisite: Computer Science 589.
Knowledge representation and search strategies for expert systems; logic programming; expert system tools. Project.


CPSC 585 Artificial Neural Networks (3 units)

Prerequisite: Computer Science 481.
Corequisite: Computer Science 589.
Principles of neural networks, neural networks paradigms with supervised and unsupervised learning laws. Software implementations and applications. Project.


CPSC 589 Seminar in Computer Science (3 units)

Prerequisites: At least one 400 level course in computer science and the EWP (English Writing Proficiency Exam).
Research methods in computer science. Student presentations covering current topics in research, updating of concepts and verifications of principles of computer science. (Examples: graphic user interface design, database systems, computer networks, wireless communication, Web based application development, Web application framework, distributed systems, large-scale parallelism, security, modeling and analysis techniques, neural networks, expert systems, pattern recognition, Petri nets.)


CPSC 597 Project (3 units)
Prerequisites: classified graduate standing, approval of the computer science graduate adviser and

CPSC 589. (Project definition proposal must be approved prior to the last day of class instruction of the preceding semester.)


CPSC 598 Thesis (3 units)

Prerequisites: classified graduate standing, approval of the computer science graduate adviser and

CPSC 589. (Thesis definition proposal must be approved prior to the last day of class instruction of the preceding semester.)


CPSC 599 Independent Graduate Research (1-3 units)
Prerequisites: classified graduate standing, approval of the Computer Science Department Chair.
Corequisite: CPSC 589.
Special topic in computer science, selected in consultation with and completed under supervision of a full-time faculty member.


CPSC 901 Programming Concepts and Fundamental Data Structures (3 units)
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. (Formerly CPSC-501)


CPSC 902 Computer Architectures and Low-Level Languages (3 units)

Prerequisite: Math 270A.
Digital logic and compute 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. (Formerly CPSC-502)


CPSC 903 File Structures and Database Systems (3 units)
Prerequisite: CPSC 901 and CPSC 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. (Formerly CPSC-503)


CPSC 904 Advanced Algorithms and Data Structures (3 units)
Prerequisite: CPSC 903, Math 150B, Math 270B, and Math 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. (Formerly CPSC-504)


CPSC 905 Programming Languages and Compilers (3 units)

Prerequisite: CPSC 904.
Language Definitions, Bindings, Type checking, Scopes, Data Types, Control Structures, Subprograms. Design and Implementation of Programming language processors such as compilers and interpreters. (Formerly CPSC-505)


CPSC 906 Operating Systems (3 units)

Prerequisite: CPSC 903.
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. (Formerly CPSC-506)

layout image

Related Prerequisite Math Courses

MATH 150A, B Analytic Geometry and Calculus (4,4)
Prerequisite: the equivalent of four years of high school mathematics including trigonometry, a passing score or an exemption from the ELM (Entry Level Mathematics Exam), and a passing score on the MQE (Mathematics Qualifying Examination). 150A is the only prerequisite for 150B. Analytic geometry, functions, limits, differentiation, the definite integral, techniques of integration, applications, infinite series, Taylor's theorem.

MATH 270A Mathematical Structures I (3)
Prerequisite: Four years high school mathematics.
First of two semesters of fundamental discrete mathematical concepts and techniques needed in computer related disciplines. Logic, truth tables, elementary set theory, proof techniques, and combinatorics.


MATH 270B Mathematical Structures II (3)
Prerequisite: Mathematics 270A.
Second of two semesters of fundamental discrete mathematical concepts and techniques needed in computer related disciplines. Graph theory, Boolean algebra, algebraic structures, linear algebra.


MATH 338 Statistics Applied to Natural Sciences (4)

Prerequisite: Math 130 or 150B or consent of instructor.
An introduction to the theory of statistics and statistical applications with an emphasis on data analysis techniques. Topics include elementary probability theory, estimation, hypothesis testing, correlation and regression, analysis of variance, and non parametric tests. (2 hours lecture, 2 hours laboratory)