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. General Education CORE, Critical Thinking.
5. Macintosh 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 in the Macintosh
envornoment. (2 lecture, 2 lab hours)
7. Computer Literacy (2)
An introduction to the computer for interdisciplinary students. Overview
of the history of computing, a presentation of the components of computer
hardware and software systems, a study of applications, programming, societal
impact, and the future of computing. (1 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 Programming (2)
Prerequisite: programming experience in a major high-level language, e.g.,
BASIC, COBOL, FORTRAN, Pascal. An introduction to the C programming language.
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. General Education
CORE, Quantitative Reasoning. (3 lecture, 2 lab hours) (CAN CSCI 4)
40. Introduction to Programming and Problem Solving (4)
Prerequisites: Students must take the ELM exam, intermediate algebra, and
trigonometry. Introduction to problem solving, algorithm development, procedural
and data abstraction; program design, coding, debugging, testing, and documentation;
programming language Pascal. General Education CORE, Quantitative Reasoning.
(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)
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; use of CSU network resources; introduction to computer
languages. (2 lecture, 2 lab hours)
105T. Workshop on Computer Languages (1-3)
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. Boolean algebra, combinational logic, elementary
digital circuits. A comparison of several assembly languages with an in-depth
study of the organization of a particular computer. (3 lecture, 2 lab hours)
113A. Introduction to Computer Organization (4)
Prerequisite: C Sci 41. The organization and structuring of the major components
of a modern computer: combinational circuits, sequential circuits, simulation
of circuits, coding, computer organization, and architecture. A detailed
study of a microcomputer or minicomputer. (3 lecture, 2 lab hours)
115. Algorithms and Data Structures (3)
Prerequisites: C Sci 41, 60. 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 112 or ECE 118. 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. (Spring semester)
126. Database Systems (3)
Prerequisite: C Sci 115. Database concepts; hierarchical, relational, and
network models. Data normalization, data description languages, data manipulation
languages, and query design. (Fall semester)
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. (Spring semester)
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. (Spring semester)
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 113A, 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. (Spring semester)
148. Systems Programming (3)
Prerequisites: C Sci 113A, 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.
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. (2 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 the OSI model. (2 lecture, 3 lab hours)
164. Artificial Intelligence Programming (3)
Prerequisite: C Sci 117. Introduction to functional programming and applicative
languages via LISP. Production systems. Knowledge-based systems. Examples
from: game playing, theorem proving, language processing. Introduction to
logic programming and declarative languages via PROLOG. Introduction to
expert systems. (Fall semester)
166. Principles of Artificial Intelligence (3)
Prerequisite: C Sci 164. Automated reasoning including nonmonotonic logic.
Topics from: robot planning, natural language processing, perception (computer
vision, speech), learning. (Spring semester)
172. Computer Graphics (4)
Prerequisites: Math 76, C Sci 41. 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, 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. (Spring semester)
176. Parallel Processing (4)
Prerequisites: C Sci 113A, 144. Notion, characteristics, and classification
of computer systems. Compiler and operating system interfaces with underlying
computer architecture. Notion and realization of parallelism. Pipeline design
techniques. Vector processing. Array processing. Multiprocessing. Architectural
trends. (3 lecture, 2 lab hours)
177. Distributed Computer Systems (4)
Prerequisites: C Sci 113A, 144; C Sci 176 recommended. The taxonomy of parallel/distributed
systems. Shared memory vs. message-passing programming paradigms. Message-based
multicomputer systems. Message-passing computer programming. Multicomputer
operating systems. Case studies. (3 lecture, 2 lab hours)
186. Formal Languages and Automata (3)
Prerequisite: C Sci 119. Introduction to formal language theory. Regular
grammars, context-free grammars, context-sensitive grammars, unrestricted
grammars; properties of context-free languages, push-down automata. (Spring
semester)
188. Introduction to Computability (3)
Prerequisite: C Sci 119. Introduction to computability, effective procedures,
algorithms; Turing machines, recursive functions, capabilities and limitations
of effective procedures, the halting problem, computable functions and decidability.
(Fall semester)
190. Independent Study (1-3)
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.
(See Course Numbering System.)
Computer Science (C Sci)
200. Introduction to Research in Computer Science (1)
Prerequisite: permission of instructor. 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 113A 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 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. Review of 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 250. 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)
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.
(See Course Numbering System.)
Computer Science (C Sci)
391T. Topics in Computer Science
(1-6; repeatable with different topics)
May be repeated for credit provided different topics are covered.