Computer Science
www.cs.vt.edu
E-mail: csundg@vt.edu
Dennis J. Kafura, Head
Professors: O. Balci; R. W. Ehrich; E. A. Fox; L. S. Heath; D. G. Kafura; L. T. Watson
Associate Professors: J. D. Arthur; S. Bohner; A. Bouguettaya; I. R. Chen; S. H. Edwards; C. J. Egyhazy; W. R. Frakes; N. Ramakrishnan; C. J. Ribbens; A. Sandu; E. E. Santos, C. A. Shaffer; D. G. Tatar
Assistant Professors: D. Bowman; D. Gracanin; G. W. Kulczycki; C. T. Lu; T. M. Murali; D. S. McCrickard; C. L. North; A. Onufriev; M. A. Perez-Quinones; S. Varadarajan
Instructors: N. D. Barnette; W. McQuain
|
|
|
The Field of Computer Science
- In a contemporary world where every educated person must have some knowledge of computers, the Department of Computer Science offers courses to meet a variety of needs. The department offers a bachelor of science program to prepare specialists in the area of computer science itself, a minor in computer science, and individual courses directed to the needs of non-majors who will be using computers as tools in their chosen career areas. The department also offers the M.S. And Ph.D. in computer science and the master of information systems (see Graduate Catalog).
- As a major, computer science involves far more than just the writing of computer programs. It is a technically rigorous field that requires a strong background in mathematics. Computer scientists must be good at problem solving. Their work requires the ability to think abstractly and to represent real-world objects as symbols that can be manipulated by a computer. The field of computer science is characterized by tremendously rapid change. It is continuously evolving both as new uses are discovered for existing computers and as technological advances lead to new computers with expanded capabilities.
Degree Requirements
- The curriculum in computer science is designed to provide a broad general computer science background that will prepare a student either to enter a professional career as a computer scientist or to continue training at the graduate level. All CS majors are required to take the same courses at the freshman and sophomore levels. Juniors take a combination of two required courses and two elective courses from a restricted list. At the senior level, students select one theory course and three specialty courses which correspond to their individual interests within the field. In all, a minimum of 37 credit hours of computer science is required: 1705, 1706, 2204, 2604, 2704, 3204, 3604, (3304 or 3414), (3704 or 3724), (4104 or 4114 or 4124), six credits in two other 4000-level courses, and an approved technical elective.
- Computer science majors are required to take an additional 39 credits distributed over six disciplines. Mathematics comprises 22 of these credits, which include Math 1114, 1205, 1206, 1224, 2214, 2224, 2534, and 3134. CS/Math double majors take 3034 and 3124 in place of 2534 and 3134. Depending on their selection of CS courses, CS majors may need zero or one additional math course to obtain a math minor.
- The other specific disciplines represented in the departmental requirements are engineering education, electrical and computer engineering, statistics, and communication studies. Students must take ENGE 1024 and 1104, ECE 2504, Stat 4714, and COMM 2004. The final four additional credits come from taking one more natural science lab course beyond the two required by the core curriculum.
Opportunities for Majors
- The department offers computer science majors the opportunity to enhance their education through a variety of curricular and extracurricular activities. Students who meet the requirements for independent study/ undergraduate research can pursue research or individualized study under the direction of a faculty member. Through the honors program, superior students can work toward earning their degree "in honors" or even elect to earn both the bachelor's and master's degrees within five years. The Cooperative Education Program makes it possible for students to acquire professional experience while pursuing their degree.
- The department sponsors chapters of two national computer science organizations. There is a student chapter of the Association for Computing Machinery (ACM), the national professional organization for computer scientists. Membership is open to all computer science majors. The other departmentally sponsored organization is Upsilon Pi Epsilon (UPE), the national computer science honor society. Its members are elected in their junior or senior year. Selection is based on superior academic performance. Additional recognition of scholastic excellence is made during each year's graduation ceremonies. At that time awards are presented to the outstanding senior, junior, and lower-division student for the preceding academic year. The Gorsline award, in memory of former faculty member George Gorsline, annually recognizes a rising senior who has overcome freshman-year academic difficulties and subsequently demonstrated the greatest academic improvement.
Information for Non-Majors
- In addition to its service courses for non-majors, (1004, 1034, 1044, 1054), the computer science department jointly offers with the Departments of Mathematics and Statistics a series of courses which provide a liberal arts approach to the study of mathematical sciences. (Please see "Mathematical Sciences" in this catalog).
- For non-majors seeking a strong background in computer science, the department offers a CS minor. The requirements for the minor include: 1044, 1104, (1204 or 1604), 1704, 2204, 2604, 2704, and three credits in a three-hour 3000/4000-level course except 3604, 4004, or 4014. Minors must meet the same prerequisites as majors. This includes Math 2534 as a prerequisite for CS 2604 and achievement of a "C" (2.0) or better in all CS courses which are prerequisites for subsequent CS courses.
- Students interested in teacher certification are encouraged to consider the IDST degree program requiring three areas of concentration in Computer Science, Mathematics, and Education. The purpose of the degree is to prepare computer science/mathematics teachers for the secondary schools.
Computational Facilities
- The Department of Computer Science possesses extensive facilities for both instruction and research. There are several undergraduate teaching laboratories and a number of specially equipped research laboratories. These include two large parallel computing clusters and numerous computer and files servers for research and instruction in digital libraries, software engineering, and bioinformatics. The department also operates an extensively equipped Human-Computer Interaction Laboratory, and shares an interdisciplinary Virtual Environments Laboratory with state-of-the-art 3D and head-mounted displays, and a 4-wall CAVE immersive theater.
Satisfactory Progress
- University policy requires that students who are making satisfactory progress toward a degree meet minimum criteria toward the University Core (see Academics) and toward the degree in computer science.
- Satisfactory progress toward the B.S. in Computer Science requires that:
- During the first 72 hours attempted at the university (including transfer, advanced placement, advanced standing, credit by examination, and course withdrawal hours), a Computer Science major must:
- be registered in at least one 3-credit course required in the major during each on-campus semester of the regular academic year;
- achieve a GPA of 2.0 or better in the major no later than having attempted 72 hours toward the degree;
- not repeat any CS course required in the major more than once; and
- not repeat more than 3 CS courses in the major.
- All CS courses used as prerequisites for subsequent CS courses must be passed with a grade of "C" (2.0) or better.
Undergraduate Course Descriptions (CS)1004: COMPUTER LITERACY
Introduction to personal computer applications. Overview of
basic computer hardware and system software concepts.
Projects using various application software packages
including word processing, spreadsheets, databases, and
graphics (analytical and presentation), using
electronic-mail, computer network browsers, and on-line
training systems. Not for CS major or minor credit.
Duplicates ACIS 1504, ALS 1514.
(3H,3C)
1034: PROGRAMMING IN PASCAL
Fundamental concepts underlying software solutions to
many problems. Structured data, statement sequencing,
logic control, input/output, procedures, and functions.
(3H,3C)
II.
1044: INTRODUCTION TO PROGRAMMING IN C
Fundamental concepts underlying software solutions of many
problems. Structured data, statement sequencing, logic
control, input/output, and functions. The course will be
taught using a structured approach to programming.
Partially duplicates 1344.
(3H,3C)
I, II, III, IV.
1054: INTRODUCTION TO PROGRAMMING IN JAVA
This course provides an introduction to object
oriented programming using the Java language.
Fundamental concepts underlying programming and
software solutions to many problems. Structured data,
statement sequencing, logic control, classes, objects,
methods, instantiation of classes, sending messages to
objects.
(2H,2L,3C)
1104: INTRODUCTION TO COMPUTER SCIENCE
This course (a) presents the fundamental concepts of
computer programming, (b) introduces the history of
computing, (c) provides an introduction to and preliminary
investigation of the fundamental concepts found throughout
the computer science discipline, and (d) overviews computer
science subdisciplines such as algorithms, artificial
intelligence, computer architecture, human-computer
interaction, language translation, operating systems,
parallel computation, and software engineering. Co: 1044 or
1344.
(3H,3C)
I,II,III.
1114: INTRODUCTION TO PROBLEM SOLVING AND COMPUTING
Introduction to problem solving techniques fundamental
to computer programming. Definition of algorithm.
Algorithmic structures: sequencing, selection, iteration.
Tracing of algorithms. Implementation of algorithms in a
high-level programming language. Essential programming
concepts: data types, input/output, control constructs,
simple functions, arrays.
(2H,2C)
1204: INTERNET AND SYSTEM SOFTWARE
An on-line self-paced tutorial to the Internet and World
Wide Web, Program Development Tools, and common
applications. Introduction to Web publishing, communication,
and searching. Instruction in the use of an integrated
program development environment, debugger, and related
program development tools. Introduction to spreadsheets,
databases, and slide presentation software package.
Partially duplicates 1604.
Co: 1044, 1344.
(1H,1C)
1304: INTRODUCTION TO COMPUTER SCIENCE LABORATORY
A lab course designed to build on prior knowledge of a
high-level programming language and to teach the
fundamentals of structured programming in Pascal.
Expression, statement, and unit level constructs are
discussed; programming assignments are used to reinforce
concepts and to provide the requisite experience to pursue
advanced Computer Science courses. Partially duplicates
CS 1034.
Pre: 1014.
(3L,1C)
I.
1344: PROGRAMMING IN C
A course designed to build on prior knowledge of a high
level programming language and to teach the fundamentals of
structured programming in C. Expression, statement, and
module level constructs are discussed; programming
assignments are used to reinforce concepts and to provide
the requisite experience to pursue advanced Computer Science
courses. Partially duplicates 1044.
Pre: 1014 or 1034.
(1H,1C)
I.
1604: INTRODUCTION TO THE INTERNET
Introduces the concepts, software, data organization and
issues involved with using networked information. Also
covers file formats (as applied in networked hypermedia and
multimedia sound/video documents), local and global
(Internet) network access, electronic mail, transferring
files, network news, the World Wide Web, digital libraries,
on-line public access catalogs and electronic journals,
CD-ROMs and on-line databases, and commercial and other
networks. Partially duplicates 1205. Word processing
ability required.
(1H,1C)
I,II, III.
1704: INTRODUCTION TO DATA STRUCTURES AND SOFTWARE ENGINEERING
Introduces a disciplined approach to problem-solving and
emphasizes the utility of software engineering principles
applied to programming practices. Also stressed are
program design and implementation involving multiple
modules, verification of program correctness, and
abstract data types and objects such as strings, arrays,
sets, linked lists, stacks, queues, and files.
Pre: 1044 or 1344.
Co: 1206, 2304.
(3H,3C)
1705-1706: INTRODUCTION TO OBJECT-ORIENTED DEVELOPMENT
Fundamental concepts of programming from an object-oriented
perspective. Basic software engineering principles and
programming skills taught with a programming language that
supports the object-oriented paradigm. 1705: Simple data
types, control structures, array and string data structures
and algorithms, testing and debugging. 1706: Detailed
coverage of data structures, algorithms, and the methods of
object-oriented design and software construction. Design
and construction of medium-sized object-oriented
programming projects with an emphasis on teamwork and
software engineering.
(2H,2L,3C)
1944: COMPUTER SCIENCE FIRST YEAR SEMINAR
An introduction to academic and career planning for computer
science majors.
Pass/Fail only.
(1H,1C)
2204: UNIX
A hands-on introduction to the modern operating system
UNIX. Introduction to the basic operating systems concepts
employed by UNIX. Students gain experience with basic
system usage, system installation and administration, the
UNIX programming environment, and system utilities.
Duplicates 2304 (UNIX).
Pre: 1704 or ECE 2574.
(2H,2C)
2304: SELF STUDY IN A PROGRAMMING SYSTEM
Guided self-study in a specific programming system, its syntax and applications; based on prior knowledge of the programming process and experience in programming with some high level language; may be taken three times for credit with different system each time; may be taken only twice for CS major or minor credit; systems to be offered may include FORTRAN, COBOL, C, UNIX, LISP. 2304 (UNIX) partially duplicates 1206. Pre: 1034, 1044. (1C) I,II.
2504: INTRODUCTION TO COMPUTER ORGANIZATION
Basic computer organization at the machine language and
assembly language level. Digital logic and circuits. Basic
components of computer hardware and their implementation.
Interaction with the operating system. Alternative computer
organizations and implementations. Partially duplicates
ECPE 2504.
Pre: 2574.
(3H,3C)
I,II.
2604: DATA STRUCTURES AND FILE MANAGEMENT
This course extends the concepts of primitive data types by
teaching the student a classical set of data
structures that pervades both the theoretical and practical
domains of computer science.
Topics discussed include lists, trees, graphs, searching,
sorting, file system organization and access
methods.
Pre: 2204, 2704, MATH 2534.
(3H,3C)
I,II,IV.
2704: OBJECT-ORIENTED SOFTWARE DESIGN AND CONSTRUCTION Introduces the principles of object-oriented programming with emphasis on objects, classes, inheritance, and polymorphism. A programming language such as C++ is used to apply these principles in several application domains. Also stressed are tools and techniques for testing, debugging, and organizing and managing larger programs. Pre: 1704. (3H,3C) I,II,III.
2964: FIELD STUDY
Pass/Fail only. Variable credit course.
2974: INDEPENDENT STUDY
Variable credit course.
2984: SPECIAL STUDY
Variable credit course.
3204: OPERATING SYSTEMS
Covers the concept of a "process", its abstract and physical
representations, its creation, management and scheduling.
Study of: a thread process and how it relates to the parent;
asynchronous concurrently executing processes, shared
memory access, synchronization via semaphones, critical
regions and monitors. Additional topics: deadlock
prevention, avoidance, and detection, including Banker's
Algorithm; memory management strategies including virtual
memory; file representation and storage management; and
device management. UNIX will be the reference system and
the one used for project development and submission.
X-grade allowed.
Pre: 2604, ECE 2504.
(3H,3C)
3304: COMPARATIVE LANGUAGES
This course in programming language constructs emphasizes
the run-time behavior of programs. The languages are
studied from two points of view: (1) the fundamental
elements of languages and their inclusion in commercially
available systems; and, (2) the differences between
implementations of common elements in languages.
Pre: 2604.
(3H,3C)
I,II.
3414 (MATH 3414): NUMERICAL METHODS
Computational methods for numerical solution of non-linear
equations, differential equations, approximations,
iterations, methods of least squares, and other topics.
Partially duplicates Math 4554.
Pre: MATH 2214, MATH 2224, CS 1044.
(3H,3C)
II.
3604: PROFESSIONALISM IN COMPUTING
Studies the ethical, social, and professional concerns of
the computer science field. Covers the social impact of the
computer, implications and effects of computers on society,
and the responsibilities of computer professionals in
directing the emerging technology. The topics are studied
through case studies of reliable, risk-free technologies,
and systems that provide user friendly processes. Specific
studies are augmented by an overview of the history of
computing, interaction with industrial partners and
computing professionals, and attention to the legal and
ethical responsibilities of professionals. This is a
web-supported course, incorporating writing intensive
exercises, making extensive use of active learning
technologies.
Pre: (2604, COMM 2004).
(3H,3C)
3704: INTERMEDIATE SOFTWARE DESIGN AND ENGINEERING Explores the principles of software design in detail, with an emphasis on software engineering aspects. Includes exposure of software life cycle activities including design, coding, testing, debugging, and maintenance, highlighting how design affects these activities. Peer reviews, designing for software reuse, CASE tools, and writing software to specifications are also covered. Pre: 2604. (3H,3C) II.
3724: INTRODUCTION TO HUMAN-COMPUTER INTERACTION
Survey of human-computer interaction concepts, theory, and
practice. Basic components of human-computer interaction.
Interdisciplinary underpinnings. Informed and critical
evaluation of computer-based technology. User-oriented
perspective, rather than system-oriented, with two thrusts:
human (cognitive, social) and technological
(input/output, interactions styles, devices). Design
guidelines, evaluation methods, participatory design,
communication between users and system developers.
Must have prerequisite or senior level standing.
Pre: 2604.
(3H,3C)
I.
4004: DATA AND INFORMATION STRUCTURES
Formal underpinnings of computer science: logic, sets,
relations as they apply to computer science. Principles
of data structures, algorithm analysis, file management,
databases. Not for CS major or minor credit; not for
graduate credit in CSA program.
Pre: 1704.
(3H,3C)
I.
4014: PRINCIPLES OF COMPUTER ARCHITECTURE AND OPERATING SYSTEMS
Principles of computer hardware organization and operating
systems. From individual microprocessor hardware components
to computer network architectures. Operating system
principles, with emphasis on concurrency and
synchronization, deadlock, memory, scheduling and
performance. Not for CS major or minor credit; not for
graduate credit in CSA program.
Pre: 4004.
(3H,3C)
II.
4104: DATA AND ALGORITHM ANALYSIS
This course emphasizes the understanding of data structures
and algorithms from an analytical perspective rather than
from an implementation standpoint. The concepts developed
allow discussion of the efficiency of an algorithm and the
comparison of two or more algorithms with respect to space
and run-time requirements. Analytical methods are used to
describe theoretical bounds as well as practical ones. In
general, this course addresses the constraints that affect
problem solvability.
Pre: 2604, (MATH 3134 or MATH 3034).
(3H,3C)
I.
4114: INTRODUCTION TO FORMAL LANGUAGES AND AUTOMATA THEORY
The course presents a study of formal languages and the
correspondence between language classes and the automata
that recognize them. Formal definitions of grammars and
acceptors, deterministic and nondeterministic systems,
grammar ambiguity, finite state and push-down automata,
and normal forms will be discussed.
Pre: MATH 3134 or MATH 3034.
(3H,3C)
II.
4124: THEORY OF COMPUTATION
Theoretical analysis of the computational process;
fundamental concepts such as abstract programs, classes
of computational machines and their equivalence,
recursive function theory, unsolvable problems, Church's
thesis, Kleene's theorem, program equivalence, and
generability, acceptability, decidability will be
covered.
Pre: MATH 3134 or MATH 3034.
(3H,3C)
I.
4204: COMPUTER GRAPHICS
Hardware and software techniques for the display of
graphical information. 2D and 3D geometry and
transformations, clipping and windowing, software systems.
Interactive graphics, shading, hidden surface elimination,
perspective depth. Modeling and realism.
Pre: 2604, (MATH 3134 or MATH 3034).
(3H,3C)
I.
4214: SIMULATION AND MODELING
Overview of discrete-event digital computer simulation and
modeling. Fundamentals of model development, Monte Carlo
simulation, the life cycle of a simulation study, input and
output data analysis, world views and time control, random
number and variate generation, credibility assessment of
simulation results, simulation languages, applications of
simulation using the General Purpose Simulation System
(GPSS).
Pre: 1704, STAT 4714.
(3H,3C)
I.
4224: PERFORMANCE EVALUATION OF COMPUTER SYSTEMS
Overview of techniques for measuring, improving, and tuning
the performance of computer systems. Procurement, workload
characterization, measurement principles, the representation
of measurement data, software and hardware monitors,
capacity planning, bottleneck detection, system and program
tuning, simulation and analytic models and their
applications, case studies.
Pre: 3204, (STAT 4714 or STAT 4105 or STAT 4705).
(3H,3C)
II.
4234: PARALLEL AND DISTRIBUTED COMPUTATION
Survey of parallel computer architectures, models of
parallel computation, and interconnection networks.
Parallel algorithm development and analysis. Programming
paradigms and languages for parallel computation. Example
applications. Performance measurement and evaluation.
Pre: 3204.
(3H,3C)
I.
4244: INTERNET PROGRAMMING
Key technology underlying the World-Wide Web. Web
architecture, including server design, caching, network
protocols, and related standards (e.g. http, SHTTP, TCP/IP,
MIME). Programming systems (e.g. Java, Active-X, component
models). Security and cryptography. Document
representations (e.g. XML, HTML, PDF, VRML). Legal and
social issues of the Web.
Pre: 3204.
(3H,3C)
I.
4254: COMPUTER NETWORK ARCHITECTURE AND PROGRAMMING Introduction to computer network architecture, and methods for programming network services and applications (e.g. DNS, E-mail and MIME, http, SNMP, multimedia). Wired, wireless, and satellite network architectures. OSI protocol model, with an emphasis on upper layers. Congestion control, quality of service, routing. Internet protocol suite (e.g. IP, TCP, ARP, RARP). Server design (e.g. connectionless, concurrent). Network programming abstractions (e.g. XDR, remote procedure calls, sockets, DCOM). Case studies (e.g. TELNET). Pre: 3204. (3H,3C) II.
4304: COMPILER DESIGN AND IMPLEMENTATION
This course includes the theory, the design, and the
implementation of a large language translator system.
Lexical analysis, syntatic analysis, code generation, and
optimization are emphasized.
Pre: 3204.
(3H,3C)
II.
4414 (MATH 4414): ISSUES IN SCIENTIFIC COMPUTING
Theory and techniques of modern computational mathematics,
computing environments, computational linear algebra,
optimization, approximation, parameter identification,
finite difference and finite element methods and symbolic
computation. Project-oriented course; modeling and analysis
of physical systems using state-of-the-art software and
packaged subroutines.
Pre: MATH 2214, MATH 3214.
(2H,3L,3C)
I,II.
4504 (ECE 4504): COMPUTER ORGANIZATION
Information representation and transfer; instructions and
data access methods; the control unit and microprogramming;
memories; input/output and interrupts; secondary storage;
the von Neumann SISD organization; high level language
machines; the RISC concept; special purpose processors
including operating system, file, text, floating point,
communication, etc. Multicomputers; multiprocessors;
concurrent processing support; Pipeline machines, processor
arrays, database machines; the data flow/data directed
approach; computer networks.
Pre: 3204, ECE 2504.
(3H,3C)
I,II.
4570 (ECE 4570): WIRELESS NETWORKS AND MOBILE SYSTEMS
Multidisciplinary, project-oriented design course that
considers aspects of wireless and mobile systems including
wireless networks and link protocols, mobile networking
including support for the Internet Protocol suite, mobile
middleware, and mobile applications. Students complete
multiple experiments and design projects.
Pre: 4254 or ECE 4564.
(3H,3C)
4604: INTRODUCTION TO DATA BASE MANAGEMENT SYSTEMS
Emphasis on introduction of the basic data base models,
corresponding logical and physical data structures,
comparisons of models, logical data design, and data base
usage. Terminology, historical evolution, relationships,
implementation, data base personnel, future trends,
applications, performance considerations, data integrity.
Senior standing required.
Pre: 2604.
(3H,3C)
II.
4624: MULTIMEDIA, HYPERTEXT AND INFORMATION ACCESS
Introduces the architectures, concepts, data, hardware,
methods, models, software, standards, structures,
technologies, and issues involved with: networked
multimedia (e.g., image, audio, video) information, access
and systems; hypertext and hypermedia; electronic
publishing; virtual reality. Coverage includes text
processing, search, retrieval, browsing, time-based
performance, synchronization, quality of service, video
conferencing and authoring. Senior standing required.
Pre: 2604.
(3H,3C)
II.
4634: DESIGN OF INFORMATION
Survey of the higher-order properties that allow data to
become information, that is, to inform people. The course
focuses on the design of user interface layouts, and on the
design of texts and hypertexts, as well as on the information development process. Senior standing required.
Pre: 2604.
(3H,3C)
4704: SOFTWARE ENGINEERING
Introduction to the basic principles of software
engineering. Issues in the software life cycle. Emphasis
on methods for software design and testing. Project
management and quality assurance. Significant software
project required.
Pre: 3204, 3704.
(2H,3L,3C)
I.
4804: INTRODUCTION TO ARTIFICIAL INTELLIGENCE
Overview of the areas of problem solving, game playing, and
computer vision. Search trees and/or graphs, game trees,
block world vision, syntactic pattern recognition, object
matching, natural language, and robotics. Senior standing
required.
Pre: 2604.
(3H,3C)
I.
4944: SEMINAR
Pass/Fail only.
(1H,1C)
4964: FIELD STUDY
Pass/Fail only. Variable credit course.
4974: INDEPENDENT STUDY
Variable credit course.
4984: SPECIAL STUDY
Variable credit course.
4994: UNDERGRADUATE RESEARCH
Variable credit course.
TOP
|