General Information | Degree Programs | Curricula | Course Descriptions | Faculty
Aerospace Engineering |
Applied Mathematics |
Biomedical Engineering
Chemical Engineering |
Chemistry |
Civil Engineering |
Computer Science
Electrical Engineering |
Engineering (Interdepartmental) |
Materials Science and Engineering
Mechanical Engineering |
Nuclear Engineering |
Physics |
Systems Engineering
Technology, Culture, and Communication |
Technology Management and Policy
CS 110 - (3) (S)
Introduction to Information Technology
Provides exposure to a variety of issues in information technology such
as computing ethics and copyright. Introduces and provides experience
with various computer applications, including email, newsgroups, library
search tools, wordprocessing, Internet search engines, and html for the
nontechnically-focused student. Not intended for students expecting to
do further work in CS. Cannot be taken for credit by students in SEAS or
Commerce.
CS 120 - (3) (S)
Introduction to Business Computing
Introduction to digital computing and business applications of
computers. Overview of modern computer systems. Introduction to
programming in C++. Use of applications programs. Emphasis on
development of programming skills for business applications. Intended
primarily for pre-commerce students. Cannot be taken for credit by
students in SEAS.
CS 182 - (3) (S)
Introduction to FORTRAN Programming
Corequisite: APMA 101 or equivalent
Introduction to FORTRAN programming including control structures,
arrays, input/output statements and subprograms. Use of microcomputers.
Emphasis on applications in engineering.
CS 186 - (3) (S)
Introduction to PASCAL Programming
Corequisite: APMA 101 or equivalent
Introduction to fundamental programming techniques. Use of
microcomputers. Analysis of simple input and output, program control
statements, array manipulation, data abstractions, applications in
sorting, numerical methods and use of graphs.
CS 201 - (3) (S)
Software Development Methods
Prerequisite: CS 101
A continuation of CS 101 emphasizing modern software development
methods. An introduction to the software development life cycle and
processes. Topics include requirements analysis, specification, design,
implementation, and verification. Emphasis is on the role of the
individual programmer in large software development projects.
CS 202 - (3) (Y)
Discrete Mathematics I
Prerequisites: CS 101 and
APMA 102, or
equivalent with grades of C-
or
above
Introduction to discrete mathematics and proof techniques involving
first order predicate logic and induction. Application areas include
sets (finite and infinite, such as, sets of strings over a finite
alphabet), elementary combinatorial problems, and finite state automata.
Development of tools and mechanisms for reasoning about discrete
problems. Cross-listed as APMA 202.
CS 216 - (3) (Y)
Program and Data Representation
Prerequisites: CS 201 and
CS 202 with grades
of C- or above
Introduction to programs and data representation at the machine level.
Data structuring techniques and the representation of data structures
during program execution. Operations and control structures and their
representation during program execution. Representations of numbers,
arithmetic operations, arrays, records, recursion, hashing, stacks,
queues, trees, graphs, and related concepts.
CS 302 - (3) (Y)
Discrete Mathematics II
Prerequisite: CS 202 or equivalent with a
grade of C- or above
Continuation of CS 202 consisting of topics in combinatorics, including
recurrence relations and generating functions; an introduction to
computation theory including grammars, finite state machines and Turing
machines; and an introduction to graph theory, including connectivity
properties, Eulerian and Hamiltonian graphs, spanning trees and shortest
path problems. Cross-listed as APMA 302.
CS 305 - (3) (Y)
Usability Engineering
Prerequisite: Completion of CS 101 with a grade of C- or
higher, or
permission of instructor
Focuses on the interface between humans and all technology, not just
humans and computers. Treats human usability as an engineering design
goal. Designs user interfaces to technology.
CS 308 - (3) (Y)
Computer Architecture
Prerequisite: Completion of CS 216 with a grade of C- or
higher
Organization of modern computer systems hardware, including instruction
sets, input/output, memories, peripherals; alternative hardware
organizations, such as, cache memories, pipelining, and buses; parallel
and vector computers; and other high-performance computer organizations.
CS 332 - (3) (Y)
Algorithms
Prerequisites: Completion of CS 216 and
CS 302 with grades
of C- or
higher, and two semesters of calculus
A rigorous introduction to the analysis of algorithms and the effects of
data structures on those algorithms. The algorithms are selected from
areas such as sorting, searching, shortest paths, greedy algorithms,
backtracking, divide- and-conquer, and dynamic programming. The data
structures considered include search trees, heaps, splay trees, and
spanning trees. The analysis techniques include asymtotic worst case,
expected time, amortized analysis, and reductions between problems.
CS 340 - (3) (Y)
Advanced Software Development Techniques
Prerequisite: Completion of CS 216 with a grade of C- or
higher
Analysis of modern software engineering practice for multi-person
projects; methods for requirements specification, design,
implementation, verification, and maintenance of large software systems;
advanced software development techniques and large project management
approaches; project planning, scheduling, resource management,
accounting, configuration control, and documentation.
CS 360 - (3) (Y)
Scientific Computing Using FORTRAN
Prerequisites: CS 101 or
CS 182, or
CS 186,
and APMA 206, or
equivalent
Use of large-scale scientific computers in interactive and batch modes
to solve science oriented problems in the FORTRAN language. Brief
introduction to computer structure, files, operating system commands,
and editors. FORTRAN syntax. Applied programming problems in several
categories, including: polynomial manipulations, initial value problems,
boundary value problems, matrix manipulations, and the manipulation of
large program and data structures.
CS 390 - (1) (Y)
Computer Science Seminar I
Prerequisite: Open only to third-year computer science majors
This seminar provides a "cultural capstone" to the undergraduate
experience, where students make presentations based on topics in
computer science which have not been covered in the traditional
curriculum. Emphasis is on learning the mechanisms by which both
researchers and practicing computer scientists can access information
relevant to their discipline, and on the professional computer
scientist's responsibility in society.
CS 414 - (3) (Y)
Operating Systems
Prerequisite: CS 216 and completion of
CS 308
with a grade of C- or
higher
Analysis of process communication and synchronization; resource
management; virtual memory management algorithms; file systems; and
networking and distributed systems.
CS 415 - (3) (Y)
Programming Languages
Prerequisite: Completion of CS 340 with a grade of C- or
higher
Presents the fundamental concepts of programming language design and
implementation. Emphasis is on language paradigms and implementation
issues. Develops working programs in languages representing different
language paradigms. Many programs oriented toward language
implementation issues.
CS 416 - (3) (Y)
Artificial Intelligence
Prerequisites: Completion of CS 201 and
CS 302 with grades
of C- or
higher
Introduces artificial intelligence. Covers fundamental concepts and
techniques and surveys selected application areas. Core material
includes state space search, logic and resolution theorem proving.
Application areas covered may include expert systems, natural language
understanding, planning, machine learning, or machine perception.
Provides exposure to AI implementation methods, emphasizing programming
in Common LISP.
CS 457 - (3) (Y)
Computer Networks
Corequisite: CS 308 with a grade of C- or
above, or equivalent
knowledge
of operating systems
Intended as a first course in communication networks for upper-level
undergraduate students. Topics include the design of modern
communication networks; point-to-point and broadcast network solutions;
advanced issues such as Gigabit networks; ATM networks; and real-time
communications.
CS 462 - (3) (Y)
Database Systems
Prerequisite: Completion of CS 216 and
CS 302 with grades
of C- or
higher
Introduces the fundamental concepts for design and development of
database systems. Emphasis is on relational data model and conceptual
schema design using ER model, practical issues in commercial database
systems, database design using functional dependencies, and other data
models. Develops a working relational database for a realistic
application.
CS 490 - (1) (Y)
Computer Science Seminar II
Prerequisite: Open only to fourth-year computer science majors
A continuation of CS 390.
CS 493 - (1-3) (S)
Independent Study
Prerequisite: Consent of instructor
In-depth study of a computer science or computer engineering problem by
an individual student in close consultation with departmental faculty.
The study is often either a thorough analysis of an abstract computer
science problem, or the design, implementation and analysis of a
computer system (software or hardware).
CS 494 - (1-3) (S)
Special Topics in Computer Science
Prerequisite: Permission of instructor, additional specific
requirements vary with topics
Content varies from year to year and depends on the interests of the
instructor and needs of the Department. Serves a purpose similar to
CS 551 and
CS 751 , however, the course is
taught strictly at the
undergraduate level.
CS 551 - (1-3) (S)
Selected Topics in Computer Science
Prerequisite: Permission of instructor
Course content varies from year to year and depends on the interest and
needs of students. Recent topics included the foundations of
computation, artificial intelligence, database design, and scientific
computing.
CS 571 - (3) (Y)
Translation Systems
Prerequisite: Completion of CS 308
with a grade of C- or
higher
The theory, design, and specification of translation systems.
Translation systems are the tools used to translate a source language
program to a form that can be executed. Using rigorous specification
techniques to describe the inputs and outputs of the translators and
applying classical translation theory, working implementations of
various translators are designed, specified, and implemented.
Note Courses at the 600 level and above are listed in the Graduate Record.
Continue to: Electrical Engineering
Return to: Chapter 10 Index