Computer Science (CS)
Computer Science
105 Computer Ethics and Society (1:1:0). Prerequisite:
12 hours of undergraduate course work. Intensive introduction to the legal,
social, and ethical issues surrounding software development and computer use.
Professional conduct, social responsibility, and rigorous standards for software
testing and reliability are stressed. Issues such as liability, ownership of information,
privacy, security, and crime are examined. Students read, write, discuss, and
present reports on these topics. Students who have received credit for CS 305
cannot apply credit for this course towards the major requirements of the B.S.
in Computer Science.
112 Computer Science I (4:3:2). Prerequisites: Thorough
understanding of high school algebra and trigonometry and successful completion
of Math Placement Test offered through the Testing Center, or a grade of C or
better in MATH 105. Introduction to computer science for majors and others
with a serious interest in computer science. Topics include an overview of computer
system hardware and organization, problem-solving methods and algorithm development,
program structures, abstract data types, simple data and file structures, introduction
to analysis of algorithmic complexity and program correctness, and applications
development in a high-level programming language that supports modular design.
161 Introduction to a Second Language (1:1:0). Prerequisite:
Grade of C or better in CS 112. Not available for CS major credit. Advanced
programming, using the Java programming language. Other languages may be offered
at times.
211 Computer Science II (3:3:0). Prerequisite: Grade of
C or better in CS 112. Continuation of CS 112. Topics include abstract data
types and data structures (sets, files, strings, linked lists, stacks, queues,
trees, graphs) and examples of their applications. Emphasis on program development
continues and is reinforced through several larger programming projects. Additional
programming language instruction supplements the major topics of this course.
265 Assembly Language Programming (3:3:0). Prerequisite:
Grade of C or better in CS 211; corequisite: CS 105. Symbolic assembly language
and computer structures; arithmetic and logical operations; machine representations
of numbers, characters, and instructions; input-output and data conversions; addressing
techniques; assembler directives; subroutine linkage; and macroprocessing.
305 Ethics and Law for the Computing Professional (3:3:0).
Prerequisite: Junior standing (at least 60 credit hours). A
practical course intended to assist students in becoming effective computer professionals
by examining the challenging legal and ethical issues surrounding computer technology
and its use, and building a foundation to deal with those challenges. Applies
philosophical bases for ethical decision-making to modern concerns raised by computers
and technology. Addresses the specific topics covered by CS 105 in a more intensive
manner, and in addition, focuses on the emerging legal and ethical issues involved
in e-commerce and the widespread use of the Internet.
310 Computer Science III (3:3:0). Prerequisite: Grade
of C or better in CS 211. Tools and techniques required to develop moderate
to large programs. Topics include continued study of object-oriented techniques,
data structures, recursion, and problem-solving skills. Students complete several
moderate-size programs.
330 Formal Methods and Models (3:3:0). Prerequisites:
Grade of C or better in CS 211 and MATH 125. Abstract concepts that underlie
much advanced work in computer science, with major emphasis on formal languages,
models of computation, logic, and proof strategies.
332 Object-Oriented Specification and Implementation (3:3:0).
Prerequisite: Grade of C or better in CS 310. Concentration on the transition
from an abstract data type (ADT) specification to its implementation. Covers symbolic
logic for reasoning about programs, axiomatic and algebraic methods for ADT specification,
and introduction to goal-directed programming. The term project involves the design
and construction of a program incorporating several ADTs.
363 Comparative Programming Languages (3:3:0). Prerequisite:
Grade of C or better in CS 265. Key programming mechanisms described independently
of particular machines or languages including control, binding, procedural abstraction,
and types. Systematically surveys diverse high-level language capabilities.
365 Computer Systems Architecture (3:3:0). Prerequisites:
Grade of C or better in CS 265 and ECE 301. Computer hardware organization,
software structure, and data organization. Students complete a term project that
simulates one computer system on another.
421 Introduction to Software Engineering (3:3:0). Prerequisites:
Grade of C or better in CS 310 (or both CS 211 and SYST 301) and ENGL 302.
Techniques in software design and development. Discusses formal models of structured
programming, software engineering methods and tools, functional or object-oriented
design, and documentation. Working in teams, students organize, manage, and develop
a software engineering project.
440 Language Processors and Programming Environments (3:3:0).
Prerequisites: Grade of C or better in CS 310, 330 and 365. Survey of
basic programming language processors and software development tools such as assemblers,
interpreters, compilers, and CASE tools. Topics include design and construction
of language processors, formal syntactic definition methods, parsing techniques,
and code generation techniques.
450 Database Concepts (3:3:0). Prerequisite: Grade of
C or better in CS 310 and 330. Data models and data sublanguages for the
relational, hierarchical, and network approaches to database management systems.
Covers normal forms, external models, implementation, data independence, alternative
logical views of data, and object-oriented design. Various approaches are compared
in the context of applications.
451 Computer Graphics and Software Design (3:3:0). Prerequisites:
Grade of C or better in MATH 203, CS 310 and 365. Basic graphics principles
and programming. Topics include graphics hardware, graphical user interfaces,
scan conversion, transformations, viewing, hidden surface removal, illumination,
and graphics software design and techniques.
455 Computer Networking Systems (3:3:0). Prerequisites:
Grade of C or better in CS 310, 365, and STAT 344. Data communications and
networking protocols, with study organized to follow the layers of the Internet
Protocol Suite (the TCP/IP family of protocols). Topics include the role of various
media and software components, local and wide area network protocols, network
performance, and emerging advanced commercial technologies.
471 Operating Systems (3:3:0). Prerequisites: Grade of
C or better in CS 310 and 365. Issues in multiprogramming. The course covers
concurrent processes and synchronization mechanisms, processor scheduling, memory
management, file management, I/O management, deadlock management, performance
of operating systems, and projects dealing with synchronization in a multiprogrammed
OS and with virtual memory management. f,s
475 Concurrent and Distributed Systems (3:3:0). Prerequisite:
Grade of C or better in CS 471 or permission of instructor. Practical issues
in designing and implementing concurrent and distributed software. Topics include
concurrent programming, synchronization, multithreading, local and wide-area network
protocols, distributed computation, systems integration, and techniques for expressing
coarse-grained parallelism at the application level. Projects involve network
programming at the application level ( e.g., client-server programming using sockets
and remote procedure calls).
480 Introduction to Artificial Intelligence (3:3:0). Prerequisites:
Grade of C or better in CS 310 and 330. Principles and methods for knowledge
representation, reasoning, learning, problem solving, planning, heuristic search,
and natural language processing and their application to building intelligent
systems in a variety of domains. LISP, PROLOG, or an expert system programming
language is used.f,s
482 Computer Vision (3:3:0). Prerequisite:
Grade of C or better in both MATH 203 and CS 310. Basic principles of visual
perception and their implementation on computer systems. Topics include early
visual processing, edge detection, segmentation, intrinsic images, image modeling,
representation of visual knowledge, and image understanding. Students complete
projects involving real images.
483 Data Structures and Analysis of Algorithms (3:3:0). Formerly
CS 465. Prerequisites: Grade of C or better in CS 310, 330, and MATH
114. Analysis of the computational resources required for important problem
types by alternative algorithms and their associated data structures, using mathematically
rigorous techniques. Specific algorithms are analyzed and improved. f,s
490 Design Exhibition (3:3:0). Prerequisites: Grade of
C or better in CS 421, 483, two other CS 400-level courses, and senior standing.
Capstone course focusing on the design and successful implementation of a major
software project, encompassing a broad spectrum of knowledge and skills, developed
by a team of students. Final exhibition of the result to a faculty/industry panel
is required. f,s
491 Great Principles of Information Technology (3:3:0). Prerequisites:
senior standing (at least 90 credit hours) including two 400-level CS courses.
A synthesis course for CS majors. Offers a holistic view of the field and its
connections with other fields. Covers great principles of information technology
from algorithms and programming, distributed systems, and cooperative systems.
Emphasizes the historical development of these principles, why they have stood
the tests of time, how they relate to one another, and how they relate to issues
in other fields. Also covers major contemporary open questions in information
technology. Includes a project with an oral presentation.
498 Independent Study in Computer Science (1-3:0:0). Prerequisites:
60 credits, major in computer science, and permission of instructor. Research
and analysis of selected problems or topics in computer science. Topic must be
arranged with an instructor and approved by the department chair before registering.
May be repeated for a maximum of six credits if the topics are substantially different.
499 Special Topics in Computer Science (3:3:0). Prerequisites:
60 credits and permission of instructor; specific prerequisites vary with nature
of topic. Topics of special interest to undergraduates. May be repeated for
a maximum of six credits if the topics are substantially different.
540 Language Processors (3:3:0). Prerequisites: MATH 125,
CS 265, 310, and 330. Basic programming language processors such as assemblers,
interpreters, and compilers. Topics include design and construction of language
processors, formal syntactic definition methods, parsing techniques, and code
generation techniques. Lab includes construction of language processors and experience
with programming environments.
571 Operating Systems (3:3:0). Prerequisites: CS 310 and
365. Models of operating systems. Major functions including processes, memory
management, I/O, interprocess communication, files, directories, shells, distributed
systems, performance, and user interface.
580 Introduction to Artificial Intelligence (3:3:0). Prerequisites:
CS 310 and 330. Principles and methods for knowledge representation, reasoning,
learning, problem solving, planning, heuristic search, and natural language processing
and their application to building intelligent systems in a variety of domains.
LISP, PROLOG, or an expert system programming language is used.
583 Analysis of Algorithms (3:3:0). Prerequisites: CS
310, 330, and MATH 125. Topics include the analysis of sequential and parallel
algorithmic strategies (such as greedy methods, divide and conquer strategies,
dynamic programming, search and traversal techniques, approximation algorithms),
the analysis of specific algorithms falling into these classes, NP-Hard and NP-Complete
problems.
631 Object-Oriented Design Patterns (3:3:0). Prerequisite:
SWE 619 or 620 or CS 540 or 571 or a graduate course in object-oriented programming
or equivalent. Principles of object-oriented design through design patterns.
A study of the selection of appropriate object-oriented structure after the system
requirements or requirements specification of the software system have been developed.
Design patterns are created in the logic view of the software system. A study
of generalized design solutions for generalized software design problems. A study
of the reuse of design patterns. Once developed, design patterns may be specified
in any object-oriented language.
635 Foundations of Parallel Computation (3:3:0). Prerequisites:
CS 583 and 540 or 571, or equivalent. Survey of the field of parallel computation.
Three major parallel computing paradigms (MIMD computation, SIMD computation,
and data flow computation) are covered. Emphasis is placed on the interfaces between
algorithm design and implementation, architecture, and software. Parallel algorithms
and parallel programming languages are examined relative to the architecture of
particular parallel computers.
640 Advanced Compilers (3:3:0). Prerequisites: CS 540
and 583 or equivalent. Examination of advanced compiler techniques such as
code optimizations for sequential and parallel machines; compilers for logical,
functional, or object oriented languages; and other selected topics in the current
literature.
650 Database Engineering (3:3:0). Prerequisites: CS 540,
583, and 571. Data models for network, hierarchical, object-oriented, and
relational management information systems. Covers development (including internal
structures) of a database system.
652 Computer Graphics (3:3:0). Prerequisite: CS 583.
Graphics principles and programming. Topics include graphics hardware, antialiasing,
transformations, viewing, illumination, blending, texture mapping, color models,
curves, surfaces, and animation.
656 Computer Communications and Networking (3:3:0). Prerequisites:
CS 571 and STAT 344 or equivalent. Techniques and systems for communication
of data between computational devices and the layers of the Internet Protocol
Suite. Topics include the role of various media and software components, local
and wide area network protocols, network design, performance and cost considerations,
and emerging advanced commercial technologies. Emphasis is on the TCP/IP family
of protocols.
668 Computer Architecture Systems (3:3:0). Prerequisite:
CS 571 or 540 or equivalent. Examination of the principles and practices
relating computer architecture to programming execution and efficiency. A new
approach that stresses the performance and cost of architecture is presented.
The principles of compiler and OS implications, instructions sets, basic processors,
pipelines, and memory-hierarchy are examined. Specific topics may include RISC
machines, cache memories, register usage, VAX architecture, and vector machines.
671 Advanced Operating Systems (3:3:0). Prerequisite:
CS 571 or permission of instructor. Advanced topics in the design and implementation
of microkernel-based, object-oriented, and distributed operating systems. Specific
topics include support for interprocess communication, the interaction between
computer architecture and operating systems, distributed file systems, transactions,
and distributed shared memory.
672 Computer System Performance Evaluation (3:3:0). Prerequisites:
CS 571 and MATH 351, or permission of instructor. Theory and practice of
analytical models of computer systems. Topics include queuing networks, single
and multiple class mean-value analysis, models of centralized and client-server
systems, software performance engineering, and web servers performance.
673 Multimedia Computing and Systems (3:3:0). Prerequisite:
CS 571. Focuses on technological and development environments involved in
developing multimedia applications. Projects involve experience with multimedia
authoring tools and simulations to assess performance.
680 Natural Language Processing (3:3:0). Prerequisites:
CS 540 and 580. Explores the principles of the design of computer programs
that respond appropriately to questions, commands, and statements expressed in
human language, particularly English. Role of knowledge representation and linguistic
theory. Students become familiar with current literature to implement a limited
natural language processor.
681 Designing Expert Systems (3:3:0). Prerequisite: CS
580. Design, construction, and evaluation of software systems that solve
problems generally deemed to require human expertise. Focuses on the study and
use of relevant languages, environments, mathematics, and logic. Case studies
of successful systems are examined. Programming projects include development of
tools or small-scale systems.
682 Computer Vision (3:3:0). Prerequisite: CS 580 and
583. Study of computational models of visual perception and their implementation
on computer systems. Topics include early visual processing, edge detection, segmentation,
intrinsic images, image modeling, representation of visual knowledge, and image
understanding.
683 Parallel Algorithms (3:3:0). Prerequisite: CS 583;
CS 635 recommended. Examination of the design and analysis of parallel algorithms.
Material focuses on algorithms for both theoretical and practical models of parallel
computation. Algorithm design and analysis for the PRAM are considered, as well
as for existing SIMD and MIMD type architectures. Topics include sorting, graph
algorithms, numerical algorithms, and computational complexity.
684 Graph Algorithms (3:3:0). Prerequisite: CS 583.
Data structures and analytical techniques for the study of graph algorithms. Data
structures discussed include disjoint sets, heaps, and dynamic trees. Algorithms
treated include minimum spanning trees, shortest path, maximum flow, and graph
planarity.
685/ECE 651/SYST 672 Intelligent Systems for Robots (3:3:0).
Prerequisite: CS 580; or ECE 650; or SYST 611 or 555; or equivalent. Review
of recent developments in the area of intelligent autonomous systems. Applications
of artificial intelligence, computer vision, and machine learning to robotics
are studied. Topics include analysis and design of algorithms and architectures
for planning, navigation, sensory data understanding, sensor fusion, spatial reasoning,
motion control, knowledge acquisition, learning of concepts and procedures, self-organization,
and adaptation to the environment.
686 Image Processing and Applications (3:3:0). Prerequisites:
CS 583 and either STAT 344 or MATH 351, or equivalent. Concepts and techniques
used in image processing. Methods for image capture, transformation, enhancement,
restoration, and encoding are discussed. Students complete projects involving
naturally occurring images.
687 Advanced Artificial Intelligence (3:3:0). Prerequisite:
CS 580. Exploration of foundational issues of artificial intelligence, such
as the roles of knowledge and search, the formalization of knowledge and inference,
and symbolic versus emergent approaches to intelligence. Advanced programming
techniques for artificial intelligence and their relationship both to the foundational
issues and to the most important application areas for artificial intelligence
are studied. Major programming project required.
688 Neural Network Principles (3:3:0). Prerequisite: CS
580 or equivalent. Study of neural network models, algorithms, and applications.
Several connectionist and biologically based models are introduced, and their
capabilities and limitations are discussed. Variety of application areas are presented.
Network simulation project is required.
697 Independent Reading and Research (1-3:0:0). Prerequisites:
Graduate standing, completion of at least two core courses (CS 540, 571, 580,
583), and permission of instructor. In areas of importance but insufficient
demand to justify a regular course, a student may undertake a course of study
under the supervision of a consenting faculty member. Students normally submit
a written statement of the content of the course and a tentative reading list
as part of the request for approval to take the course. Literature review, project
report, or other written product is normally required.
699 Advanced Topics in Computer Science (3:3:0). Prerequisites:
Completion of at least two core courses and permission of instructor. Special
topics in computer science not occurring in the regular computer science sequence.
May be repeated for credit when the subject is distinctly different.
700 Quantitative Methods and Experimental Design in Computer Science
(3:0:0). Prerequisites: STAT 344, at least two 600 level courses
in computer science, and doctoral status. Integrated treatment to the models
and practices of experimental computer science. Topics include scientific methods
applied to computing, workload characterization, forecasting of performance and
quality metrics of systems, uses of analytic and simulation models, design of
experiments, interpretation and presentation of experimental results, hypothesis
testing, and statistical analyses of data. Involves one or more large-scale projects.
706 Concurrent Software Systems (3:3:0). Prerequisites:
CS 571 and SWE 621 or 631 or equivalent. Study of issues related to the development
of concurrent software systems. Topics include concurrent programming languages
and constructs and the specification, design, verification, and validation of
concurrent programs. Students are required to solve concurrent programming problems
and to check their solutions by using verification, testing, and debugging tools.
707 Distributed Software Systems (3:3:0). Prerequisite:
CS 706 or permission of instructor. Issues in the design and implementation
of distributed applications. Topics covered include distributed programming using
sockets as well as higher-level technologies such as remote procedure calls and
distributed object middleware technologies including Java RMI, CORBA, and DCOM.
735 Concurrency (3:3:0). Prerequisite: CS 635 or equivalent.
Description of the formal specification of concurrent systems and algorithms,
using formal methodology based on the theory of communicating sequential processes.
Emphasis is placed on using the Occam programming language to the implementation
of formal specifications of concurrent systems.
750/IT 750 Theory and Applications of Data Mining (3:3:0).
Prerequisite: CS 681, 687, or 688, or permission of the instructor. Concepts
and techniques in data mining and their multidisciplinary applications. Topics
include databases; data cleaning and transformation; concept description; association
and correlation rules; data classification and predictive modeling; performance
analysis and scalability; data mining in advanced database systems, including
text, audio, and images; and emerging themes and future challenges. Term project
and topical review required.
752 Interactive Graphics Software (3:3:0). Prerequisite:
CS 652. Advanced graphics methods and tools. Topics include visualization,
modeling, rendering, animation, simulation, virtual reality, graphics software
tools, and current research topics.
755 Advanced Computer Networks (3:3:0). Prerequisite:
CS 656. Current and emerging issues in advanced computer networks and their
applications. Topics include software systems associated with packet and cell
switched networking architectures and protocols, high-performance LANs, scheduling
and congestion control, mobile networking, multimedia applications, and the next
generation of the Internet.
756 Performance Analysis of Computer Networks (3:3:0). Prerequisite:
CS 656 or equivalent. Analytical and simulation techniques for modeling and
analysis of computer networks. Examines elementary queuing analysis; networks
of queues; routing and flow controls; and applications to local and wide area
networks, internets, and emerging networking technologies such as Asynchronous
Transfer Mode.
773 Real-Time Systems Design and Development (3:3:0). Prerequisite:
CS 656 or 671. Real-time systems and the principles supporting their design
and implementation. Emphasis is placed upon fundamental results from real-time
scheduling theory and their relevance to computer system design. Topics include
system design issues for real-time applications involving communication networks,
operating systems, databases, and multimedia.
777 Human-Computer Intelligent Interaction (3:3:0). Prerequisites:
CS 580 and 652 (or 682) or permission of the instructor. Current and emerging
issues in human-computer intelligent interaction and human-centered systems and
their applications. Topics include video processing, visualization, virtual environments,
adaptation and tutoring, image and scene modeling, analysis and synthesis, face
and gesture recognition, speech and natural language processing. Term project
and topical review required.
782 Machine Learning (3:3:0). Prerequisite: CS 681, 687,
or 688 or permission of instructor. Survey of the field of machine learning
that is concerned with developing intelligent adaptive systems that are able to
improve through learning from input data or from their own problem-solving experience.
Topics provide broad coverage of past and current developments in machine learning,
including basic learning strategies and multistrategy learning.
785 Knowledge Acquisition and Problem Solving (3:3:0). Prerequisite:
CS 680, 681, or 687 or permission of instructor. Principles and major methods
of the basic stages of knowledge acquisition (systematic elicitation of expert
knowledge, knowledge base refinement, and knowledge base optimization) in the
context of general problem-solving methods. Case studies of successful knowledge
acquisition and problem solving systems are presented. Projects include development
or application of knowledge acquisition tools for knowledge-based systems.
798 Project Seminar (3:3:0). Prerequisite:18 credits applicable
toward the M.S. in Computer Science. Master's degree candidates undertake
a project using the knowledge gained in the M.S. program. Topics are chosen in
consultation with an advisor. Intended to meet the project or thesis requirement
for the M.S. in Computer Science.
799 Thesis (1-6:0:0). Prerequisite:18 credits applicable
toward the M.S. in Computer Science. Original or expository work evaluated
by a committee of three faculty members.
998 Doctoral Dissertation Proposal (1-12:0:0). Work on a research
proposal that forms the basis for a doctoral dissertation. May be repeated as
needed. No more than 24 credits of CS 998 and 999 may be applied to doctoral degree
requirements.
999 Doctoral Dissertation (1-12:0:0). A formal record of commitment
to doctoral dissertation research under the direction of a faculty member in computer
science. May be repeated as needed. No more than 24 credits of CS 998 and 999
may be applied to doctoral degree requirements.
|