You are in the official 2003-2004 General Catalog
for California State University, Fresno.
Department of Computer Science

COURSES
- Computer Science (CSCI)
- Computer Science (CSCI) --- Graduate Courses
- Computer Science (CSCI) --- In-Service Courses
![]()
Computer Science (CSCI)
1. Critical Thinking and Computer Science (3)
Prerequisite: intermediate algebra. Overview of the field of computer
science with an emphasis on critical thinking skills. Problem-solving
strategies, algorithm design, and data abstraction. Introduction
to hardware, theoretical limitations of computers, and issues
arising from the growing role of computers in society. G.E. Foundation
A3.
5. Computer and Applications (3)
An introduction to the computer: tools, applications, and graphics.
Overview of the components of computer systems; discussion on
software systems, electronic mail, influence of computers on society
and the future of computing; extensive hands-on experience with
application tools and programming. PC (Windows) environment. CR/NC
grading only. (2 lecture, 2 lab hours)
7. Computer Literacy (2)
Overview of the history of computing: a presentation of the components
of computer hardware and software systems as well as a study of
applications, programming, societal impact, and the future of
computing. (2 lecture, 2 lab hours)
10. Introduction to BASIC Programming (1)
Prerequisite: elementary algebra. Introduction to structured programming
techniques using the programming language BASIC. Topics include
input/output, branching, looping, subroutines, and computer graphics.
No prior experience required.
15. C and C++ Programming (2)
Prerequisite: programming experience in a major high-level language,
e.g., BASIC, COBOL, FORTRAN, Pascal. An introduction to the C
and C++ programming languages. Types, operators, expressions,
flow of control, functions, pointers, and arrays. Standard libraries
and programming tools. Emphasis on programming projects.
20. FORTRAN Programming (4)
Prerequisites: Students must take the ELM exam; students who do
not pass the exam must record a grade of C or better
in a college-taught intermediate algebra course; trigonometry.
Introduction to programming in FORTRAN with emphasis on program
design, debugging, and documentation. Elementary applications
and structured programming for algorithm development. (3 lecture,
2 lab hours) (CAN CSCI 4)
40. Introduction to Programming and Problem Solving (4)
Prerequisites: Students must take the ELM exam; students who do
not pass the exam must record a grade of C or better in a college-taught
intermediate algebra course; trigonometry. Introduction to problem
solving, algorithm development, procedural and data abstraction;
program design, coding, debugging, testing, and documentation;
a high-level programming language. (3 lecture, 2 lab hours)
41. Introduction to Data Structures (4)
Prerequisite: CSCI 40. Programming methodology, program correctness.
Review of data types. Data structures: linear and nonlinear structures,
files. Implementation of data structures. Recursion. Searching
and sorting. (3 lecture, 2 lab hours)
60. Foundations of Computer Science (4)
Prerequisites: CSCI 40 (may be taken concurrently.) Abstraction,
iteration, induction, recursion, complexity of programs, data
models, and logic. (3 lecture, 2 lab hours)
72. Introduction to Computer Graphics (3)
Comprehensive overview of computer graphics. Geometry, color,
hardware devices, surfaces and materials, lighting and shading,
polygonal models, textures, fractals, rendering, animation, and
production techniques. Case studies, examples, films, and video
displays from actual systems.
101. Computational Foundations for Bioinformatics (3)
Prerequisite: C SCI 1, BIOSC 140A. Computational approaches
to problems in molecular biology; Algorithms, heuristics, strings,
and graphs. Sequence comparison and multiple alignment. Selected
topics such as scripting, visual programming, laboratory workflow,
databases, and queries. (2 lecture, 2 lab hours)
105T. Workshop on Computer Languages (1-3; max total 6)
Prerequisite: CSCI 40 or permission of instructor. Workshops in
the use of various high-level programming languages or other selected
languages in areas of database, statistical computation, or operating
systems.
112. Introduction to Computer Systems (4)
Prerequisite: CSCI 41. Computer arithmetic. Von Neumann architecture.
Instruction sets, data types, formats, addressing. Register and
ALU organization. Memory hierarchy. I/O. Bus organization. Study
of one or more assembly languages. Basics of implementation of
higher-level languages. (3 lecture, 2 lab hours)
113. Introduction to Computer Organization (4)
Prerequisite: CSCI 41. Fundamental issues of computer design at
register-transfer level. Logical design of basic combinational
and sequential modules. Organization and design of major functional
blocks: ALU, CPU, memory, cache, input/output, hard-wired and
microprogrammed control. Simulation of computer organization.
Introduction to high-performance superscalar computer organization.
(3 lecture, 2 lab hours)
115. Algorithms and Data Structures (4)
Prerequisites: CSCI 41, 60; MATH 75. Review of basic data structures.
Graph, search paths, and spanning trees. Algorithm design and
analysis of sorting, merging, and searching. Memory management,
hashing, dynamic storage allocation. Integration of data structures
into system design. (3 lecture, 2 lab hours)
117. Structures of Programming Languages (4)
Prerequisites: CSCI 41, 60, and CSCI 119. General concepts and
paradigms of programming languages; scope and binding rules, applications
and implementations of language concepts. Languages selected from:
ADA, ICON, Miranda, ML, MODULA 2, OCCAM 2, PROLOG, LISP, Scheme,
SmallTalk. (3 lecture, 2 lab hours)
119. Introduction to Finite Automata (4)
Prerequisites: CSCI 41, 60. Strings, languages, and fundamental
proof techniques. Regular expression, regular grammar, regular
languages, finite automata, their interrelationship, and their
properties. Introduction to context-free languages. (3 lecture,
2 lab hours)
124. Introduction to File Processing (3)
Prerequisite: CSCI 115. Definition of file components, access
methods, and file operations. Algorithms for efficient implementation
of data structures; characteristics of bulk storage media for
mainframe and microcomputers. Introduction to database management
systems.
126. Database Systems (3)
Prerequisite: CSCI 124. Database concepts; hierarchical and relational
network models; object-oriented data models. Data normalization,
data description languages, data manipulation languages, and query
design.
130. Web Programming (3)
Prerequisite: CSCI 115. Programming for the World Wide Web. Web
servers and clients, Internet and Web protocols, and mark-up languages.
Client-side scripting, including both gateway and filter-based
approaches. (2 lecture, 3 lab hours) (Formerly CSCI 191T)
134. Compiler Design (3)
Prerequisites: CSCI 112, 115, 119. Syntax and semantics of programming
languages. Lexical analysis, parsing techniques, parser generator,
SLR and LALR parsing. Introduction to symbol table organization
and semantic routines. Compiler generators.
136. Compiler Construction (3)
Prerequisite: CSCI 134. Advanced topics in compiler design. Type
checking. Run-time storage management. Intermediate code generation.
Interpreters. Error recovery techniques. Code generation and optimization.
144. Introduction to Operating Systems (4)
Prerequisites: CSCI 41 and CSCI 112 or ECE 118. Operating system
history and services. File systems. Memory management. Process
management -- concurrent processes, communication, semaphores,
monitors, deadlocks. Resource management -- processor and disk
scheduling. Security and protection mechanisms. (3 lecture, 2
lab hours)
146. Systems Architecture (3)
Prerequisites: CSCI 113, 144. An in-depth analysis of one or more
operating systems -- system data structures, hardware architecture,
shell and kernel functions, I/O routines, interrupt handling.
Other topics may include parallel hardware architectures, performance
analysis.
148. Systems Programming (3)
Prerequisites: CSCI 113, 144. Topics include implementation of
operating system components and modification of existing systems.
Device drivers, memory management, communication networks, and
file systems will be examined. Projects will be emphasized.
150. Introduction to Software Engineering (3)
Prerequisite: CSCI 41. History, goals, and motivation of software
engineering. Study and use of software engineering methods. Requirements,
specification, design, implementation, testing, verification,
and maintenance of large software systems. Team programming. (2
lecture, 3 lab hours)
152. Software Engineering (3)
Prerequisite: CSCI 150. In-depth examination of techniques for
specification, design, implementation, testing, and verification
of software. Human-computer interfaces. Formal methods of software
development. Use of software engineering tools for the development
of substantial software projects. (3 lecture, 3 lab hours)
154. Simulation (3)
Prerequisites: CSCI 41, 60; MATH 75. Simulation as a tool for
the study of complex systems in computer science, statistics and
operations research. Generating random variables. Review of principles
behind and examples of simulation languages.
156. Internetworking Systems and Protocols (3)
Prerequisite: CSCI 144 or permission of instructor. Review of
underlying network technologies. Application-level interconnections,
network architectures, addressing, mapping abstract addresses
to physical addresses, routing datagrams, error and control messages,
protocol layering, gateways, subnets. Client-server interactions.
Upper layers of protocol stacks. (2 lecture, 3 lab hours)
164. Artificial Intelligence Programming (3)
Prerequisite: CSCI 117. Introduction to problem-solving methods
from artificial intelligence. Production systems. Knowledge-based
systems. Machine learning. Topics chosen from fuzzy logic, neural
network models, genetic algorithms. Verification, validation,
testing.
166. Principles of Artificial Intelligence (3)
Prerequisite: CSCI 164. Analysis of knowledge-based and neural
models, including self-organization, sequential learning models,
neurally inspired models of reasoning and perception. Integration
of different paradigms.
172. Computer Graphics (4)
Prerequisites: MATH 76, CSCI 41, and (CSCI 112 or ECE 118). Hardware
devices, raster graphics, device in dependence, graphic data structure
and representations, interactive techniques, and algorithms for
the display of two- and three-dimensional objects, graphic transformations,
graphics standards, modeling, animation, VRML and scientific visualization.
(3 lecture, 2 lab hours)
173. Advanced Computer Graphics (4)
Prerequisite: CSCI 172. Visible surface algorithms, lighting and
shading, textures, curves and surfaces, computer-aided design,
advanced modeling techniques, solid modeling, advanced raster
graphics architecture, advanced geometric and raster algorithms,
user interface, ray tracing, animation techniques, and fractals.
(3 lecture, 3 lab hours)
174. Design and Analysis of Algorithms (3)
Prerequisites: CSCI 115, 119. Models of computation and measures
of complexity, algorithms for sorting and searching, set representation
and manipulation, branch and bound, integer and polynomial arithmetic,
pattern-matching algorithms, parsing algorithms, graph algorithms,
NP-complete problems.
176. Parallel Processing (3)
Prerequisites: CSCI 113, 144. Characteristics, and classification
of computer systems. Notion and realization of parallelism. Pipeline
design techniques. Vector processing. Array processing. Multiprocessing.
Multiprocessing vs. multicomputers. Shared memory vs. message-passing,
problem solving, and parallel programming. Architectural trends.
177. Distributed Computer Systems (3)
Prerequisites: CSCI 113, 144. Characteristics and design of distributed
systems. Application and network interconnectivity. Enterprise
computing. Distributed data and transaction management. Distributed
operating systems. Distributed problem solving and programming.
186. Formal Languages and Automata (3)
Prerequisite: CSCI 119. Introduction to formal language theory.
Context-free grammars, context-sensitive grammars, unrestricted
grammars; properties of context-free languages, push-down automata.
188. Introduction to Computability (3)
Prerequisite: CSCI 119. Introduction to computability and complexity.
Turing machines, recursive functions, reduction, undecidability,
classes P and NP, and intractable problems.
190. Independent Study (1-3; max total 6)
See Academic Placement -- Independent
Study. Approved for RP grading.
191T. Proseminar (1-3; max total 15)
Prerequisite: permission of instructor. Presentation of selected
topics in computer science.
194. Cooperative Education (1-4; max total 8)
Prerequisites: courses appropriate to the work experience; approval
by major department cooperative education coordinator. Integration
of work experience with academic program, individually planned
through coordinator. CR/NC grading only.
198. Project (3)
Prerequisite: senior standing in computer science or permission
of instructor and approved subject. See Criteria
for Thesis and Project. Study of a problem under the supervision
of a faculty member. Presentation by the student in a seminar
setting and a final report are required. Satisfies the senior
major requirement for the B.S. in Computer Science. Approved for
RP grading.
GRADUATE COURSES
(See Course Numbering System.)
Computer Science (CSCI)
200. Introduction to Research in Computer Science
(1)
Prerequisite: classified standing in computer science. Orientation
to the graduate program, introduction to research methodology,
and discussion of possible project and thesis topics.
213. Computer Organization (3)
Prerequisites: CSCI 112 and 113 or permission of instructor. Organization
of memory, I/O, and processors. Computer busses. Microprogramming
and instruction execution. Interrupts. Data communications.
217. Programming Language Principles (3)
Prerequisite: CSCI 117 or permission of instructor. Advanced topics
in programming languages: concurrency, exceptions, types, procedures,
execution models. Introduction to the formal specification of
programming languages: syntax specification, semantic specification.
226. Advanced Database Systems (3)
Prerequisites: CSCI 126 and 144. Implementation of database systems
on modern hardware systems. Operating system design issues, including
buffering, page size, prefetching, etc. Query processing algorithms;
design of crash recovery and concurrency control systems. Implementation
of distributed databases and database machines.
230. Advanced Web Application Development (3)
Prerequisite: CSCI 130 or permission of instructor. Application
development for the World Wide Web. Three-tier architecture; authentication,
capability, and session management; versioning and open-source
development. Case studies and project work. (Formerly CSCI 291T)
244. Operating Systems (3)
Prerequisite: CSCI 144. Operating system functions. Performance
monitoring and fine-tuning. Network operating system design. Concurrency,
analysis of deadlock. Selected topics from current research.
246. Computer Architecture (3)
Prerequisite: CSCI 144. Examination and comparison of RISC and
CISC architectures. Parallel processors, multiprocessors, dataflow
machines. Database machines. Selected topics from current research.
250. Advanced Software Engineering (3)
Prerequisite: CSCI 150 or permission of instructor. Theoretical
and practical aspects of software engineering emphasizing requirements
analysis, specification, design, coding, testing, correctness,
maintenance, and management. Examination of reliability, performance,
and software metrics.
252. Software Development Environments (3)
Prerequisite: CSCI 150. Overview of modern software engineering
environments including structured editors, programmer's assistants,
and tools for software cost estimation, testing, scheduling, specification,
and verification. Relationship between artificial intelligence
and software engineering.
264. Artificial Intelligence (3)
Prerequisite: CSCI 164 or ability to program in Lisp and Prolog.
Software technology for artificial intelligence systems, including
expert systems. Knowledge- based and rule-based systems. Explanation
and learning. User-oriented interfaces.
272. Computer Graphics (3)
Prerequisite: CSCI 172 or permission of instructor. 3-D transformations,
visible surface algorithms, shading, textures, curves and surfaces,
computer-aided design, advanced modeling techniques, solid modeling,
advanced raster graphics architecture, advanced geometric and
raster algorithms, user interface, ray tracing, animation techniques,
and fractals.
274. Combinatorial Algorithms (3)
Prerequisite: CSCI 174. Design and analysis of efficient algorithms
for combinatorial problems. Network flow theory, matching theory,
augmenting-path algorithms, branch-and-bound algorithms, data
structure techniques for efficient implementation of combinatorial
algorithms, analysis of data structures, application of data structural
techniques to sorting, searching, and geometric problems.
282. Theory of Computation (3)
Prerequisite: CSCI 188 or permission of instructor. General models
of computation, recursive functions, undecidable problems, propositional
calculus, predicate calculus, complexity classes, NP-complete
problems.
284. Automata Theory (3)
Prerequisite: CSCI 186 or permission of instructor. Formal languages,
abstract machines, algebraic approach to automata, term rewriting
systems, formal power series, cryptography, parallel computation.
290. Independent Study (1-3; max total 6)
Prerequisite: approval of department. See Academic Placement --
Independent Study. Approved
for RP grading.
291T. Seminar (1-3; max total 9)
Prerequisite: approval of instructor. Special topics in computer
science of current interest and importance.
298. Research Project (3)
Prerequisite: advancement to candidacy. See Criteria
for Thesis and Project. Independent investigation of an advanced
topic as the culminating requirement for the master's degree.
Approved for RP grading.
299. Master's Thesis (3-6; max total 6)
Prerequisite: advancement to candidacy. See Criteria
for Thesis and Project. Preparation, completion, and submission
of an acceptable thesis for the master's degree. Approved for
RP grading.
IN-SERVICE COURSE
(See Course Numbering System.)
Computer Science (CSCI)
391T. Topics in Computer Science
(1-6; repeatable for credit with different topics)
