You are in the official 2000-2001 General Catalog
for California State University, Fresno.


Department of Computer Science

COURSES

 



Computer Science (C SCI)

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: C SCI 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 (3)
Prerequisites: C SCI 40 and 41 or concurrently. Abstraction, iteration, induction, recursion, complexity of programs, data models, and logic.

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. Computer Applications in the Sciences (3)
Prerequisite: intermediate algebra; calculus recommended. Introduction to computers with emphasis on microcomputers. Preparation, storage, and processing scientific data, documents, and illustrations; graphing, manipulating, and simple statistical analysis of data; computer-to-computer communications and file transfers; Internet and World Wide Web; introduction to computer languages. (2 lecture, 2 lab hours)

105T. Workshop on Computer Languages (1-3; max total 6)
Prerequisite: C SCI 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: C SCI 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: C SCI 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) (Formerly C SCI 113A)

115. Algorithms and Data Structures (3)
Prerequisites: C SCI 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.

117. Structures of Programming Languages (4)
Prerequisites: C SCI 41, 60, and C SCI 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 (3)
Prerequisites: C SCI 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.

124. Introduction to File Processing (3)
Prerequisite: C SCI 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: C SCI 115; C SCI 124 recommended. Database concepts; hierarchical, relational, and network models. Data normalization, data description languages, data manipulation languages, and query design.

134. Compiler Design (3)
Prerequisites: C SCI 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: C SCI 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 (3)
Prerequisites: C SCI 41 and C SCI 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.

146. Systems Architecture (3)
Prerequisites: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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, C SCI 41, and (C SCI 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: C SCI 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: C SCI 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 (4)
Prerequisites: C SCI 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. (3 lecture, 2 lab hours)

177. Distributed Computer Systems (4)
Prerequisites: C SCI 113, 144; C SCI 176 recommended. 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. (3 lecture, 2 lab hours)

186. Formal Languages and Automata (3)
Prerequisite: C SCI 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: C SCI 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 SP 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 SP grading.


GRADUATE COURSES

(See Course Numbering System.)

Computer Science (C SCI)

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: C SCI 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: C SCI 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: C SCI 124, 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.

244. Operating Systems (3)
Prerequisite: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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: C SCI 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 SP 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 SP 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 SP grading.


IN-SERVICE COURSE

(See Course Numbering System.)

Computer Science (C SCI)

391T. Topics in Computer Science
(1-6; repeatable for credit with different topics)

 

Computer Science Degrees

Department Page

Courses Menu

Home