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.

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)

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