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.
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)
40. Computer Programming I (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. No credit if taken after C Sci 20. (3 lecture, 2 lab hours)
41. Computer Programming II (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)
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. Data Structures (3)
Prerequisites: C Sci 41. 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 Automata Theory (3)
Prerequisites: C Sci 41. Introduction to theoretical computer science. Sets;
relations; mathematical induction; pigeonhole principle; diagonalization
principle. Regular expressions, regular languages, finite automata,
their relationship and their properties. Introduction to pushdown automata
and Turing machines.
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. Operating Systems and Computer Architecture I (3)
Prerequisites: C Sci 112, 115. Review o1 system architecture. Dynamic
procedure activation. Process management'-interrupt hardware, process control
blocks, concurrent processes, semaphores, monitors, deadlock. Storage management
-- real and virtual. Processor management-job and processor scheduling,
multiprocessing.
146. Operating Systems and Computer Architecture II (3)
Prerequisites: C Sci 113A, 144. Auxiliary storage management, disk scheduling,
file and database systems. Performance measuring, monitoring and evaluation,
analytic modeling. Networks, security and case studies.
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. Software Engineering (3)
Prerequisite: C Sci 115. 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.
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. Automata Theory and Formal Languages (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.
188. Theory of Computation (3)
Prerequisite: C Sci 186. Compatibility, effective procedures, algorithms;
finite-state and infinite machines; Turing machines, recursive functions,
limitations of effective compatibility, the halting problem, the debugging
problem, computable and noncomputable real numbers. (Former Math 113 and
C Sci 113A and C Sci 184)
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)