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.
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. Introduction to Computer Programming (4)
Prerequisite; ELM Exam, intermediate algebra and 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 C SCI 4)
40. Computer Programming (4)
Prerequisites: 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. (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)
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. Assembly Language Programming (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.
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.
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)
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)
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 in Computer Science (1-3)
191T. Proseminar (1-3)
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.
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.
(See Course Numbering System.)
Computer Science (C Sci)
391T. Topics in Computer Science
(1-6; repeatable with different topics)