Computer Science
Head: Calvin J Ribbens
J. Byron Maupin Professor: B. Ryder
Thomas L. Phillips Professor: N. Ramakrishnan
Professors: O. Balci, C. L. Barrett1, D. Bowman, K. W. Cameron, I. R. Chen, S. H. Edwards, W. Feng, E. A. Fox, L. S. Heath, D. G. Kafura, B. Knapp2, W. Lou, M. Marathe1, T. M. Murali, C. L. North, A. Sandu, C. A. Shaffer, D. G. Tatar, and L. T. Watson
Associate Professors: G. Back, A. Butt, Y. Cao, D. Gracanin, C. T. Lu, A. Kelliher2, D. S. McCrickard, A. Onufriev, E. Tilevich, A. Vullikanti1, D. Yao, and L. Zhang
Assistant Professors: B. Huang, C. Jung, D. Lee, K. Luther, N. Meng, B. A. Prakash, S. Raghvendra, A. Rozovskaya, and F. Servant
Associate Professor of Practice: S. Harrison
Assistant Professor of Practice: M. Ellis and G. Kulczycki
Senior Instructors: N. D. Barnette and W. McQuain
Academic Advisors: T. Arthur, L. Bradford, and G. Farris
Professor Emeritus: D. C. S. Allison, J. D. Arthur, R. W. Ehrich, J. A. N. Lee, H. R. Hartson, and R. E. Nance
1 Joint appointment with Biocomplexity Institute
2 Joint appointment with Institute for Creativity, Arts, and Technology
Web: www.cs.vt.edu
E-mail: csundg@cs.vt.edu
The Field of Computer Science
In a contemporary world where every educated person must have some knowledge of computing, 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 careers. The department also offers the M.S. and Ph.D. in computer science (see Graduate Catalog).
As a major, computer science involves far more than just writing 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 and interactions as symbols that can be manipulated by a computer. The field of computer science is characterized by rapid change and entrepreneurship, with new opportunities emerging every year to improve life in diverse areas such as education, communication, science, commerce and entertainment.
Accreditation and Program Objectives
The Bachelor of Science degree in Computer Science is accredited by the Computing Accreditation Commission of ABET, www.abet.org.
Part of the accreditation process is a clear statement of program objectives and desired outcomes for graduates. The objective of the computer science program is to provide majors with a balanced breadth and depth of knowledge in computer science that allows them the choice between continuing their education in graduate school and beginning their professional career, and to excel in either environment.
The following program educational objectives describe what graduates of the Virginia Tech Computer Science program are expected to attain within a few years of graduation. Alumni will have:
- Demonstrated technical expertise by applying computer science knowledge and practice to solve challenging problems, whether in employment, graduate study, or individual pursuits;
- Advanced their skills in communication, teamwork, and professional and ethical behavior;
- Demonstrated leadership in their technical or professional pursuits;
- Engaged in post-graduate learning through graduate studies, professional improvement opportunities, or self-study;
- Served society through professional or personal contribution.
Desired outcomes for graduates are organized into the following six areas:
- Foundations of computing: ability to apply knowledge of mathematics and science to carry out analysis of computer science problems and design appropriate solutions; ability to use techniques, skills, and modern software development tools necessary for computing practice.
- Depth of knowledge: ability to identify, formulate, and solve computer science problems; ability to design a computing system to meet desired needs; ability to apply problem-solving strategies to new, unknown, or open-ended situations in computer science.
- Breadth of knowledge: knowledge and understanding of the impact of the many sub-disciplines of computer science.
- Communication skills: ability to function in teams; ability to use written and oral communication skills effectively.
- Professional ethics: understanding of professional and ethical responsibility.
- Lifelong learning: recognition of the need for and ability to engage in lifelong learning; ability to acquire and use the ever-changing technical knowledge required of computing professionals.
Program Requirements
The curriculum in computer science is designed to provide a broad general computer science background that will prepare a student for a professional career as a computer scientist or to continue study at the graduate level. All majors take a set of foundational courses in software design and development, algorithms, and computer organization at the freshmen and sophomore level. Students at the junior and senior level select one theoretical course, four specialty courses and a capstone course according to their individual interests within the field.
Degree Requirements
The graduation requirements in effect at the time of graduation apply. When choosing the degree requirements information, always choose the year of your expected date of graduation. Requirements for graduation are referred to via university publications as "Checksheets". The number of credit hours required for degree completion varies among curricula. Students must satisfactorily complete all requirements and university obligations for degree completion.
The university reserves the right to modify requirements in a degree program. However, the university will not alter degree requirements less than two years from the expected graduation year unless there is a transition plan for students already in the degree program.
Please visit the University Registrar website at http://registrar.vt.edu/graduation-multi-brief/index1.html for degree requirements.
Opportunities for Majors
The curriculum in computer science is designed to provide a broad general computer science background that will prepare a student for a professional career as a computer scientist or to continue study at the graduate level. All majors take a set of foundational courses in software design and development, algorithms, and computer organization at the freshman and sophomore level. Students at the junior and senior level select one theoretical course, four specialty courses and a capstone course according to their individual interests within the field. In all, a minimum of 44 credit hours of computer science is required.
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 or 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 in an accelerated undergraduate/graduate program. The Cooperative Education Program makes it possible for students to acquire professional experience while pursuing their degree.
The department sponsors chapters of three national computer science organizations: the Association for Computing Machinery (ACM), the national professional organization for computer scientists; the Association for Women in Computing (AWC), which is dedicated to the advancement of women in information technology fields; and Upsilon Pi Epsilon (UPE), the national computer science honor society. Additional recognition of student achievements is made during the annual graduation ceremonies. Among the awards given are the Gorsline award, awarded to a rising senior who has overcome freshman-year academic difficulties and subsequently demonstrated great academic achievement.
Information for Non-Majors
The department offers a Computer Science minor for non-majors seeking a strong background in computer science. The requirements to earn a minor in Computer Science can be found on its checksheet by visiting the University Registrar website at www.registrar.vt.edu/graduation/checksheets/index.html. Minors must meet the same prerequisites as majors. This includes Math 2534 as a co-requisite for CS 2505 and achievement of a "C" (2.0) or better in all CS courses which are prerequisites for subsequent CS courses.
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 compute and file servers for research and instruction in areas such as animation, digital libraries, software engineering, data mining, bioinformatics and networking. The department also operates extensively equipped laboratories for human-computer Interaction, virtual environments and information visualization. These labs include display walls, 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 Curriculum for Liberal Education (see Academics) and toward the degree in computer science.
Satisfactory progress toward the B.S. in Computer Science requires that 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;
- maintain a GPA of 2.0 or better in the major;
- not take any CS course required in the major more than twice, including attempts ending in course withdrawal; and
- not repeat more than 3 CS courses required in the major, including attempts ending in course withdrawal.
Undergraduate Course Descriptions (CS)
1014: INTRODUCTION TO COMPUTATIONAL THINKING
An exploration of basic ideas of computational thinking
focusing on the perspectives, thought processes, and skills
that underlie computational approaches to problem
formulation and problem solving. Application of
computational toolds to investigate complex, large-
scale problems in a variety of knowledge domains.
Examination of the societal and political implications
of computational systems.
(3H,3C)
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)
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)
1064: INTRO TO PROGRAMMING IN PYTHON
Developing computational problem solving skills and software
solutions to a variety of multimedia, scientific, and
engineering problems using the Python programming
language. Statement sequencing, conditional program
flow, iteration, functional decomposition, and recursion.
Simple numeric data types, strings, lists, list
comprehensions, sets, and dictionaries. Input/output
of file-based data, content obtained from the web, and
manipulation of digital images. Basic object-oriented
concepts, classes, objects, and methods.
(3H,3C)
1114: INTRODUCTION TO SOFTWARE DESIGN
Fundamental concepts of programming from an object-oriented
perspective. Basic software engineering principles and
programming skills in a programming language that supports
the object-oriented paradigm. Simple data types, control
structures, array and string data structures, basic
algorithms, testing and debugging. A basic model of the
computer as an abstract machine. Modeling and
problem-solving skills applicable to programming at this
level. Partially duplicates 1054, 1124, and 1705.
(2H,2L,3C)
1124: INTRODUCTION TO MEDIA COMPUTATION
This course teaches fundamental manipulations of digital
media as an introduction to computer science. Basic
software engineering principles and programming skills are
taught with a programming language that supports
object-oriented programming. Simple data types, control
structures, array and string data structures and
algorithms, testing and debugging. Partially duplicates
1054 and 1705.
(2H,2L,3C)
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. Word processing ability required.
(1H,1C)
1944: COMPUTER SCIENCE FIRST YEAR SEMINAR
An introduction to academic and career planning for computer
science majors.
Pass/Fail only.
(1H,1C)
2104: INTRODUCTION TO PROBLEM SOLVING IN COMPUTER SCIENCE
This course introduces the student to a broad range of
heuristics for solving problems in a range of settings that
are relevant to computation. Emphasis on problem-solving
techniques that aid programmers and computer scientists.
Heuristics for solving problems "in the small" (classical
math and word problems), generating potential solutions to
"real-life" problems encountered in the profession, problem
solving through computation, and problem solving in teams.
Pre: MATH 1205 or MATH 1225 or MATH 1526.
(3H,3C)
2114: SOFTWARE DESIGN AND DATA STRUCTURES
A programming-intensive exploration of software design
concepts and implementation techniques. Builds on knowledge
of fundamental object-oriented programming. Advanced
object-oriented software design, algorithm development and
analysis, and classic data structures. Includes a
team-based, semester-long software project.
A grade of C or better is required in CS pre-requisite 1114
or 1124.
Pre: 1114 or 1124.
(2H,2L,3C)
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.
A grade of C or better required in CS prerequisite 1706.
Pre: 2114.
(1C)
2505-2506: INTRODUCTION TO COMPUTER ORGANIZATION
An introduction to the design and operation of digital
computers. Works up from the logic gate level to
combinational and sequential circuits, information
representation, computer arithmetic, arithmetic/logic units,
control unit design, basic computer organization,
relationships between high level programming languages
and instruction set architectures.
A grade of C or better is required in CS pre-requisite 2114.
Pre: 2114 for 2505; 2505, 2114, MATH 2534 for 2506.
Co: MATH 2534 for 2505.
(3H,3C)
2964: FIELD STUDY
Pass/Fail only. Variable credit course.
2974: INDEPENDENT STUDY
Variable credit course.
2984: SPECIAL STUDY
Variable credit course.
3114: DATA STRUCTURES AND ALGORITHMS
Advanced data structures and analysis of data structure and
algorithm performance. Sorting, searching, hashing, and
advanced tree structures and algorithms. File system
organization and access methods. Course projects require
advanced problem-solving, design, and implementation skills.
A grade of C or better is required in CS prerequisites
2114 and 2505.
Pre: 2114, 2505, MATH 2534.
(3H,3C)
3214: COMPUTER SYSTEMS
Introduction to computer systems as they are relevant to
application programmers today, with emphasis on operating
system principles. Operating system design and
architectures; processes; threads, synchronization
techniques, deadlock; CPU scheduling; system call
interfaces, system level I/O and file management; shell
programming; separate compilation, loading and linking;
inter-process communication (IPC); virtual and physical
memory management and garbage collection; network
protocols and programming; virtualization; performance
analysis and optimization.
A grade of C or better is required in CS pre-requisites 2506
and 2114.
Pre: 2506, 2114.
(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.
A grade of C or better required in CS prerequisite 3114.
Pre: 3114.
(3H,3C)
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.
A grade of C or better required in CS prerequisite 1044
or 1705 or 1114 or 1124.
Pre: (1044 or 1705 or 1114 or 1124), (MATH 2214 or MATH 2214H), (MATH 2224 or MATH 2224H or MATH 2204 or MATH 2204H).
(3H,3C)
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. A grade of C or better required in CS
prerequisite 3114.
Pre: 3114, COMM 2004.
(3H,3C)
3634 (CMDA 3634): COMPUTER SCIENCE FOUNDATIONS FOR COMPUTATIONAL MODELING & DATA ANALYTICS
Survey of computer science concepts and tools that enable
computational science and data analytics. Data structure
design and implementation. Analysis of data structure and
algorithm performance. Introduction to high-performance
computer architectures and parallel computation. Basic
operating systems concepts that influence the performance
of large-scale computational modeling and data analytics.
Software development and software tools for
computational modeling. Not for CS major credit.
Pre: 2114.
(3H,3C)
3654 (CMDA 3654) (STAT 3654): INTRODUCTORY DATA ANALYTICS & VISUALIZATION
Basic principles and techniques in data analytics; methods
for the collection of, storing, accessing, and manipulating
standard-size and large datasets; data visualization; and
identifying sources of bias.
Pre: (1114 or 1044 or 1054 or 1064), (MATH 2224 or MATH 2224H or MATH 2204 or MATH 2204H or MATH 2406H or CMDA 2005), (STAT 3006 or STAT 4705 or STAT 4714 or CMDA 2006),
(STAT 3104 or STAT 4705 or STAT 4714 or CMDA 2006).
(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 lifecycle 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. A grade of C or
better required in CS prerequisite 3114.
Pre: 3114.
(3H,3C)
3714: MOBILE SOFTWARE DEVELOPMENT
Technologies and concepts underlying software development
for mobile devices (handheld computers). Mobile computing
platforms, including architecture, operating system, and
programming environment. Software design patterns and
structuring for mobile applications. Network-centric mobile
software development. Data persistence. Programming for
mobile device components such as cameras, recorders,
accelerometer, gyroscope and antennas. Location-aware
software development. A grade of C or better required
in CS prerequisite.
Pre: 2114.
(3H,3C)
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.
A grade of C or better required in CS prerequisite
2114.
Pre: 2114.
(3H,3C)
3744: INTRO GUI PROGRAMMING/GRAPHICS
Design and implementation of object-oriented graphical user
interfaces (GUI) and two-dimensional computer graphics
systems. Implementation methodologies including callbacks,
handlers, event listeners, design patterns, layout managers,
and architectural models. Mathematical foundations of
computer graphics applied to fundamental algorithms for
clipping, scan conversion, affine and convex linear
transformations, projections, viewing, structuring, and
modeling.
A grade of C or better is required in CS pre-requisite 2114.
Pre: 2114, (MATH 1114 or MATH 1114H or MATH 2114 or MATH 2114H), (MATH 1224 or MATH 1224H or MATH 2204 or MATH 2204H).
(3H,3C)
3754: CLOUD SOFTWARE DEVELOPMENT
Fundamentals of cloud software development, including design
patterns, application programming interfaces, and underlying
middleware technologies. Development of distributed
multi-tiered enterprise software applications that run on a
server computer and are accessed using a web browser over
the Internet on a network-connected computer such as
desktop, laptop, or handheld computer (tablet, smartphone,
or mobile device. A grade of C or better is required in
prerequisite.
Pre: 2114.
(3H,3C)
3824: INTRODUCTION TO COMPUTATIONAL BIOLOGY AND BIOINFORMATICS
Introduction to computational biology and bioinformatics
(CBB) through hands-on learning experiences. Emphasis
on problem solving in CBB. Breadth of topics covering
structural bioinformatics; modeling and simulation of
biological networks; computational sequence analysis;
algorithms for reconstructing phylogenies; computational
systems biology; and data mining algorithms.
Pre-requisite: Grade of C or better in CS 3114.
Pre: 3114.
(3H,3C)
3984: SPECIAL STUDY
Variable credit course.
4104: DATA AND ALGORITHM ANALYSIS
Data structures and algorithms from an analytical
perspective. Theoretical analysis of algorithm efficiency.
Comparing algorithms with respect to space and run-time
requirements. Analytical methods for describing theoretical
and practical bounds on performance. Constraints affecting
problem solvability. A grade of C or better is required in
CS prerequisite 3114.
Pre: 3114, (MATH 3034 or MATH 3134).
(3H,3C)
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)
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)
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. A grade of C
or better required in CS prerequisite 3114 and 3744.
Pre: 3114, 3744.
(3H,3C)
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). A grade of C or better required in CS
prerequisite 2114.
Pre: 2114.
(3H,3C)
4234: PARALLEL 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.
A grade of C or better required in CS prerequisite 3214.
Pre: 3214.
(3H,3C)
4244: INTERNET SOFTWARE DEVELOPMENT
Key technology underlying the World-Wide Web. Web
architecture, including client and server design, network
protocols, and related standards. Static and dynamic
content, caching, state management, fault tolerance, error
handling. Programming systems and abstractions, e.g.,
sockets, remote procedures, Web services, frameworks and
component models. Document representations and processing.
Security. Entrepreneurial issues and emerging technologies.
A grade of C or better required in CS 3214 prerequisite.
Pre: 3214.
(3H,3C)
4254: COMPUTER NETWORK ARCHITECTURE AND PROGRAMMING
Introduction to computer network architecture, and methods
for programming network services and applications (e.g. DNS,
Email 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). A grade of C or better required in CS
prerequisite 3214.
Pre: 3214.
(3H,3C)
4264: PRINCIPLES OF COMPUTER SECURITY
Survey of computer problems and fundamental computer
security design principles and models for software
systems. Cryptographic models and methods. Modern cyber
security techniques for robust computer operating systems,
software, web applications, large-scale networks and data
protection. Privacy models and techniques. Contemporary
computer and network security examples. A grade of
C or better is required in prerequisites.
Pre: 3214 or (ECE 2500, ECE 3574).
(3H,3C)
4284: SYSTEMS & NETWORKING CAPSTONE
Advanced topics in computer systems & networking, e.g.
distributed and parallel processing, emerging architectures,
novel systems management & networking design, fault-
tolerance, and robust and secure data management. Team-
based approach to solving open-ended computer systems &
networking problems. Designing, implementing and
documenting advanced computer/networking systems.
A grade of C or better required in CS prerequisites.
Pre: 3114, 3214.
(3H,3C)
4304: COMPILER DESIGN AND IMPLEMENTATION
This course includes the theory, the design, and the
implementation of a large language translator system.
Lexical analysis, syntactic analysis, code generation, and
optimization are emphasized. A grade of C or better
required in CS prerequisite 3214.
Pre: 3214.
(3H,3C)
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 or MATH 2214H or MATH 2406H or CMDA 2006), MATH 3214, (CS 2114 or MATH 3054).
(2H,3L,3C)
4504 (ECE 4504): COMPUTER ORGANIZATION
Overview of the structure, elements and analysis of modern
enterprise computers. Performance evaluation of commercial
computing. Past and emerging technology trends. Impact of
parallelism at multiple levels of computer architecture.
Memory and storage. Fundamental computer system
descriptions, Amdahl's Law, Flynn's Taxonomy. A grade
of C or better required in prerequisites.
Pre: ECE 2504 or CS 3214.
(3H,3C)
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. A grade of C or better
required in CS prerequisite 3114.
Pre: 3114.
(3H,3C)
4624: MULTIMEDIA, HYPERTEXT AND INFORMATION ACCESS
Introduces the architectures, concepts, data, hardware,
methods, models, software, standards, structures,
technologies, and issues involved with: networked
multimedia information and systems, hypertext and
hypermedia, networked information videoconferencing,
authoring/electronic publishing, and information access.
Coverage includes how to capture, represent, link, store,
compress, browse, search, retrieve, manipulate, interact
with, synchronize, perform, and present: text, drawings,
still images, animations, audio, video, and their
combinations (including in digital libraries).
Pre: 3114.
(3H,3C)
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 analysis of user needs, user comprehension
and local semantics; the design of information organization;
and the design of information display appropriate to use and
setting. A grade of C or better is required in CS
prerequisites 3114 and 3724.
Pre: 3114, 3724.
(3H,3C)
4644: CREATIVE COMPUTING STUDIO
Capstone computer science course at the intersection of arts
and technology. Intensive immersion in different approaches
to digital arts such as game design, interactive art,
digital music, and immersive virtual reality. Students work
in teams to conduct an end-to-end integrative design
project.
A grade of C or better is required in prerequisite CS
3724.
Pre: 3724.
(3H,3C)
4654 (CMDA 4654) (STAT 4654): INTERMEDIATE DATA ANALYTICS AND MACHINE LEARNING
A technical analytics course. Covers supervised and
unsupervised learning strategies, including regression,
generalized linear models, regulations, dimension reduction
methods, tree-based methods for classification, and
clustering. Upper-level analytical methods shown in
practice: e.g., advanced naive Bayes and neural
networks.
Pre: STAT 3654 or CMDA 3654 or CS 3654.
(3H,3C)
4704: SOFTWARE ENGINEERING CAPSTONE
Senior project course integrating software engineering
knowledge and skills acquired in previous courses. Team-
based approach to problem formulation, requirements
engineering, architecture, design, implementation,
integration, documentation and delivery of software system
that solves a real-world problem. Pre: A grade of C or
better in CS 3704.
Pre: 3704.
(3H,3C)
4784: HUMAN-COMPUTER INTERACTION CAPSTONE
Advanced, project-based course in Human-Computer
Interaction. Team-based, end-to-end, integrative interface
design project drawn from area of expertise in the
department, e.g., virtual reality, augmented reality,
embodied cognition, visualization, semiotic engineering,
game design, personal information management, mobile
computing, design tools, educational technology, and
digital democracy.
Pre-requisite: Senior Standing required.
A grade of C or better is required in CS pre-requisite 3724
and 3744
Pre: 3724, 3744.
(3H,3C)
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. A grade of C or better required in CS
prerequisite 3114.
Pre: 3114.
(3H,3C)
4824 (ECE 4424): MACHINE LEARNING
Algorithms and principles involved in machine learning;
focus on perception problems arising in computer vision,
natural language processing and robotics; fundamentals
of representing uncertainty, learning from data, supervised
learning, ensemble methods, unsupervised learning,
structured models, learning theory and reinforcement
learning; design and analysis of machine perception
systems; design and implementation of a technical project
applied to real-world datasets (images, text, robotics). A
grade of C- or better in prerequisites.
Pre: ECE 2574, (STAT 4604 or STAT 4705 or STAT 4714).
(3H,3C)
4884: COMPUTATIONAL BIOLOGY & BIOINFORMATICS CAPSTONE
Advanced topics in computational biology and bioinformatics
(CBB). Team-based approach to solving open-ended problems
in CBB. Projects drawn from areas of expertise in the
department, e.g., algorithms for CBB, computational models
for biological systems, analysis of structure-function
relationships in biomolecules, genomic data analysis and
data mining, computational genomics, systems biology.
Design, implementation, documentation and presentation of
solutions. A grade of C or better required in CS
prerequisite 3824.
Pre: 3824.
(3H,3C)
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.