

![[Program Listings: A-D]](images/a-d_button.gif)
![[Program Listings: E-L]](images/e-l_button.gif)
![[Program Listings: M-R]](images/m-r_button.gif)
![[Program Listings: S-Z]](images/s-z_button.gif)
![[Program Listings: Show All]](images/showall_button.gif)
|
Computer Science Courses
Computer
Science | Courses | Faculty
(All courses carry 3 credits unless otherwise noted. Students should check
with the Department office for current information regarding which courses will
be offered each semester.)
102 Computers and Society (R2)
(both sem)
What computers are, how they are used, and how their use affects society. Origins
of computing and the forces that brought it about. Essential hardware components
of the computer. Introduction to basic programming methods using the JavaScript
language. Use of computers in business, professions, art, and science, effect
of the Information Superhighway. Social, political, and economic impact of computers
on society: privacy, robotics, computers in political action. Use of computer
required. Not open to CMPSCI majors or premajors.
105 Computer Literacy (R2) (both sem)
How computers can help solve problems efficiently and effectively. Broad introduction
to hardware and software aspects of microcomputers. Four application areas:
word processing, spreadsheets, databases, and telecommunications (access to
the Internet). Uses University microcomputer labs; weekly 90-minute lab sessions.
Students more interested in programming should take CMPSCI 121. Prerequisites:
reasonable high school math skills. Typing ability an important asset.
120 Introduction to Problem Solving with the Internet (R2) (both sem)
Basic skills needed to use the Internet. UNIX commands, e-mail management,
listserv software, gophers, Usenet newsgroups, ftp file transfers, telnet sessions,
www browsers, basic Web page design, and PGP-based cryptography. Relevant social
and political topics: copyright law, First Amendment issues, computer security,
personal privacy, electronic cash, commercialization, and bandwidth pricing
strategies. Not intended for Computer Science majors. Programming experience
not required. Prerequisites: some hands-on experience with PCs or MACs or UNIX.
121 Introduction to Problem Solving With Computers (R2) (both sem)
An introductory course in problem solving, using the programming language Java.
Focuses on the fundamental concepts of problem solving and on computer imple-mentation.
Satisfactory completion is a prerequisite for all higher-level computer science
courses. Use of computer required. Prerequisite: high school algebra and basic
math skills (R1).
187 Programming with Data Structures (R2) (both sem) 4 cr
Advanced programming techniques in the Java language. Elementary techniques
of software engineering: documentation, coding style, basic testing principles,
and informal reasoning about correctness. The notion of an abstract data structure
and various important data structures: stacks, queues, linked lists, tree-based
structures, and hash tables. Use of object-oriented language constructs for
encapsulation of data objects. Lecture, programming projects. Prerequisites:
basic math skills and high school algebra (R1); CMPSCI 121 or equivalent.
195A Representing, Storing, and Retrieving Information
Recommneded for First Year and Sophomore Non-Majors. The use of data in computer
systems. Formats for representing text, sound, images, etc., as strings of bits.
Basic information theory, use and limitations of file compression. Structured
databases and how to use them. Information retrieval in heterogeneous environments
such as the Web. XML as a language for defining new formats for representing
data. Prerequisites: user-level familiarity with a modern operating system and
some experience with application programs; Tier I math skills.
201 Architecture and Assembly Language (both sem) 4 cr
Introduction to computer organization and programming in assembly language.
Various experiments performed using an 8086-based microcomputer system. Develops
skills in programming bare or nearly bare machines. Use of computer required.
Prerequisite: CMPSCI 187 or equivalent.
250 Introduction to Computation (both sem) 4 cr
Basic mathematical paradigms essential for computer science. Propositional
and predicate calculus. Sets, formal languages, relations, and functions. Inductive
definition, recursive algorithms, and mathematical induction. Elementary combinatorics.
Basic definitions of graph theory. Finite-state machines, regular languages,
equivalence of these, proving languages not regular. Prerequisite: CMPSCI 187
or consent of instructor. Corequisite:MATH 132/136 or equivalent.
287 Programming Language Paradigms (both sem) 4 cr
Introduction to four major programming paradigms (functional, imperative, logic,
and object-oriented) using the Scheme language (a dialect of the Lisp language).
Comparison of paradigms. Implementations of important data structures in Scheme.
The Lisp interpreter. Development of methods to reason about programs. Prerequisite:
CMPSCI 187. Corequisites: CMPSCI 250 and MATH 132.
305 Social Issues in Computing (both sem)
Satisfies the Junior Year Writing requirement. The impact of computers on modern
society. Prerequisites: CMPSCI major or premajor status; ENGLWP 112 or equivalent.
311 Introduction to Algorithms
(both sem) 4 cr
The design and analysis of efficient algorithms for important computational
problems. Emphasis on the relationships between algorithms and data structures
and on measures of algorithmic efficiency. Sorting (heapsort, mergesort, quicksort),
searching, graph algorithms. Experimental analysis of algorithms also emphasized.
Use of computer required. Prerequisite: CMPSCI 250.
320 Introduction to Software Engineering (both sem) 4
cr
A study of the program development life cycle and fundamental ideas of good
programming practices. Topics include software requirements, specifications,
design, program structure and style, testing, and program management. An introduction
to proof of correctness, data abstraction, and program validation. Use of computer
required. Prerequisite: CMPSCI 287.
377 Operating Systems (both sem) 4 cr
The design and operation of modern computer operating systems. Review of capabilities
of typical computer hardware. Topics include command language interpreter (the
shell), processes, concurrency, inter-process communication, linking and loading,
file systems, security, and protection. Programming projects in C++ and UNIX.
Prerequisites: CMPSCI 187, 201.
383 Artifical Intelligence (both sem)
Fundamental concepts in machine intelligence. Techniques for search, learning,
representation, control, and formal reasoning. Study of selected landmark AI
systems. Introduction to planning, natural language processing, and common-sense
reasoning. Programming projects in Lisp. Prerequisites: CMPSCI 250, 287.
401 Formal Language Theory (2nd sem)
Introduction to formal language theory. Topics include finite state languages,
context-free languages, the relationship between language classes and formal
machine models, the Turing Machine model of computation, theories of computability,
resource-bounded models, and NP-completeness. Prerequisites: CMPSCI 250, 311
or equivalent.
403 Introduction to Robotics and Intelligent Systems
Topics related to the design and analysis of intelligent robot systems. Mechanisms,
actuators, vision, signals, control, learning, and path planning. Such systems
implemented in simulators.
445 Information Systems (1st sem)
Introduction to database systems. File organization, database system architectures,
data models, database design, relational systems, query optimization, recovery
and concurrency control. Use of computer required. Prerequisite: CMPSCI 287.
453 Computer Networks (2nd sem)
Introduction to computer communication networks and protocols. Fundamental
concepts in the design and analysis of computer networks. Topics include: layered
network architectures, applications, network, programming interfaces, transport,
congestion, routing, data link protocols, local area networks, emerging high-speed
networks, network management, and network security. Examples drawn from the
Internet (e.g., TCP, UDP, and IP) protocol suite. Prerequisite: CMPSCI 201 or
equivalent.
491A Compiler Techniques (1st sem)
The basic problems in the translation of programming languages focusing on
theory and common implementation techniques for compiling traditional (Pascal-like)
programming languages to produce asssembly or object code for typical machines.
Includes a substantial laboratory project in which the student constructs a
working compiler for a considerable subset of a realistic programming language.
Optional laboratory section covers details of the programming language used
to build the compiler, the operating system, the source language, and various
tools. Use of computer required. Prerequisites: CMPSCI 250, 377.
520 Software Engineering: Synthesis and Development (1st sem)
Systematic processes for creating high-quality software systems: requirements
analysis, formal specification and software design methods, software architecture,
process definition, and test planning. Complements CMPSCI 521. Prerequisite:
CMPSCI 320 or consent of instructor.
521 Software Engineering: Analysis and Evaluation (2nd sem)
Introduction to the principal approaches for testing and evaluating software
systems, particularly large, complex systems used in life-critical applications
such as medical monitoring devices and air traffic control. Manual code inspection
techniques (such as the cleanroom approach), formal specification and verification
techniques, static and dynamic analysis approaches, software safety issues.
Focus on analysis activities; complements CMPSCI 520. Prerequisite: CMPSCI 320
or consent of instructor.
530 Programming Languages (2nd sem)
The skills required to design and implement programming languages. The motivations
and costs for various language facilities; the descriptive tools required to
compare and evaluate programming language designs. Prerequisites: CMPSCI 287,
320, 377. Corequisite: CMPSCI 401.
535 Computer Architecture (1st sem)
The various elements of computer systems with particular reference to the historical
influence of certain real computers and the concepts behind them. Computers
studied from different levels of abstraction, including logic level, component
level, and system level. Topics include logic circuits, memory devices, virtual
memory, arithmetic, pipelines, caches, I/O, and an introduction to parallel
processing. Prerequisites: CMPSCI 250, 377.
570 Computer Vision (2nd sem)
Basic techniques in computer vision. The theoretical development of basic image
processing operations and their efficient implementation as building blocks
of a computer vision system. Topics include the image formation process and
digital representation of images; image filtering; extraction of regions and
edges; measurement of image features such as color, texture, and shape; hardware/software
architectures for image processing; and recovery of motion and depth information
from multiple images. Prerequisites: linear algebra and basic computer skills.
585 Natural Language Processing (1st sem)
Introduction to natural language processing including conceptual dependency,
predictive parsing, knowledge-based inference generation, and language-oriented
models of memory. The relationship between syntax and semantics. Various task
orientations including narrative text comprehension, question answering, summarization,
and interactive discourse. Prerequisite: CMPSCI 383 or consent of instructor.
589 Machine Learning (2nd sem)
Introduction to methods permitting machines to learn: decision tree induction,
cover generation, candidate elimination, artificial neural networks, inductive
logic programming. Bayesian, instance-based, reinforcement, apprentice, macro,
and explanation-based learning. Use of computer required. Prerequisite: CMPSCI
383.
591 Seminars
The department regularly offers 500-level seminar courses to undergraduates.
Topics vary from year to year. A description of available seminars is published
by the department before each semester. Many 600-level graduate courses are
open to undergraduates. Students should consult the Graduate Bulletin
for details.
551 3-D Animation and Digital Editing (both sem)
Students work alone and in teams to create high-quality publishable animated
pieces using 3-dimensional graphics technology. Techniques include digital editing,
sound, music, design, modeling, rendering, surfaces, textures, and lighting.
552 Interactive Multimedia Production
(both sem)
Students explore interactive authoring tools to develop presentation and training
systems by using programming languages within professional packages to present
graphics, animation, text, sound, and music based on user requests.
575 Combinatorics and Graph Theory
A basic introduction to combinatorics and graph theory for advanced undergraduates
in computer science, mathematics, and related fields. Topics include elements
of graph theory, Euler and Hamiltonian circuits, graph coloring, matching, basic
counting methods, generating functions, recurrences, inclusion-exclusion, Polya's
theory of counting.
Computer
Science | Courses | Faculty
|