Undergraduate Computer Science Courses
CSCI 12. Introduction to Computers and Computation.
2 lec., 2 lab. hr.; 3 cr.
Concepts of thinking computationally and the technical
tools to function effectively in the digitally-connected
world. Hands-on introduction to computers, computation,
the Internet, and the basics of computer hardware and
software. Students will have experience during the
instructed computer lab with a number of software
environments including an operating system, a word
processor, a presentation tool, a spreadsheet, and a
database system. The course will focus on problem
solving and programming within the context of a wide
range of applications, and prepare students for
further study in a variety of majors and minors.
In addition, students will acquire the skills needed to
learn other similar tools on their own.
CSCI 48. Spreadsheet Programming.
2 lec., 2 lab. hr.; 3 cr.
Prereq: one Math course numbered 110 or higher.
In-depth introduction to spreadsheets as an effective tool for
the organization, processing, and analysis of numerical information
in such areas as business, finance, engineering, natural and social
sciences. Topics include: basic cell operation, text manipulation,
formulas, functions, arrays, circular references, charting
techniques, pivot tables, conditional formatting, and VBA programming.
CSCI 80. Problem Solving with Computers.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI
12.
An introduction to computer science
through problem solving, focusing on the
methodology of problem solving rather than
specific hardware or software tools. Students
will learn how to select and use specific
software tools advantageously. Lab
exercises will exemplify the problem-solving
methodology.
CSCI 81. Introduction to Web Programming.
3 hr.; 3 cr.
Prereq.: CSCI 80.
Introduction
to computer networks from a user's perspective
and the World Wide. The course
will provide hands-on experience with electronic
mail, file transfer, Telnet, and Web
browsers, including the creation of Web
pages using HTML, JavaScript, and CGI
scripts; image preparation and editing; scanning
and OCR.
CSCI 82. Multimedia Fundamentals and
Applications.
3 hr.; 3 cr.
Prereq.: CSCI 80.
A comprehensive introduction to the fundamental
concepts, techniques, and tools that
underlie the use of multimedia in scientific
and business applications. Major topics
include the principles of image, sound, and
video synthesis; software and industry standards;
and typical applications.
CSCI 84. Models of Computation.
3 hr.;
3 cr.
Prereq.: MATH 122.
This course is
intended to develop the ability to solve
problems using differing models of computation.
It will develop reasoning ability by
creating a computing environment with very
few rules which will then be used to
develop algorithms within the scope of the
model of computation. These environments
will be models of actual computing environments.
The nature of what an algorithm is
will be developed.
CSCI 85. Database Application Programming.
3 hr.; 3 cr.
Prereq.: CSCI 80.
A continuation
of CSCI 80. Students will learn
to program databases using SQL. Microsoft
Access integrated with Visual Basic. In
addition, object-oriented database programming
such as Oracle and Jasmine will be
covered.
CSCI 86. Science, Computing Tools, and
Instrumentation.
4 hr.; 3 cr.
Prereq.: MATH 122.
Science and society; principles for scientific
exploration; scientific visualization
and mathematical analysis: concepts and
techniques; computing tools for visualization
and computational analysis; Internet
tools for science exploration; concept of
integrated computing environment for scientific
study and collaboration; PC-instrumentation.
Applications to social science,
biochemistry, psychology, physical, chemical,
and earth science.
CSCI 87. Introduction to Scientific Computing.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 12.
Concepts and principles of algorithmic problem-solving.
Fundamental skills to program and use computational tools
for modeling, numerical simulation, data analysis, and
visualization with applications in engineering,
mathematics, medicine, natural and social sciences.
CSCI 88. Advanced Productivity Tools
for Business.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 12
Advanced training to extend the students' knowledge
of widely used office productivity enhancement tools
to "expert level" in such areas as word processing,
spreadsheet, database, presentation graphics, and
electronic messaging. For each of the software packages
the course covers: formatting data and content,
organizing and analyzing content, formatting documents,
collaboration tools, and customization via menus,
macros, and specialized settings. Projects are taken
from business as well as scientific applications.
Students who master the material in this course should
be able to pass industry standard examinations for
advanced certification, such as Microsoft Certified
Office Specialist.
CSCI 90. Topics in Computing.
3 hr.; 3 cr.
Topics in computer
programming and applications at a level
appropriate for students who are not majoring
in computer science. Topics and prerequisites
will be announced at registration
time. The course may be repeated for credit
providing the topic is different, and may not
be applied toward the major in computer
science.
CSCI 100. Information and Intelligence.
3 hr.; 3 cr.
Examination of some of the technological,
philosophical, and mathematical underpinnings of
the "information age." Distinctions among
information, meaning, and data. Design of
intelligent agents. Diagnostic and causal reasoning.
Readings from the literature of information theory
and artificial intelligence. Written assignments,
plus completion of a project to design and/or
construct an information-actuated agent.
CSCI 111. Introduction to Algorithmic Problem-Solving.
2 lec., 2 lab. hr.; 3 cr.
Introduction to the principles of algorithmic analysis and computational implementation. Topics include implementation methodologies, including choice and use of data types, objects, classes, and methods; control structures; basic data structures including arrays; procedures and functions; parameters and arguments; scope and lifetime of variables; input and output; Written documentation describing algorithms and identification and correction of algorithmic implementations.
CSCI 112. Introduction to Algorithmic Problem-Solving in Java.
2 lec., 2 lab. hr.; 3 cr.
Prereq.: MATH 151 or equivalent, and open only to students in the
TIME 2000
program (consult the Department of Secondary Education for details).
Introduction to the principles and practice of programming. Topics include
primitive data types; concepts of object, class, and methods; control
structures; arrays; procedures and fuctions; paramtr passing; scope and
lifetime of variabls; input and output; documentation. (This course is equivalent to CSCI 111)
CSCI 120. Discrete Mathematics for Finance.
3 hr.; 3 cr.
Prereq.: Math 122 or equivalent.
Induction. Counting in finite sets; Binomial Theorem.
Asymptotic order of functions; exponential, polynomial
and logarithmic relationships. Algorithm as a functional
input-output map; specification, elementary analysis of
running time. Recursion in functions, algorithms, and trees.
Recurrences in modeling and algorithm analysis; linear
recurrences; Master Theorem. All topics will center around
appropriate problem solving exercises. Not open to CSCI
majors and minors.
CSCI 211. Object-Oriented Programming in C++.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 111.
Object-oriented algorithmic problem
solving in C++, with attention to general as
well as language-specific issues including
pointer and pointer arithmetic; linked lists;
memory management; recursion; operator
overloading; inheritance and polymorphism;
stream and file I/O; exception handling;
templates and STL; applications of simple
data structures; testing and debugging techniques.
CSCI 212. Object-Oriented Programming in Java.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 111.
Object-oriented algorithmic problem
solving in Java, with attention to general as
well as language-specific issues including
applications, event-driven programming;
elements of graphical user interfaces
(GUIs); linked lists; recursion; inheritance
and polymorphism; file I/O; exception handling;
packages; applications of simple data
structures; applets; concept of multithreading;
testing and debugging.
CSCI 220. Discrete Structures.
3 lec. hr.; 3 cr.
Prereq.: MATH 120 and 151 or 141; CSCI 111.
Algorithms, recursion, recurrences,
asymptotics, relations, graphs and
trees, applications.
CSCI 240. Computer Organization and
Assembly Language.
3 hr.; 3 cr.
Prereq.: CSCI 111.
Principles of computer
design and implementation. Instruction set
architecture and register-transfer level execution;
storage formats; binary data encoding;
bus structures; assembly language
programming.
CSCI 313. Data Structures.
3 hr.; 3 cr.
Prereq.: CSCI 211, 212, and 220.
Fundamental
data structures and their implementations:
stacks, queues, trees (binary and
AVL), heaps, graphs, hash tables. Searching
and sorting algorithms. Runtime analysis.
Examples of problem-solving using greedy algorithm,
divide-and-conquer, and backtracking.
CSCI 314. Data Structures for Cross-Disciplinary Minors.
3 hr.; 3 cr.
Prereq.: CSCI 120 and CSCI 212.
Open only to students enrolled in a cross-disciplinary
minor sponsored by the Computer Science Department.
Fundamental data structures and their implementations:
stacks, queues, trees (binary and AVL), heaps, graphs,
hash tables. Searching and sorting algorithms.
Runtime analysis. Examples of problem-solving using
greedy algorithm, divide-and-conquer, and backtracking.
CSCI 316. Principles of Programming Languages.
3 lec. hr.; 3 cr.
Prereq.: CSCI 220, 240, 313, and 320.
Principles and implementation
of programming languages. Topics
include: the procedural, object-oriented,
functional, and logic programming paradigms;
syntax (BNF, expression grammars,
operator precedence and associativity); variables
(scope, storage bindings, and lifetime);
data types; control structures;
function call and return (activation records
and parameter passing); formal semantics.
Programming assignments.
CSCI 317. Compilers.
3 hr.; 3 cr.
Prereq.: CSCI 316.
Formal definitions of programming
languages: introduction to compiler
construction including lexical, syntactic,
and semantic analysis, code generation, and
optimization. Students will implement portions
of a compiler for some structured language.
CSCI 320. Theory of Computation.
3 hr.; 3 cr.
Prereq.: CSCI 111 and 220.
Finite state
machines, regular languages, regular
expressions, grammars, context-free languages,
pushdown automata, Turing
machines, recursive sets, recursively enumerable
sets, reductions, Halting problem,
diagonalization.
CSCI 323. Design and Analysis of Algorithms.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Advanced data structures: B-trees,
graphs, hash-tables. Problem-solving strategies
including divide-and-conquer, backtracking,
dynamic programming, and
greedy algorithms. Advanced graph algorithms.
Time complexity analysis. NP-complete
problems. Applications to sorting,
searching, strings, graphs. Programming
projects.
CSCI 325. Machine Learning.
3 hr.; 3 cr.
Prereq.: CSCI 313 and MATH 231.
Foundations of machine learning, linear regression, logistic
regression (classification), nonlinear transformation,
regularization, validation, random forest, support-vector
machine, neural network, deep learning, Unsupervised
learning (K-Means), dimensionality reduction (PCA),
machine learning pipeline. Programming projects.
CSCI 328. Algorithms for Big Data.
3 hr.; 3 cr.
Prereq: CSCI 323 and MATH 243.
Hashing, Bloom filters and applications, Cuckoo filters,
quotient filters, streaming algorithms, heavy hitters and
count-min sketch, other sketching algorithms, external memory
algorithms and I/O efficiency, dimensionality reduction,
coresets, MAPReduce. Programming projects.
CSCI 331. Database Systems.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
ER modeling;
functional dependencies and relational
design; file organization and indexing; relational
algebra and calculi as query languages;
SQL; transactions, concurrency and
recovery; query processing. Programming
projects.
CSCI 332. Object-Oriented Databases.
3 hr.; 3 cr.
Prereq.: CSCI 331.
Review of
basic database components and architecture;
comparisons of OO databases with relational
databases; modeling languages and
methods, data definition languages; schema
design methodology; the role of inheritance,
object identity, and object sharing in
OODBs; file structures and indexes for
OODBs; transaction processing; concurrency
control and recovery; development of
database applications using a commercial
OODB system.
CSCI 334. Data Mining and Warehousing.
3 hr.; 3 cr.
Prereq.: MATH 241 and CSCI 313.
Data mining and data warehousing:
data warehouse basics; concept of patterns
and visualization; information theory; information
and statistics linkage; temporal-spatial
data; change point detection; statistical
association patterns; pattern inference and
model discovery; Bayesian networks; pattern
ordering inference; selected case study.
CSCI 335. Information Organization and Retrieval.
3 hr.; 3 cr.
Prereq.: CSCI 331.
Concepts of information retrieval: keywords
and Boolean retrieval; text processing, automatic
indexing, term weighting, similarity
measures; retrieval models: vector model,
probabilistic model; extended Boolean systems:
fuzzy set, p-norm models; linguistic
model; extensions and AI techniques: learning
and relevance feedback; term dependence;
document and term clustering;
network approaches; linguistic analysis and
knowledge representation. Implementation:
inverted files; efficiency issues for largescale
systems; integrating database and
information retrieval.
CSCI 340. Operating Systems Principles.
3 hr.; 3 cr.
Prereq.: CSCI 220, 240, and 313.
Principles of the design and implementation
of operating systems. Concurrency, multithreading,
synchronization, CPU scheduling,
interrupt handling, deadlocks, memory
management, secondary storage management,
file systems. Programming projects to
illustrate portions of an operating system.
CSCI 342. Operating-System Programming.
3 hr.; 3 cr.
A study of the internal structures
of a particular operating system such as
UNIX, or another chosen by the department.
(The operating system to be studied is
announced at registration time.) Projects are
assigned that involve system calls, use of
the I/O and file systems, memory management,
and process communication and
scheduling. Projects may also involve
developing new or replacement modules for
the operating system, such as the command
interpreter or a device driver. A student may
receive credit for this course only once.
CSCI 343. Computer Architecture.
3 hr.; 3 cr.
Prereq.: CSCI 240.
Instruction set architectures,
including RISC, CISC, stack, and
VLIW architectures. The memory hierarchy,
including cache design and performance
issues, shared memory organizations, and
bus structures. Models of parallel computing,
including multiprocessors, multicomputers,
multivector, SIMD, PRAM, and
MIMD architectures. Pipelining models,
including clocking and timing, instruction
pipeline design, arithmetic pipeline design,
and superscalar pipelining.
CSCI 344. Distributed Systems.
3 hr.; 3 cr.
Prereq.: CSCI 340.
Issues in the
implementation of computer systems using
multiple processors linked through a communication
network. Communication in distributed
systems including layered protocols
and the client-server model; synchronization
of distributed processes and process
threads.
CSCI 346. Cloud Computing.
3 hr.; 3 cr.
Prereq.: CSCI 313 and MATH 231.
Overview of cloud computing, data centers, virtualization,
cloud systems for big data storage & processing, cloud
systems for machine learning, resource scheduling and
resource management in the cloud, consistency, and fault
tolerance. Programming projects.
CSCI 348. Data Communications.
3 hr.; 3 cr.
Prereq.: CSCI 343.
Computer communications
and networks; carriers, media, interfaces
(RS 232, RS 422, CCITT); circuit
types, data codes, synchronous and asynchronous
transmission; protocols (OSI,
TCP/IP); modems, multiplexors, and other
network hardware; error correction and
encryption; voice and data switching: local
area networks, ISDN, packet switching;
issues in the architecture, design, and management
of networks.
CSCI 352. Cryptography.
3 hr.; 3 cr.
Prereq.: CSCI 313.
An introduction to cryptographic
practices, concepts, and protocols.
Topics include the mathematical foundations
for cryptography, public key methods
(e.g., RSA and El Gamal), block ciphers
(e.g., DES and Rijndael), key agreement
architectures (Diffie-Hellman), linear feedback
shift registers and stream ciphers (e.g.,
A5 for GSM encryption), signatures and
hash functions, (pseudo) random number
generators, and how to break the ENIGMA
machine.
CSCI 355. Internet and Web Technologies.
3 hr.; 3 cr.
Prereq.: CSCI 313.
Internet protocol
stack, analysis of representative protocols;
Internet applications: client-server
architecture, popular Internet application
protocols, Internet application design, client
side programming, server side programming,
Web application and Web site design;
programming projects.
CSCI 361. Numerical Methods.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313; Math 152 and 231.
Error analysis, propagation of input and machine errors, interpolation,
functional approximation, numerical differentiation, integration and
summation, numerical solution of systems of linear equations and
systems of nonlinear equations, numerical solutions of differential equations.
CSCI 363. Artificial Intelligence.
3 hr.; 3 cr.
Prereq.: CSCI 316.
Principles of artificial
intelligence. Topics include logic and
deduction; resolution theorem proving;
space search and game playing; language
parsing; image understanding; machine
learning and expert systems. Programming
projects in LISP, PROLOG, or related languages.
CSCI 365. Computational Finance.
3 hr.; 3 cr.
Prereq.: CSCI 313 and MATH 241; or CSCI 314 and
ECON 249 for Finance students.
Valuation of derivatives as a family of algorithmic
computations, with analysis of the underlying financial
model and hands-on implementation practice. Time value of money,
arbitrage based pricing, risk-free portfolio, hedging,
fundamentals of capital asset pricing model, collateralization,
marking to market, margining, market risk, credit risk, netting,
modeling stochastic behavior with Weiner rocesses. It's Lemma,
the Black-Scholes-Merton model, volatility smilies, path-dependent
and exotic derivatives.
CSCI 366. Natural Language Processing.
3 hr.; 3 cr.
Prereq.: CSCI 313.
Language models, part-of-speech tagging, syntactic parsing,
machine translation, supervised learning, naïve bayes, logistic
regression, word embeddings, neural networks. Programming projects.
CSCI 367. Digital Image Processing.
3 hr.; 3 cr.
Prereq.: CSCI 313 and MATH 231.
Digital image representation, intensity transformation,
filtering in the spatial domain, filtering in the frequency domain,
geometric transformation, image registration, morphological
processing, segmentation, feature extraction, Image pattern
recognition. Programming projects.
CSCI 368. Computer Graphics.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Introduction to the
hardware and software components of graphics systems,
representations
of 2D and 3D primitives, geometric and viewing transformations,
techniques for interaction, color models and shading methods,
algorithms for clipping, hidden surface removal,
and scan-conversion.
Programming projects using a graphics API to
demonstrate the process
of computerized image synthesis.
CSCI 370. Software Engineering.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Principles of software engineering including
the software life cycle, reliability, maintenance,
requirements and specifications,
design, implementation, and testing. Oral
and written presentations of the software
design. Implementation of a large programming
project using currently-available software
engineering tools.
CSCI 381. Special Topics in Computer Science.
3 hr.; 3 cr. Prereq.: Permission of the department. May be repeated for credit when topics differ.
CSCI 383. VT Computer Science Synthesis.
3 hr.; 3 cr. Prereq.: Permission of instructor. May be repeated for credit when topics differ.
An examination of computational approaches to problem solving
in a variety of contexts, either within the Computer Science
discipline or between Computer Science and other disciplines.
Students will be given an understanding of how knowledge is
developed and managed using digital technologies in a various
disciplines. How the course implements this structure will
vary across offerings, but typically will involve determining
what kinds of information form the basis for a discipline,
a survey of techniques for storing and manipulating that
information, and a project that either gives the student
experience working with actual datasets from the discipline
or investigation into alternate ways of gathering, storing, and
accessing that information.
CSCI 385. VT Computer Science Capstone.
3 hr.; 3 cr. Prereq.: Open to upper division computer science majors.
May be repeated for credit when project themes differ.
Each offering of this course will have a pre-announced theme that
will serve as the basis for student projects that draw on one or
more areas of computer science: typically, knowledge developed in
previous courses in the major. Students will have the option of
working in small groups, but may work individually instead.
Each project group will present their initial project plan and
final project summary to the class, with constructive critiques
of others' projects an essential component of the course structure.
No more than 3 credits of CSCI 390-396
may be used as an elective
for the computer science major or minor.
CSCI 390. Honors Readings in Computer Science.
3 hr.; 3 cr.
Prereq.: Junior or senior standing and permission of the instructor.
Students will study and report on survey
and research papers dealing with various
current topics in computer science selected
by the instructor. Topics for each offering of
the course will be announced at registration time.
CSCI 391. Honors Problems in Computer
Science.
CSCI 391.1-391.3, 1-3 hr.; 1-3 cr.
Prereq.: Permission of the department.
Open to students majoring in computer science
who, in the opinion of the department, are
capable of carrying out the work of the
course. Each student works on a research
problem under the supervision of a member
of the faculty.
CSCI 393. Honors Thesis.
3 hr.; 3 cr.
Prereq.: Junior or senior standing and approval
of the department's Honors and Awards
Committee.
The student will engage in significant
research under the supervision of a
faculty mentor and a thesis committee consisting
of two other faculty members. The
thesis proposal and committee must be
approved by the department's Honors and
Awards Committee. Upon completion of the
research paper, an oral presentation of the
results, open to the public, will be given.
With the approval of the mentor, thesis
committee, and the department's Honors
and Awards Committee, the course may be
repeated once for credit when the level of
the student's work warrants a full year of
effort.
CSCI 395. Research Projects.
CSCI 395.1-395.3, 1-3 hr.; 1-3 cr.
Prereq.: Permission of the department.
Open to majors and nonmajors who, in the opinion of the
department, are capable of carrying out an
independent project of mutual interest under
the supervision of a member of the faculty.
CSCI 398. Internship.
CSCI 398.1, 45 hr.; 1 cr.,
CSCI 398.2, 90 hr.; 2 cr.,
CSCI 398.3, 135 hr.; 3 cr.
Prereq.: Completion of 15
credits in computer science and approval of
the department.
Computer science students
are given an opportunity to work and learn
for credit. Students should consult the college's
Office of Career Development and
Internships for listings of available internships
and procedures for applying. A proposal
must be approved by the department
before registration. The student's grade will
be based on both the employer's and faculty
sponsor's evaluations of the student's performance,
based on midterm and final reports.
A limit of 6 credits of internships may
be taken. CSCI 398 may not be applied to
the computer science major or minor.