![]()
You are in the official 2008-2009 General Catalog
for California State University, Fresno.
![]()
COURSES
![]()
Computer Science (CSCI)
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.
CSCI 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)
CSCI 7. Computer Literacy (3)
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)
CSCI 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.
CSCI 30. Introduction to the Internet (3)
Topics include e-mail, Web browsers, searching, evaluation of Web resources,
HTML, Web-page design, encryption, and basic network communication. Special
emphasis is placed on the underlying technologies. (2 lecture [1 traditional,
1 online], 2 lab hours)
CSCI 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)
CSCI 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)
CSCI 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)
CSCI 101. Computational Foundations for Bioinformatics (3)
Prerequisite: CSCI 1, BIOL 102. 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)
CSCI 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.
CSCI 112. Introduction to Computer Systems (4)
Prerequisite: CSCI 41, 60. 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)
CSCI 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)
CSCI 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)
CSCI 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)
CSCI 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)
CSCI 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.
CSCI 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.
CSCI 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,
2 lab hours)
CSCI 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.
CSCI 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)
CSCI 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.
CSCI 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.
CSCI 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)
CSCI 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)
CSCI 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.
CSCI 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, 2 lab hours)
CSCI 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.
CSCI 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.
CSCI 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)
CSCI 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)
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 190. Independent Study (1-3; max total 6)
See Academic Placement -- Independent
Study. Approved for RP grading.
CSCI 191T. Proseminar (1-3; max total 15)
Prerequisite: permission of instructor. Presentation of selected topics
in computer science.
CSCI 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.
CSCI 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.
(See Catalog Numbering System.)
Computer Science (CSCI)
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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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)
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 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.
CSCI 290. Independent Study (1-3; max total 6)
Prerequisite: approval of department. See Academic Placement -- Independent Study. Approved for RP grading.
CSCI 291T. Seminar (1-3; max total 9)
Prerequisite: approval of instructor. Special topics in computer science
of current interest and importance.
CSCI 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.
CSCI 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.
(See Catalog Numbering System.)
Computer Science (CSCI)
CSCI 391T. Topics in Computer Science
(1-6; repeatable for credit with different topics)