Printer-friendly version of the guidesheet
Students with AP credit for GenEd courses and a strong CS background may take CS 120 and CS 140 in the first semester.
Students without prior programming experience should take CS 110 in Fall and either
CS 120 or CS 140 in the Spring. Please consult a CS advisor before attempting CS 120
and CS 140 together.
Computer Science with CS 110
These suggested course tracks are based on undergraduate requirements from the class
entering in the 2016-17 academic year. These are only suggestions, refer to the University Bulletin for the official requirements for each major.
For archived requirements refer to the University Bulletin. Select desired year in the bottom left-hand corner under, "Bulletin Archive" and
then the area of study.
For more information on graduate-level requirements go here.
Take note of Pre- or Co-requisites
Year 1
Fall
-
CS 101 - Prof Skills Ethics & CS Trends
Introduction to and discussion of topics of interest to computer science majors:
social, ethical and professional issues; university, school and department resources;
current developments in computer science. Prerequisite: none. Offered in the Fall
semester. 1 credit
Levels: Undergraduate
-
CS 120 - Prog & Hardware Fundamentals
Introduction to the C programming language, including local and global variables,
basic control structures, function calls, pointers and the stack; use of command-line
C development environments and development tools such as gdb and make; assembly language
connection to higher-level C; building blocks of the Von Neumann machine (ALU, registers,
control unit, RAM, decoders, program counters) and the underlying basic logic elements;
simple non-pipelined processor architectures. Supervised laboratory work involves
programming in C and low-level languages, interfacing with hardware, and the design
and simulation of small circuits and simplified microprocessors. Prerequisite MATH
225 that may be taken concurrently. CS 110, CS Majors may request a waiver from the
Undergraduate Director based on prior programming experience (All prerequisites must
have a grade of C- or better) Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 224 - Differential Calculus
This is a 2-credit course in differential calculus covering limits, continuity,
and
differentiation. Prerequisites: MATH 223 with a grade of C- or better, or Placement
Exam. Offered each half semester. 2 credits.
Levels: Undergraduate
-
MATH 225 - Integral Calculus
This is a 2-credit course in integral calculus covering optimization and integration.
Prerequisites: MATH 224 with a grade of C- or better. Offered 2nd half of fall semester
and both half semesters of spring semester. 2 credits.
Levels: Undergraduate
-
WRIT 111 - Inquiry and Academic Writing
WRIT 111 helps first-year students become stronger writers, speakers, and thinkers.
The course treats writing as a process, emphasizes revision, and gives students practice
in critical thinking and research writing, reinforcing the notion that writing conventions differ according to their rhetorical
situations. Formal writing assignments include personal, civic, and academic genres.
Prerequisites: first-year students only. Transfer and ESL students by approval of
Writing Initiative only. 4 credits. Offered fall and spring semesters.
Levels: Undergraduate
Social Science/Humanities Elective
Spring
-
MATH 226 - Integration Tech & Application
This is a 2-credit course covering the calculus of transcendental & inverse
functions, L’Hospital’s Rule, integral techniques, improper integrals,
calculus of parametric curves, and polar coordinates.
Prerequisites: Math 225 with a grade of at least a C- or consent of instructor. 2
credits.
Levels: Undergraduate
-
MATH 227 - Infinite Series
This is a 2-credit course covering sequences, series, power series, and Taylor
series.
Prerequisites: Math 226 with a grade of at least a C- or consent of instructor. 2
credits.
Levels: Undergraduate
Social Sciences/Humanities Elective
Science (Must have a science sequence and one other L course)
Year 2
Fall
Science (Must have a science sequence and one other L course)
Social Sciences/Humanities Elective
-
CS 220 - Arch from a Prog Perspective
The architecture and programming of computer systems. Data representation and computer
arithmetic. Processor and memory organization. Assembly and machine language programming.
Advanced C programming language constructs and their implementation in assembly language.
Introduction to system software (assemblers, linkers, loaders, compilers). Supervised
laboratory work involves programming and debugging using machine language, assembly
language and C.
Prerequisite: CS 120 and either CS 140 or CS 210 (All prerequisites must have a grade
of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 304 - Linear Algebra
Vector spaces, linear transformations, determinants, characteristic values, inner
products. Prerequisites: C- or better in MATH 225. Every semester. 4 credits.
Levels: Graduate, Undergraduate
OR
-
MATH 371 - Ordinary Diff. Equations
Ordinary differential equations from quantitative and qualitative point of view
including existence and uniqueness theory, first and second order equations and higher
order equations, systems of first order equations, Laplace transforms, series
solutions methods. MATH 371 contains the topics of MATH 324 and includes additional
topics of the theory of existence and uniqueness, and systems of linear equations.
The topics are studied from a more advanced mathematical viewpoint than in MATH 324.
Only one of Math 324 and Math 371 can be counted towards math minor. Prerquisites:
C or better in both MATH 304 and MATH 330, or consent of instructor. Every semester.
4 credits.
Levels: Undergraduate
OR
-
MATH 381 - Graph Theory
Directed and undirected graphs, trees, connectivity, Eulerian and Hamiltonian graphs,
planar graphs, coloring of graphs, graph parameters, optimization and graph algorithms.
Prerequisites: C or better in both MATH 304 and either MATH 314 or MATH 330, or consent
of instructor. Spring only. 4 credits.
Levels: Undergraduate
Spring
Science (Must have a science sequence and one other L course)
-
CS 301 - Eth Soc & Global Issues Comput
Communications course with required writing and oral presentations. Understanding
the local and global implications of computing in society, including ethical, legal,
security and social issues. Developing professional skills related to computing, including
effective communication and productive teamwork. Fostering an appreciation for continuing
professional development. Should be taken at the same time as or before any junior-level
Computer Science courses.
Prerequisites: Any General Education "C" course, CS 101, and CS120, and
either CS 140 or CS 210 (All prerequisites must have a grade of C- or better). Offered
every semester. 4 credits
Levels: Undergraduate
-
MATH 314 - Discrete Mathematics
Logic, sets, relations, functions, induction, recursion, counting methods, graphs,
trees. Some abstract algebra. Prerequisites: C- or better in MATH 225 or consent
of instructor. Every semester. 4 credits.
Levels: Undergraduate
Year 3
Fall
-
CS 375 - Design & Analysis of Algorithm
Analysis of common algorithms for processing strings, trees, graphs and networks.
Comparison of sorting and searching algorithms. Algorithm design strategies: divide
and conquer, dynamic, greedy, back tracking, branch and bound. Introduction to NP-completeness.
Required activity includes student presentations.
Prerequisites: Either CS 240 or CS 310, MATH 227 and MATH 314 or MATH 330, CS 301
(may be taken concurrently). (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 327 - Probability with Stat Methods
Development of probabilistic concepts in discrete and absolutely continuous cases.
Classical combinatorial methods, independence, random variables, distributions, moments,
transformations, conditioning, confidence intervals, estimation. Open to Watson School
students only. Does not serve as a prerequisite for MATH 448 or for any actuarial
science courses. Prerequisites: C- or better in MATH 227 or MATH 230, or consent of
instructor. Every semester. 4 credits.
Levels: Undergraduate
-
CS 320 - Advanced Computer Architecture
Performance metrics and analysis; instruction set architecture and its implications;
high-performance computer arithmetic; instruction pipelines and pipelined datapath
implementation; out-of-order execution, register renaming, branch prediction and superscalar
processors; caches and memory systems; memory hierarchy; the I/O subsystem; reliable
storage systems; introduction to multicore and multithreaded architectures; hardware
and architectural support for security. Required lab includes programming projects.
Prerequisite: CS 220 (All prerequisites must have a grade of C- or better). Offered
every semester. Credits 4
Levels: Undergraduate
Social Sciences/Humanities Elective
Spring
-
CS 350 - Operating Systems
Introduction to the design and implementation of operating systems: hardware/software
interface; processes and threads; CPU scheduling; virtual memory; memory management;
concurrency, race conditions, deadlocks, and synchronization; file and storage systems;
input/output; protection and security; virtualization and hypervisors; multi-processor
operating systems. Required lab includes programming exercises and presentations.
Prerequisites: CS 220 and either CS 240 or CS 310 (All prerequisites must have a grade
of C- or better). Prerequisite (May be taken concurrently): CS 301. Offered every
semester. 4 credits.
Levels: Undergraduate
-
CS 373 - Automata Theory & Formal Lg.
Theory and application of automata and the languages they recognize. Regular languages,
deterministic and non-deterministic finite automata, regular expressions, context-free
languages, context-free grammars, pushdown automata, normal forms, context-sensitive
languages, linear bounded automata, Turing recognizable languages, Turing decidable
languages, Turing machines, computability, decidability, reducibility. Students will
utilize an automata simulator to program finite automata, pushdown automata, and Turing
machines. Application of concepts. Required activity includes student presentations.
Prerequisites: Either CS 140 or CS 210 and either MATH 314 or MATH 330 (All prerequisites
must have a grade of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
Social Sciences/Humanities Elective
Free Elective
Year 4
Fall
-
CS 471 - Programming Languages
Introduction to the design and implementation of programming languages: linguistic
features for expressing algorithms; formal syntax specification; introduction to language
semantics and parsing; declarative programming (functional and goal-driven); scripting
languages; imperative programming (procedural and object-oriented); comparative design
and implementation issues across languages and paradigms. Assignments emphasize languages
such as Prolog, Haskell, Python, and Ruby. Required lab includes student presentations.
Prerequisites: CS 373 and 375 (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
Computer Science Elective
Computer Science Elective
Free Elective
Spring
Computer Science Elective
Computer Science Elective
Free Elective
Free Elective (Physical Activity/Wellness)
Social Science/Humanities Elective
Computer Science with CS 110
Year 1
Fall
-
CS 101 - Prof Skills Ethics & CS Trends
Introduction to and discussion of topics of interest to computer science majors:
social, ethical and professional issues; university, school and department resources;
current developments in computer science. Prerequisite: none. Offered in the Fall
semester. 1 credit
Levels: Undergraduate
-
CS 110 - Pgming Concepts&Applic
An introductory course for students with little or no programming experience. Basic
control flow, data types, simple data structures and functions using a scripting language.
Developing code using an integrated environment. The basics of directories, files
and file types, including text files. Simple examples of the applications enabled
by a modern, platform-independent scripting language such as GUIs, event handling,
and database access. This course is open to all students who have not taken any other
CS courses (with the exception of CS 105) and under these conditions, can count as
free-elective credit for CS majors. Prerequisite: Math 225 (May be taken concurrently.
) (All prerequisites must have a grade of C- or better).Offered every semester. 4
credits
Levels: Undergraduate
-
MATH 223 - Introduction to Calculus
This is an introductory course in preparation for Differential Calculus (Math 224).
This is
a 2-credit course covering precalculus, limits, rates of change, definition of derivative,
and Riemann sum. Prerequisites: Placement Exam. Offered each half semester. 2 credits.
Levels: Undergraduate
-
MATH 224 - Differential Calculus
This is a 2-credit course in differential calculus covering limits, continuity,
and
differentiation. Prerequisites: MATH 223 with a grade of C- or better, or Placement
Exam. Offered each half semester. 2 credits.
Levels: Undergraduate
-
WRIT 111 - Inquiry and Academic Writing
WRIT 111 helps first-year students become stronger writers, speakers, and thinkers.
The course treats writing as a process, emphasizes revision, and gives students practice
in critical thinking and research writing, reinforcing the notion that writing conventions
differ according to their rhetorical situations. Formal writing assignments include personal, civic, and academic genres. Prerequisites: first-year
students only. Transfer and ESL students by approval of Writing Initiative only. 4
credits. Offered fall and spring semesters.
Levels: Undergraduate
Social Science/Humanities Elective
Spring
-
CS 120 - Prog & Hardware Fundamentals
Introduction to the C programming language, including local and global variables,
basic control structures, function calls, pointers and the stack; use of command-line
C development environments and development tools such as gdb and make; assembly language
connection to higher-level C; building blocks of the Von Neumann machine (ALU, registers,
control unit, RAM, decoders, program counters) and the underlying basic logic elements;
simple non-pipelined processor architectures. Supervised laboratory work involves
programming in C and low-level languages, interfacing with hardware, and the design
and simulation of small circuits and simplified microprocessors. Prerequisite MATH
225 that may be taken concurrently. CS 110, CS Majors may request a waiver from the
Undergraduate Director based on prior programming experience (All prerequisites must
have a grade of C- or better) Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 225 - Integral Calculus
This is a 2-credit course in integral calculus covering optimization and integration.
Prerequisites: MATH 224 with a grade of C- or better. Offered 2nd half of fall semester
and both half semesters of spring semester. 2 credits.
Levels: Undergraduate
-
MATH 226 - Integration Tech & Application
This is a 2-credit course covering the calculus of transcendental & inverse
functions, L’Hospital’s Rule, integral techniques, improper integrals,
calculus of parametric curves, and polar coordinates.
Prerequisites: Math 225 with a grade of at least a C- or consent of instructor. 2
credits.
Levels: Undergraduate
Social Sciences/Humanities Elective
Science (Must have a science sequence and one other L course)
Year 2
Fall
Social Sciences/Humanities Elective
Free Elective (Physical Activity/Wellness)
-
MATH 227 - Infinite Series
This is a 2-credit course covering sequences, series, power series, and Taylor
series.
Prerequisites: Math 226 with a grade of at least a C- or consent of instructor. 2
credits.
Levels: Undergraduate
-
MATH 304 - Linear Algebra
Vector spaces, linear transformations, determinants, characteristic values, inner
products. Prerequisites: C- or better in MATH 225. Every semester. 4 credits.
Levels: Graduate, Undergraduate
OR
-
MATH 371 - Ordinary Diff. Equations
Ordinary differential equations from quantitative and qualitative point of view
including existence and uniqueness theory, first and second order equations and higher
order equations, systems of first order equations, Laplace transforms, series
solutions methods. MATH 371 contains the topics of MATH 324 and includes additional
topics of the theory of existence and uniqueness, and systems of linear equations.
The topics are studied from a more advanced mathematical viewpoint than in MATH 324.
Only one of Math 324 and Math 371 can be counted towards math minor. Prerquisites:
C or better in both MATH 304 and MATH 330, or consent of instructor. Every semester.
4 credits.
Levels: Undergraduate
OR
-
MATH 381 - Graph Theory
Directed and undirected graphs, trees, connectivity, Eulerian and Hamiltonian graphs,
planar graphs, coloring of graphs, graph parameters, optimization and graph algorithms.
Prerequisites: C or better in both MATH 304 and either MATH 314 or MATH 330, or consent
of instructor. Spring only. 4 credits.
Levels: Undergraduate
Spring
-
CS 220 - Arch from a Prog Perspective
The architecture and programming of computer systems. Data representation and computer
arithmetic. Processor and memory organization. Assembly and machine language programming.
Advanced C programming language constructs and their implementation in assembly language.
Introduction to system software (assemblers, linkers, loaders, compilers). Supervised
laboratory work involves programming and debugging using machine language, assembly
language and C.
Prerequisite: CS 120 and either CS 140 or CS 210 (All prerequisites must have a grade
of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
CS 301 - Eth Soc & Global Issues Comput
Communications course with required writing and oral presentations. Understanding
the local and global implications of computing in society, including ethical, legal,
security and social issues. Developing professional skills related to computing, including
effective communication and productive teamwork. Fostering an appreciation for continuing
professional development. Should be taken at the same time as or before any junior-level
Computer Science courses.
Prerequisites: Any General Education "C" course, CS 101, and CS120, and
either CS 140 or CS 210 (All prerequisites must have a grade of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 314 - Discrete Mathematics
Logic, sets, relations, functions, induction, recursion, counting methods, graphs,
trees. Some abstract algebra. Prerequisites: C- or better in MATH 225 or consent
of instructor. Every semester. 4 credits.
Levels: Undergraduate
Year 3
Fall
-
CS 373 - Automata Theory & Formal Lg.
Theory and application of automata and the languages they recognize. Regular languages,
deterministic and non-deterministic finite automata, regular expressions, context-free
languages, context-free grammars, pushdown automata, normal forms, context-sensitive
languages, linear bounded automata, Turing recognizable languages, Turing decidable
languages, Turing machines, computability, decidability, reducibility. Students will
utilize an automata simulator to program finite automata, pushdown automata, and Turing
machines. Application of concepts. Required activity includes student presentations.
Prerequisites: Either CS 140 or CS 210 and either MATH 314 or MATH 330 (All prerequisites
must have a grade of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
MATH 327 - Probability with Stat Methods
Development of probabilistic concepts in discrete and absolutely continuous cases.
Classical combinatorial methods, independence, random variables, distributions, moments,
transformations, conditioning, confidence intervals, estimation. Open to Watson School
students only. Does not serve as a prerequisite for MATH 448 or for any actuarial
science courses. Prerequisites: C- or better in MATH 227 or MATH 230, or consent of instructor. Every semester. 4 credits.
Levels: Undergraduate
Science (Must have a science sequence and one other L course)
Spring
-
CS 320 - Advanced Computer Architecture
Performance metrics and analysis; instruction set architecture and its implications;
high-performance computer arithmetic; instruction pipelines and pipelined datapath
implementation; out-of-order execution, register renaming, branch prediction and superscalar
processors; caches and memory systems; memory hierarchy; the I/O subsystem; reliable
storage systems; introduction to multicore and multithreaded architectures; hardware
and architectural support for security. Required lab includes programming projects.
Prerequisite: CS 220 (All prerequisites must have a grade of C- or better). Offered
every semester. Credits 4
Levels: Undergraduate
-
CS 350 - Operating Systems
Introduction to the design and implementation of operating systems: hardware/software
interface; processes and threads; CPU scheduling; virtual memory; memory management;
concurrency, race conditions, deadlocks, and synchronization; file and storage systems;
input/output; protection and security; virtualization and hypervisors; multi-processor
operating systems. Required lab includes programming exercises and presentations.
Prerequisites: CS 220 and either CS 240 or CS 310 (All prerequisites must have a grade
of C- or better). Prerequisite (May be taken concurrently): CS 301. Offered every semester. 4 credits.
Levels: Undergraduate
-
CS 375 - Design & Analysis of Algorithm
Analysis of common algorithms for processing strings, trees, graphs and networks.
Comparison of sorting and searching algorithms. Algorithm design strategies: divide
and conquer, dynamic, greedy, back tracking, branch and bound. Introduction to NP-completeness.
Required activity includes student presentations.
Prerequisites: Either CS 240 or CS 310, MATH 227 and MATH 314 or MATH 330, CS 301
(may be taken concurrently). (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
Social Sciences/Humanities Elective
Year 4
Fall
-
CS 471 - Programming Languages
Introduction to the design and implementation of programming languages: linguistic
features for expressing algorithms; formal syntax specification; introduction to language
semantics and parsing; declarative programming (functional and goal-driven); scripting
languages; imperative programming (procedural and object-oriented); comparative design
and implementation issues across languages and paradigms. Assignments emphasize languages
such as Prolog, Haskell, Python, and Ruby. Required lab includes student presentations.
Prerequisites: CS 373 and 375 (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
Computer Science Elective
Computer Science Elective
Free Elective
Spring
Computer Science Elective
Computer Science Elective
Free Elective
Supplemental information
The following information supplements that provided in the University Bulletin. It
applies to students who matriculated Fall 2016 or after.
All required Computer Science courses, except CS 101, are offered every semester.
The minimum grade in a required Computer Science course must be at least a C- to be
allowed to take any Computer Science course, for which it is a prerequisite.
Calculus Topics are broken down as follows:
-
MATH 224 - Differential Calculus
This is a 2-credit course in differential calculus covering limits, continuity,
and
differentiation. Prerequisites: MATH 223 with a grade of C- or better, or Placement
Exam. Offered each half semester. 2 credits.
Levels: Undergraduate
-
MATH 225 - Integral Calculus
This is a 2-credit course in integral calculus covering optimization and integration.
Prerequisites: MATH 224 with a grade of C- or better. Offered 2nd half of fall semester
and both half semesters of spring semester. 2 credits.
Levels: Undergraduate
-
MATH 226 - Integration Tech & Application
This is a 2-credit course covering the calculus of transcendental & inverse
functions, L’Hospital’s Rule, integral techniques, improper integrals,
calculus of parametric curves, and polar coordinates.
Prerequisites: Math 225 with a grade of at least a C- or consent of instructor. 2 credits.
Levels: Undergraduate
-
MATH 227 - Infinite Series
This is a 2-credit course covering sequences, series, power series, and Taylor
series.
Prerequisites: Math 226 with a grade of at least a C- or consent of instructor. 2
credits.
Levels: Undergraduate
Humanities/Social Science – May be filled by courses offered by the Division of Humanities,
the Division of Social Sciences, the Psychology Department and HDEV courses offered
by the College of Community and Public Affairs. Many of the courses taken to meet
the General Education requirements will fulfill the Humanities/Social Science requirement.
Mathematics - Students who are strong in math are encouraged to take MATH 330 (Number
Systems) instead of MATH 314 (Discrete Mathematics). Students with a strong math background
may take MATH 381 (Graph Theory) as their Math elective. The following Binghamton
University course can be substituted for MATH 327: MATH 448 (Introduction to Probability
and Statistics II).
Free Electives – May be filled by extra courses from any of the areas listed above,
SOM courses, or additional Computer Science courses. A maximum of 2 HWS credits may
be counted as Free Elective credits. At least four of these credits must be in humanities,
social sciences, arts and other disciplines (excluding computer science) that provide
breadth of background. CS 110 counts as a free elective.
Prerequisites for Computer Science Courses
The MATH and CS pre-requisites must have a grade of at least C-.
-
CS 101 - Prof Skills Ethics & CS Trends
Introduction to and discussion of topics of interest to computer science majors:
social, ethical and professional issues; university, school and department resources;
current developments in computer science. Prerequisite: none. Offered in the Fall
semester. 1 credit
Levels: Undergraduate
-
CS 105 - Intro To Computing
Computing and its place in our society, including ethics and privacy. Basic concepts
of computer hardware and systems. Data flow in computer systems. Understanding and
using common application programs: word processors, spreadsheets and databases. Computers
in communications. Basic concepts of algorithms, programming and the programming process.
CS majors may only use this as free-elective credit. Does not provide any prerequisites
for courses in the CS major or minor. Prerequisite: none Offered every semester.
4 credits
Levels: Undergraduate
-
CS 106 - Everyday Computing
Translating human logic to computer logic; program flow, data structures and
functions; graphics; libraries; networks; and basic data analytics. Provides the basic
digital literacy
required for responsible digital communications in professional environments. Introduces
essential
computing concepts and programming skills in a widely used scripting language. Students
follow
protocols and use tools to promote secure practices in the workplace, at school, and
at home. Intended for
non-majors; cannot be used toward the fulfillment of a computer science degree. Prerequisites:
none. Term offered varies. 4 credits
Levels: Undergraduate
-
CS 110 - Pgming Concepts&Applic
An introductory course for students with little or no programming experience. Basic
control flow, data types, simple data structures and functions using a scripting language.
Developing code using an integrated environment. The basics of directories, files
and file types, including text files. Simple examples of the applications enabled
by a modern, platform-independent scripting language such as GUIs, event handling,
and database access. This course is open to all students who have not taken any other
CS courses (with the exception of CS 105) and under these conditions, can count as
free-elective credit for CS majors. Prerequisite: Math 225 (May be taken concurrently.
) (All prerequisites must have a grade of C- or better).Offered every semester. 4
credits
Levels: Undergraduate
-
CS 115 - FRI Image & Acoustic Signal I
This is one of two lecture-lab courses of a 2-semester sequence for FRI students
in Image and Acoustic Signals Analysis. Computing skills in MATLAB and Unix and
introduction to computer programming. Technical writing using LaTeX. Students
will learn research techniques while gaining understanding of research problems in
this area. Prerequisites: HARP 170 and enrollment in Freshman Research Immersion (FRI)
program (All prerequisites must have a grade of C- or better). Offered in the Spring
semester. 4 credits. Course fee applies. Refer to the Schedule of Classes.
Levels: Undergraduate
-
CS 120 - Prog & Hardware Fundamentals
Introduction to the C programming language, including local and global variables,
basic control structures, function calls, pointers and the stack; use of command-line
C development environments and development tools such as gdb and make; assembly language
connection to higher-level C; building blocks of the Von Neumann machine (ALU, registers,
control unit, RAM, decoders, program counters) and the underlying basic logic elements;
simple non-pipelined processor architectures. Supervised laboratory work involves
programming in C and low-level languages, interfacing with hardware, and the design
and simulation of small circuits and simplified microprocessors. Prerequisite MATH
225 that may be taken concurrently. CS 110, CS Majors may request a waiver from the Undergraduate Director based
on prior programming experience (All prerequisites must have a grade of C- or better)
Offered every semester. 4 credits
Levels: Undergraduate
-
CS 185A - Living/Learning Computer Proj
Projects developed in the context of Residential Life's Learning Communities.
Projects minimally include technology, community service and group learning and depend
on the interests of instructor and needs of the sponsoring Living Community. Only
counts as free-elective credit for CS majors. Semester offered Spring. 1 credits.
Levels: Undergraduate
-
CS 207 - Introduction to Data Science
This course will provide a broad overview of data science's different
areas, from statistics, machine learning to data engineering and many data science
applications. The course teaches critical concepts and skills in computer programming
and statistical inference, in conjunction with hands-on analysis of real-world datasets,
including economic data, document collections, geographical data, and social networks.
This course is designed to provide a non-technical introduction to the data science
approach. It is intended both for students from non-quantitative fields and those from a quantitative field who are interested in data science. The pre-requisite
for this course includes working knowledge in high school math (Math 108 or equivalent),
a course in introductory statistics (at the level of Math 147, Math 148 or AP statistics
with grade 3+, or equivalent). It is recommended that a student have some understanding
of scientific research. Prior programming experience is NOT required. Software: it
is expected that both R and python programming will be introduced in this course.
CS majors may only use this as free-elective credit. Does not provide any prerequisites
for courses in the CS major or minor.
Term offered varies. 4 credits
Levels: Undergraduate
-
CS 210 - Prog with Obj & Data
Assumes a foundation in procedural programming as covered in CS 110. Provides the
foundations of software development using Java. Problem solving using object-oriented
programming techniques is emphasized. Topics include primitive and reference data
types, variables, expressions, assignment, functions/methods, parameters, selection,
iteration, recursion, exception handling, generic linear data structures and maps,
file types, file I/O, simple GUIs, programming to an interface, use of inheritance,
design patterns, javadoc documentation, and introduction to Java threads. Required
laboratory provides supervised problem solving, programming using the command line
as well as Eclipse, Netbeans, or IntelliJ development environments, code backup in
a version control repository, debugging and JUnit testing techniques.
Prerequisite: CS 110, CS Majors may request a waiver from the Undergraduate Director
based on prior programming experience, and Math 225 (All prerequisites must have a grade of
C- or better). CS 120 (can be taken concurrently) Offered every semester. Credits:
4
Levels: Undergraduate
-
CS 211 - Programming I Engineers
Introduction to computer programming with engineering applications. Programming
in the procedural language C, control structures, functions, arrays and pointers.
Introduction to abstract data types and object-oriented programming using C++. This
course is intended for Engineering Students. Not applicable toward a major or minor
in computer science. Offered in the Fall semester. 4 credits
Levels: Undergraduate
-
CS 212 - Programming II for Engineers
Development tools and methodologies for modular programming with an emphasis on
engineering applications using the C language. Software design using functional and
data abstraction. Specification, use and implementation of abstract data types including
stacks, queues, lists, trees and graphs. Programming language features such as recursion,
dynamically allocated data structures and separate compilation. Introduction to algorithm
analysis, searching and sorting. Exposure to C++ classes for implementing abstract
data types. Prerequisite: CS 211. This course is intended for Engineering Students. Not applicable toward major or minor in computer science. Offered
in the Spring semester. 4 credits
Levels: Undergraduate
-
CS 215 - FRI Image & Acoustic Signal II
This is the second of two lecture-lab courses of a 2-semester sequence for FRI
students in Image and Acoustic Signals Analysis. Computer programming in C, and selected
topics in multimedia signal
processing and computer vision. Students will learn research techniques while gaining
understanding of research problems in this area. Prerequisites: HARP 170 and EECE
115/CS 115, and enrollment in Freshman Research Immersion (FRI) program (All prerequisites
must have a grade of C- or better). Offered in the fall semester. 4 credits. Course
fee applies. Refer to the Schedule of Classes.
Levels: Undergraduate
-
CS 220 - Arch from a Prog Perspective
The architecture and programming of computer systems. Data representation and computer
arithmetic. Processor and memory organization. Assembly and machine language programming.
Advanced C programming language constructs and their implementation in assembly language.
Introduction to system software (assemblers, linkers, loaders, compilers). Supervised
laboratory work involves programming and debugging using machine language, assembly language and C.
Prerequisite: CS 120 and either CS 140 or CS 210 (All prerequisites must have a grade
of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
CS 301 - Eth Soc & Global Issues Comput
Communications course with required writing and oral presentations. Understanding
the local and global implications of computing in society, including ethical, legal,
security and social issues. Developing professional skills related to computing, including
effective communication and productive teamwork. Fostering an appreciation for continuing
professional development. Should be taken at the same time as or before any junior-level
Computer Science courses.
Prerequisites: Any General Education "C" course, CS 101, and CS120,
and either CS 140 or CS 210 (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
-
CS 310 - Data Struct & Algorithms
Analysis of the design, implementation, and properties of basic and advanced data
structures, including lists, stacks, queues, hash tables, trees, heaps, and graphs.
Design and time-space analysis of basic and advanced algorithms, including searching,
sorting, insert/delete, hash table collision resolution techniques, recursive functions, balanced tree maintenance,
and graph algorithms. Weekly required laboratory programming and three or more additional
programming projects in C++. Practical programming techniques including C++ templates
and the Standard Template Library (STL), operator overloading, C++ stream I/O, separate
compilation using makefiles, debugging tools and techniques, dynamic memory management.
Prerequisites: CS 120, and either CS 140 or CS 210, and either MATH 227 (may be taken
concurrently) OR MATH 230 (All prerequisites must have a grade of C- or better).
Offered every semester. Credits: 4
Levels: Undergraduate
-
CS 311 - Operating Systems Concepts
Introduction to fundamental concepts for the design and implementation of operating
systems: hardware/software interfaces; processes and threads; scheduling; synchronization
techniques and primitives; memory management and virtual memory; file systems; input/output
subsystems; resource and system virtualization; protection and security; introduction
to distributed systems. Not open to CS majors. Prerequisites: CS 212 and EECE 287
(All prerequisites must have a grade of C- or better). Offered in the Fall semester.
4 credits
Levels: Undergraduate
-
CS 320 - Advanced Computer Architecture
Performance metrics and analysis; instruction set architecture and its implications;
high-performance computer arithmetic; instruction pipelines and pipelined datapath
implementation; out-of-order execution, register renaming, branch prediction and superscalar
processors; caches and memory systems; memory hierarchy; the I/O subsystem; reliable
storage systems; introduction to multicore and multithreaded architectures; hardware
and architectural support for security. Required lab includes programming projects.
Prerequisite: CS 220 (All prerequisites must have a grade of C- or better). Offered
every semester. Credits 4
Levels: Undergraduate
-
CS 350 - Operating Systems
Introduction to the design and implementation of operating systems: hardware/software
interface; processes and threads; CPU scheduling; virtual memory; memory management;
concurrency, race conditions, deadlocks, and synchronization; file and storage systems;
input/output; protection and security; virtualization and hypervisors; multi-processor
operating systems. Required lab includes programming exercises and presentations.
Prerequisites: CS 220 and either CS 240 or CS 310 (All prerequisites must have a grade
of C- or better). Prerequisite (May be taken concurrently): CS 301. Offered every
semester. 4 credits.
Levels: Undergraduate
-
CS 373 - Automata Theory & Formal Lg.
Theory and application of automata and the languages they recognize. Regular languages,
deterministic and non-deterministic finite automata, regular expressions, context-free
languages, context-free grammars, pushdown automata, normal forms, context-sensitive
languages, linear bounded automata, Turing recognizable languages, Turing decidable
languages, Turing machines, computability, decidability, reducibility. Students will
utilize an automata simulator to program finite automata, pushdown automata, and Turing
machines. Application of concepts. Required activity includes student presentations.
Prerequisites: Either CS 140 or CS 210 and either MATH 314 or MATH 330 (All prerequisites
must have a grade of C- or better). Offered every semester. 4 credits
Levels: Undergraduate
-
CS 375 - Design & Analysis of Algorithm
Analysis of common algorithms for processing strings, trees, graphs and networks.
Comparison of sorting and searching algorithms. Algorithm design strategies: divide
and conquer, dynamic, greedy, back tracking, branch and bound. Introduction to NP-completeness.
Required activity includes student presentations.
Prerequisites: Either CS 240 or CS 310, MATH 227 and MATH 314 or MATH 330, CS 301
(may be taken concurrently). (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
-
CS 395 - Computer Science Internship
On-the-job, unpaid experience in computer science. Student interns have opportunities
to work in local industrial, commercial or not-for-profit institutions and to apply
their knowledge to practical professional problems. Formal classroom meetings in which
interns share their experiences and discuss job-search techniques. Prerequisites:
four courses in computer science; open to computer science minors or majors. Registration
competitive and by consent of instructor. To count as a computer science elective,
this course must be taken for a total of 4 credits (168 hours). Prerequisites: CS
220 and either CS 240 or CS 310 and Junior or Senior standing in Computer Science
(All prerequisites must have a grade of C- or better). To count as a CS elective
student must have a total of 4 Credits of CS 395. Offered every semester. Variable
credits.
Levels: Undergraduate
-
CS 396 - Computer Science Co-Op
On-the-job experience in computer science. Co-op students work 20 hours per week
for a total of 560 hours, September through May, in local industrial, commercial or
not-for-profit organizations and apply their knowledge to practical, professional
problems. Students share experiences and discuss job search techniques in formal class
meetings. Alternatively, students work full-time for a total of 560 hours outside
the local area during one semester. Compensation provided by sponsor organization. Prerequisites: CS 220 and either CS 240
or CS 310 and Junior or Senior standing in Computer Science (All prerequisites must
have a grade of C- or better). Registration, by consent of instructor, is competitive
and requires sponsor interview. To count as a CS elective student must have a total
of 4 Credits of CS 396. Offered every semester. Variable Credit
Levels: Undergraduate
-
CS 397 - Independent Study
Individual study under direct supervision of faculty member investigating topic
of interest to student. Special registration form required with signature of supervising
faculty member. Can only count as free-elective credit for CS majors. Can not be counted
for the CS minor. Variable credit
Levels: Undergraduate
-
CS 402 - Software & Eng. Project Mgmt
Information is traveling faster and being shared by more individuals than ever
before. Although project management has been an established field for many years,
managing Software Development and Information Technology Projects requires ideas and
information that go beyond standard project management. This course presents an understandable,
integrated view of the many concepts skills, tools, and techniques involved in software
project management. The Project Management Knowledge areas (from PMI?s PMBOK) are used to guide the
student through the concepts of Software Project Management techniques and their application
to the management of software and IT projects. Specifically, students will learn how
to develop a software development plan including its associated tasks, milestones
and deliverables, software project scheduling and how/why to establish relationships
among the different tasks. Prerequisites: CS 220 and either CS 240 or CS 310, Junior
or Senior standing in Computer Science or Information Systems, Junior or Senior standing
in Computer Engineering (All prerequisites must have a grade of C- or better) Term
offered varies. 4 credits.
Levels: Undergraduate
-
CS 415 - Social Media Data Sci Pipeline
The focus of this course is on applying data science techniques to large-scale
social media. The topics
covered include large-scale data collection and management, exploratory analysis and
measurement techniques, hypothesis
testing and statistical modeling, and predictive, real time analytics. Students will
build an end-to-end analysis pipeline and
use it to answer questions about online events as they occur. The goal of the class
is to provide students with a
methodological toolbox, the technical skills to make use of these tools, and the experience
of using them on real world data.
Prerequisite: CS 350 Operating Systems, CS 375 Design & Analysis Algorithm,
MATH 327 Probability with Stat
Methods or equivalent. (All prerequisites must have a grade of C- or better) Term
offered varies. 4 credits.
Levels: Undergraduate
-
CS 417X - Intr to Human Comp Interaction
This course provides an overview of Human-Computer Interaction (HCI) and its various
applications. It covers a range of important topics, including the fundamentals of
HCI, basic techniques of data analysis, Mobile and Wearable Computing, Ubiquitous
Computing (Internet of Things), VR/AR, Brain-Computer Interaction (BCI), Accessibility,
and Smart Health. Throughout the course, students will gain a solid understanding
of HCI principles, along with practical insights into recent advancements and applications.
Prerequisites: CS 375 Design & Analysis of Algorithms, MATH 327 Probability
& Statistics. Expected to be offered at least once a year 4 credits.
Levels: Undergraduate
-
CS 424 - Intelligent Mobile Robotics
The focus of this course is on intelligent mobile robots that can autonomously
operate in indoor
environments with limited human guidance. The topics covered in this course include
mapping, localization, navigation,
planning, reasoning, and human-robot interaction (language-based and vision-based).
The students will learn to develop
software in Robot Operating System (ROS) on real mobile robots. The goal of this course
is to help students learn entry level algorithms and programming skills that are required to conduct research in the area of intelligent mobile robotics. Prerequisite: CS
350, CS 375. (All prerequisites must have a grade of C- or better) Term offered varies.
4 credits.
Levels: Undergraduate
-
CS 426 - Internet of Things
This course covers the applied area of Internet of Things (IoT). IoT are pervasive
computing systems consisting of smart sensors embedded in physical environments with
many promising
applications. IoT challenge many classical approaches to computing and networking.
Students will learn
about key techniques in IoT through this course. A substantial part of the material
will cover wireless sensor
networks, embedded operating systems, and network protocols. A variety of different
IoT applications will
be introduced, including clinical monitoring, structural health monitoring, and industrial
process
automation. In this course, students will also have an opportunity to obtain hands-on
experience on
programming embedded devices to sense and communicate. Prerequisite: Either CS 320
Advanced Computer Architecture or CS350 Operating Systems (All prerequisites must
have a grade of C- or better) Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 427 - Mobile Systems Security
This course discusses cybersecurity issues in various aspects of mobile systems, including mobile networks, mobile communications,
mobile OSes, mobile applications, and mobile devices. It presents technical details
of how mobile systems work and explains their vulnerabilities with potential security
risks. The course uses a combination of real-world mobile devices and high-fidelity
emulation testbeds to demonstrate
common types of attacks in mobile systems as well as how to defend against these attacks.
In this course, students are expected to gain hands-on experiences with mobile systems
and learn basic techniques to tackle their cybersecurity problems.
Prerequisite: CS 350 Operating Systems, or equivalents, CS 375 Design and Analysis
of Algorithms. Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 428 - Computer Networks
Communication protocols and layering, hardware-software infrastructures for networking,
MAC protocols, data link protocols, switching, inter- and intra-domain routing, the
TCP/IP protocol suite, transport protocols, application layer protocols, local and
system area networks, wireless and sensor networks, overlay and virtual networks,
client-server and peer-to-peer models, network programming with sockets, protocol
design and implementation issues, network security. Prerequisite: CS 350 (All prerequisites
must have a grade of C- or better). Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 432 - Database Systems
Associations between data elements and data models: entity-relationship, relational
and object-oriented. Relational database design techniques. Formal and commercial
query languages. Introduction to query processing, transaction management and concurrency
control. Prerequisite: CS 375 (All prerequisites must have a grade of C- or better).
Term offered varies. 4 credits
Levels: Undergraduate
-
CS 433 - Information Retrieval
Indexing and data structures for storing and searching the index. Boolean, statistical,
inference nets and knowledge-based models. Thesaurus construction. Query expansion.
Natural language and linguistic techniques. Evaluation. Distributed information retrieval.
Information integration and fusion. Dissemination of information. Summaries, themes
and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries.
Prerequisite: CS 375 (All prerequisites must have a grade of C- or better). Term
offered varies. 4 credits
Levels: Undergraduate
-
CS 435 - Introduction To Data Mining
Basic topics of data mining, including data preprocessing, mining association rules, classification rules, clustering rules, post
processing and mining in unstructured data. Prerequisites: CS 375, MATH 304 and MATH
327 or MATH 448 (All prerequisites must have a grade of C- or better). Term offered
varies. 4 credits
Levels: Undergraduate
-
CS 436 - Intro to Machine Learning
This course provides a broad introduction to machine learning and its applications.
Major topics include: supervised learning (generative/discriminative learning, parametric/non-parametric
learning, support vector machines); computational learning theory (bias/variance tradeoffs,
VC theory, large margins); unsupervised learning; semi-supervised learning; reinforcement
learning. The course will give students the basic ideas and intuition behind different
techniques as well as a more formal understanding of how and why they work. The course
will also discuss recent applications of machine learning, such as to data mining,
bioinformatics, and information retrieval. Prerequisites: CS 375 and MATH 327 or MATH
448 (All prerequisites must have a grade of C- or better). Term offered varies.
4 credits
Levels: Undergraduate
-
CS 440 - Adv Topics - Obj Oriented Prog
Object-oriented programming and its concomitant design patterns provide rich abstractions for program development. These programs will eventually
execute on real hardware, however. This course will investigate advanced object-oriented
techniques and how they interact with hardware and operating system issues. We will
ground our topics in C++, but the goal of the course will be to develop understanding
that can be applied across languages. We will examine different design techniques
for things such as memory management, and explore how and why they differ in performance
and robustness. We will also cover idioms such as ""Resource Acquisition
Is Initialization"" (RAII) and how they can be used to provide robust
resource management for exceptions (exception safety). We will also devote time to
covering generic programming and related topics such as expression templates. This
is a growing area that seeks to decouple algorithms and data structures through the
use of templates and other meta-programming techniques. These techniques exploit the
fact that the C++ template mechanism is a language-within-a-language that is executed
at compile-time rather than run-time. Additional topics include dynamic linking for
techniques such as ""plug-ins"", template instantiation
mechanisms, template specialization, idioms for memory management, thread-safety issues,
thread-safety, C++ reflection. Prerequisites: Either CS 240 or CS 310 and CS 350.
Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 441 - Game Dev For Mobile Platforms
This course focuses software development for mobile computing platforms, such as
smartphones and tables, with an emphasis on games. Students will develop interactive applications,
and utilize the wide variety of sensors and networking features available on the platform,
along with basic elements of graphics programming and animation. The course also
covers the mechanics of distributing software for mobile computing platforms. Both
iOS and Android operating systems will be covered. The course will feature a mix
of individual and team projects. Prerequisite: Either CS 140 or CS 210, CS 375. (All
prerequisites must have a grade of C- or better). Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 442 - Design Patterns
Patterns for program design including examples of patterns used in existing software
libraries. Exercises in programming with design patterns and communicating designs
to other programmers using the language of patterns. Use of an object-oriented programming
language to implement patterns and principles for common design problems. Design patterns
are applied to problems involving features including concurrency, sockets, streams,
reflection, and dynamic proxies. The course also discusses automating software build
processes with build tools.
Prerequisites: CS 140 or CS 210 and CS 375 (All prerequisites must have a grade of
C- or better). Term offered varies. 4 credits
Levels: Undergraduate
-
CS 444 - Programming for the Web
An in-depth understanding of programming for the World Wide Web: detailed coverage
of widely used language(s) for web programming, asynchronous programming, principles
of web architecture, web protocols, web design patterns, client-side programming,
templating, server-side programming, a technical history of the web, web security.
Students are expected to have experience with a modern programming language and will
be assigned programming projects using current state-of-the-art web technologies.
Prerequisite: Either CS 140 or CS 210 and, CS 320 or CS 350 or CS 375. (All prerequisites
must have a grade of C- or better) Term offered varies. 4 credits
Levels: Undergraduate
-
CS 445 - Software Engineering
Software engineering practice applied to the life cycle of software applications
and engineering projects. Software project planning and management: risk management,
estimation, scheduling, trade studies, CM and SQA. Software development: process model
selection, domain analysis, requirements gathering, analysis and design modeling,
user interface design, architectural and detailed design, documentation, testing strategies/methods,
test plan generation, and reuse. Advanced topics include formal methods and cleanroom
software engineering. Requires a major team project. Prerequisites: CS 350 or CS 375
(All prerequisites must have a grade of C- or better). Term offered varies. 4 credits
Levels: Undergraduate
-
CS 447 - High Performance Computing
This course covers the applied area of high performance computing for machine
learning, big data, and scientific computing. Students will learn about techniques
for programs where the amount of computation is substantial enough that performance
is a major concern. A substantial part of the material will cover parallel computation,
including message-passing, multicore, and vectorization. A variety of different algorithms
and applications will be considered, including machine learning, big data, and more
traditional scientific computing.
Prerequisite: CS 220, and either CS 240 or CS 310, and either CS 320 or CS350 (All
prerequisites must have a grade of C- or better). Term offered varies. 4 Credits
Levels: Undergraduate
-
CS 451 - Systems Programming
A detailed study of the application program interface of a modern operating system.
File operations, concurrency, processes, threads, inter-process communication, synchronization,
client-server programming, multi-tier programming. Prerequisite: CS 350 (All prerequisites
must have a grade of C- or better). Term offered varies. 4 credits
Levels: Undergraduate
-
CS 452 - Intro to Cloud Computing
This course will provide students with topics in cloud computing with coverage
of core cloud components such as virtualization techniques, distributed systems, cloud
service models, and representative cloud computing systems. It will not only include
the in-depth study of the fundamental enabling techniques such as server, network,
and data storage virtualization, but also provide the demonstration of how these techniques
work inside today’s widely-used cloud-based systems such as MapReduce, key-value
stores, and Openstack. The course will include weekly assignments in the form of homework,
labs, and projects.
Prerequisite: CS 350. Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 453 - Software Security
This hands-on course covers offensive and defensive technologies in the area of
software security. Particularly, students will learn about various vulnerabilities
that lead to software compromise, attacks that exploit such vulnerabilities, and defenses
that defend against such attacks. Topics covered include simple control-flow corruption
attacks, slightly harder buffer overflow and return-to-libc attacks, and advanced
ROP attacks. Students are expected to not only learn the concepts behind each attack,
but also execute them in a controlled environment. Prerequisite: CS350 Operating Systems
(All prerequisites must have a grade of C- or better) Term offered varies. 4 credits
Levels: Undergraduate
-
CS 455 - Intro to Visual Info Processin
The course focuses on fundamental topics, including visual information acquisition,
representation, description, enhancement, restoration, transformations and compressions,
and reconstruction from projections. The second focus is on Computer Science applications,
including algorithms developed in applications such as statistical and syntactic pattern
recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics.
Prerequisite: CS 375 (All prerequisites must have a grade of C- or better). Term
offered varies. 4 credits
Levels: Undergraduate
-
CS 456 - Intro to Computer Vision
Course has two parts. Part one focuses on an introduction to the fundamental topics
of
computer vision, including low-level vision, intermediate-level vision, high-level
vision, vision systems, visual knowledge representation, motion analysis, shape from
shading and 3D reconstruction, as well as image
retrieval. Part two introduces the applications of the fundamental computer vision
techniques. Examples include robotic vision, pattern recognition and medical imaging.
Pre req CS 375 (All prerequisites must have a grade of C- or better). 4 credits
Levels: Undergraduate
-
CS 457 - Intro To Distributed Systems
Fundamental issues in distributed systems. Distributed synchronization and concurrency
control. Distributed process management (scheduling, remote invocation, task forces,
load balancing). Protection and security. Robust distributed systems. Case studies.
Prerequisites: CS 350 (All prerequisites must have a grade of C- or better). Term
offered varies. 4 credits
Levels: Undergraduate
-
CS 458 - Intro to Computer Security
The course provides an introduction to the principles and practices of network,
computer, and information security. Topics include authentication and cryptographic
techniques, intrusion detection, access control, security policies, and program/policy
analysis techniques. Prerequisites: CS 350 and CS 375 (All prerequisites must have
a grade of C- or better). Term offered varies. 4 credits
Levels: Undergraduate
-
CS 459 - Science of Cyber Security
This course focuses on techniques that approach cyber security problems in a principled
manner using concepts from data mining, game theory, graph theory, and psychology.
The intent of this course is to permit students to bridge the divide between real-world
cyber threats and formal, scientific foundations of solutions that address such threats.
Real-world cyber security issues, such as spamming, phishing attacks, malware, sybil
attacks in social networks, and DDoS attacks, are used to illustrate how cyber threats
can be modeled with abstract representations that are amenable to rigorous analysis
and formal reasoning. The course also emphasizes the development of cyber defense
mechanisms that are rooted in scientific foundations. Prerequisite: CS 350 and CS
375 (All prerequisites must have a grade of C- or better). Term offered varies. 4
credits.
Levels: Undergraduate
-
CS 460 - Computer Graphics
Concepts, structure, techniques and algorithms for use of modern interactive computer
graphics systems. Graphics hardware, software system structure. Techniques and algorithms
for basic graphics input/output functions. Matrix techniques for transformations and
projections. Techniques for two- and three-dimensional modeling, rendering, animation
and visualization. Prerequisite: CS 375 (All prerequisites must have a grade of C-
or better). Prerequisite or Corequisite: MATH 304. Term offered varies. 4 credits
Levels: Undergraduate
-
CS 465 - Intro to Artificial Intelligen
This course will cover the basic ideas and techniques underlying the
design of artificial intelligence (AI) agents. Topics include search,
knowledge representation (and reasoning), planning, reasoning under uncertainty, machine
learning (including reinforcement learning), and applications (natural language processing,
vision, robotics, etc). Prerequisite: CS 375 (All prerequisites must have a grade
of C- or better) Term offered varies. 4 credits.
Levels: Undergraduate
-
CS 471 - Programming Languages
Introduction to the design and implementation of programming languages: linguistic
features for expressing algorithms; formal syntax specification; introduction to language
semantics and parsing; declarative programming (functional and goal-driven); scripting
languages; imperative programming (procedural and object-oriented); comparative design
and implementation issues across languages and paradigms. Assignments emphasize languages
such as Prolog, Haskell, Python, and Ruby. Required lab includes student presentations.
Prerequisites: CS 373 and 375 (All prerequisites must have a grade of C- or better).
Offered every semester. 4 credits
Levels: Undergraduate
-
CS 472 - Compiler Design
Fundamentals of programming language translation. Compiler design concepts. General
aspects of lexical analysis and parsing of context-free languages. Grammars and parsing
techniques. Syntax-directed translation. Declarations and symbol management. Semantic
processing and code generation. Principles, methods and examples of code optimization.
Prerequisite: CS 373 and CS 375 (All prerequisites must have a grade of C- or better).
Term offered varies. 4 credits
Levels: Undergraduate
-
CS 476 - Program Models Emerg Platforms
The landscape of computation platforms has changed dramatically in recent years.
Computing devices such as Unmanned Aerial Vehicles (UAVs) are on the horizon. Big
data processing becomes an indispensable part of numerous applications. Multi-core
CPUs are commonly deployed in computer systems. Programming on these emerging platforms
remains a challenging task. This course introduces a number of state-of-the-art programming
models on these platforms, and further explores the frontier of next-generation programming
language design that may potentially impact the future programming practice for emerging
platforms. In particular, the course investigates UAV programming, Big Data programming,
and multi-core programming, with additional presentations on other platforms on the
rise. Applications of these programming models range from high-performance computing,
cyber-physical systems, databases, to energy-conscious systems.
Prerequisites: Either CS 240 or CS 310, and 320 or CS 350 (All prerequisites must
have a grade of C- or better). Term offered varies. 4 credits
Levels: Undergraduate
-
CS 480A - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480B - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480C - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480E - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480F - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480G - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480I - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480K - Special Topics
This course will provide students with advanced topics in cloud computing with
coverage of core cloud components such as virtualization techniques, distributed systems,
cloud service models, and representative cloud computing systems. It will not only
include the in-depth study of the fundamental enabling techniques such as server,
network, and data storage virtualization, but also provide the demonstration of how
these techniques work inside today’s widely-used cloud-based systems such
as MapReduce, key-value stores, and Openstack. The course will include weekly assignments
in the form of homework, labs, and projects. Students will also be required to read,
critique and present papers on research topics in the domain of cloud computing. Prerequisite:
CS 350. 4 credits. Offered annually.
Levels: Undergraduate
-
CS 480L - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480N - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480R - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480S - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480T - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480V - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480W - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480Y - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 480Z - Special Topics
Special topics in Computer Science. 4 credits. Semester offered varies.
Levels: Undergraduate
-
CS 485 - Info Systems Senior Proj I
First semester of two-semester-long team projects involving analysis, specification,
design, implementation and documentation of large-scale information systems. Project
teams work to bring structure to a loosely formulated business/organizational problem.
Previously learned concepts and techniques are applied in a real-world environment.
Interpersonal (including communication) skills are enhanced. Host organizations and
the instructor supervise the projects. Oral and written reports are required. Prerequisite:
senior standing in the Information Systems Dual-Diploma program. Offered in the Fall
semester. 3 credits
Levels: Undergraduate
-
CS 486 - Info Systems Senior Proj II
Continuation of CS 485, Information Systems Project I. Prerequisite: CS 485 and
senior standing in the Information Systems Dual-Diploma program. Offered in Spring
semester. 3 credits
Levels: Undergraduate
-
CS 499 - Undergraduate Research
Participation in research under supervision of a faculty member. Written report
and oral presentation required.
Levels: Undergraduate
-
CS 515 - Social Media Data Sci Pipeline
The focus of this course is on applying data science techniques to large-scale
social media. The topics covered include large-scale data collection, cleaning, and
management, exploratory analysis and measurement techniques, hypothesis testing and
statistical modeling, and predictive, real time analytics. Students will build an
end-to-end analysis pipeline and use it to answer questions about online events as
they occur. The goal of the class is to provide students with a methodological toolbox,
the technical skills to make use of these tools, and the experience of using them
on real world data. Prerequisite: Undergraduate Operating Systems, Undergraduate Algorithms,
Probability with Stat Methods or equivalent. Term offered varies. 3 credits
Levels: Graduate
-
CS 517X - Intr to Human Comp Interaction
This course provides an overview of Human-Computer Interaction (HCI) and its various
applications. It covers a range of important topics, including the fundamentals of
HCI, basic techniques of data analysis, Mobile and Wearable Computing, Ubiquitous
Computing (Internet of Things), VR/AR, Brain-Computer Interaction (BCI), Accessibility,
and Smart Health. Throughout the course, students will gain a solid understanding
of HCI principles, along with practical insights into recent advancements and applications.
Prerequisites: CS 375 Design & Analysis of Algorithms, MATH 327 Probability & Statistics. Expected to be offered at least once
a year 3 credits.
Levels: Graduate
-
CS 520 - Computer Architecture & Organ
Pipelined processors: basic theory, instruction pipelines, multifunction units,
dynamic instruction scheduling, branch handling, precise interrupts. Compiler techniques
for enhancing ILP. Pipelined vector machines. Superscalar, VLIW and EPIC architectures.
High-speed memory system design. Overview of parallel/multiprocessor architectures:
SIMD/MIMD systems, interconnection networks, synchronization and cache coherence.
Prerequisite: Computer Architecture. Offered every semester when possible. 3 credits
Levels: Graduate, Undergraduate
-
CS 524 - Intelligent Mobile Robotics
The focus of this course is on intelligent mobile robots that can autonomously
operate in indoor environments with limited human guidance. The topics covered in
this course include mapping, localization, navigation, planning, reasoning, and human-robot
interaction (language-based and vision-based). The students will learn to develop
software in Robot Operating System (ROS) on real mobile robots. The goal of this course
is to help students learn entry-level algorithms and programming skills that are required to conduct research in the area of intelligent mobile robotics. Prerequisite: Undergraduate
Operating Systems and Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 526 - Internet of Things
This course covers the applied area of Internet of Things (IoT). IoT are pervasive
computing systems consisting of smart sensors embedded in physical environments with
many promising applications. IoT challenge many classical approaches to computing
and networking. Students will learn about key techniques in IoT through this course.
A substantial part of the material will cover wireless sensor networks, embedded operating
systems, and network protocols. A variety of different IoT applications will be introduced,
including clinical monitoring, structural health monitoring, and industrial process
automation. In this course, students will also have an opportunity to obtain hands-on
experience on programming embedded devices to sense and communicate. Prerequisite:
Either Undergraduate Operating Systems or Advanced Computer Architecture. Term offered
varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 527 - Mobile Systems Security
This course discusses cybersecurity issues in various aspects of mobile systems,
including mobile networks, mobile communications, mobile OSes, mobile applications, and mobile
devices. It presents technical details of how mobile systems work and explains their
vulnerabilities with potential security risks. The course uses a combination of real-world
mobile devices and high-fidelity emulation testbeds to demonstrate common types of
attacks in mobile systems as well as how to defend against these attacks. In this
course, students are expected to gain hands-on experiences with mobile systems and
learn basic techniques to tackle their cybersecurity problems.
Credits 3
Prerequisite: CS 350 Operating Systems, or equivalents
When offered: Expected to be offered at least once every two years
Levels: Graduate, Undergraduate
-
CS 528 - Computer Networks
Communication protocols and layering, hardware-software infrastructures for networking,
MAC protocols, data link protocols, switching, inter- and intra-domain routing, the
TCP/IP protocol suite, transport protocols, application layer protocols, local and
system area networks, wireless and sensor networks, overlay and virtual networks,
client-server and peer-to-peer models, network programming with sockets, protocol
design and implementation issues, network security. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 532 - Database Systems
Associations between data elements and data models: entity-relationship, relational
and object-oriented. Relational database design techniques. Formal and commercial
query languages. Introduction to query processing, transaction management and concurrency
control. Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 533 - Information Retrieval
Indexing and data structures for storing and searching the index. Boolean, statistical,
inference nets and knowledge-based models. Thesaurus construction. Query expansion.
Natural language and linguistic techniques. Evaluation. Distributed information retrieval.
Information integration and fusion. Dissemination of information. Summaries, themes
and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries.
Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 535 - Introduction To Data Mining
Basic topics of data mining, including data preprocessing, mining association rules,
classification rules, clustering rules, post processing, and mining in unstructured data. Prerequisite: Undergraduate Algorithms and Probability & Statistics
or equivalent. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 536 - Intro to Machine Learning
This course provides a broad introduction to machine learning and its applications.
Major topics include: supervised learning (generative/discriminative learning, parametric/non-parametric
learning, support vector machines); computational learning theory (bias/variance tradeoffs,
VC theory, large margins); unsupervised learning; semi-supervised learning; reinforcement
learning. The course will give students the basic ideas and intuition behind different
techniques as well as a more formal understanding of how and why they work. The course
will also discuss recent applications of machine learning, such as to data mining,
bioinformatics, and information retrieval. Prerequisites: Undergraduate Algorithms,
Probability with Statistical Methods. Term offered varies. 3 credits..
Levels: Graduate, Undergraduate
-
CS 540 - Adv Topics - Obj Oriented Prog
Object-oriented programming and its concomitant design patterns provide rich abstractions
for program development. These programs will eventually execute on real hardware,
however. This course will investigate advanced object-oriented techniques and how they interact with hardware
and operating system issues. We will ground our topics in C++, but the goal of the
course will be to develop understanding that can be applied across languages. We will
examine different design techniques for things such as memory management, and explore
how and why they differ in performance and robustness. We will also cover idioms such
as "Resource Acquisition Is Initialization" (RAII) and how they
can be used to provide robust resource management for exceptions (exception safety).
We will also devote time to covering generic programming and related topics such as
expression templates. This is a growing area that seeks to decouple algorithms and
data structures through the use of templates and other meta-programming techniques.
These techniques exploit the fact that the C++ template mechanism is a language-within-a-language
that is executed at compile-time rather than run-time. Additional topics include dynamic
linking for techniques such as "plug-ins", template instantiation
mechanisms, template specialization, idioms for memory management, thread-safety issues,
thread-safety, C++ reflection. Prerequisites: Undergraduate Operating Systems. Term
offered varies. 3 credits.
Levels: Graduate
-
CS 541 - Game Dev For Mobile Platforms
This course focuses software development for mobile computing platforms, such as
smartphones and tablets, with an emphasis on games. Students will develop interactive
applications and utilize the wide variety of sensors and networking features available
on the platform, along with basic elements of graphics programming and animation. The course also covers
the mechanics of distributing software for mobile computing platforms. Both iOS and
Android operating systems will be covered. The course will feature a mix of individual
and team projects.
Prerequisite: Programming with Objects & Data Structures, Java Programming,
Undergraduate Algorithms or equivalents. Term offered varies. 3 Credits
Levels: Graduate, Undergraduate
-
CS 542 - Design Patterns
Patterns for program design including examples of patterns used in existing software
libraries. Exercises in programming with design patterns and communicating designs
to other programmers using the language of patterns. Use of an object-oriented programming
language to implement patterns and principles for common design problems. Design patterns
are applied to problems involving features such as concurrency, sockets, streams,
reflection, and dynamic proxies. The course also discusses automating software build
processes with build tools.
Prerequisites: Java Programming, Undergraduate Algorithms or equivalents. Term offered
varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 544 - Programming for the Web
An in-depth understanding of programming for the World Wide Web: detailed coverage of widely used language(s) for web programming, asynchronous
programming, principles of web architecture, web protocols, web design patterns, client-side
programming, templating, server-side programming, a technical history of the web,
web security. Students are expected to have experience with a modern programming language
and will be assigned programming projects using current state-of-the-art web technologies.
Prerequisite: Undergraduate Operating Systems or Undergraduate Algorithms, or equivalents.
Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 545 - Software Engineering
Software engineering practice applied to the life cycle of large software applications
and engineering projects. Software project planning and management: risk management,
estimation, scheduling, trade studies, CM and SQA. Software development: process model
selection, domain analysis, requirements gathering, analysis and design modeling,
user interface design, architectural and detailed design, documentation, testing strategies/methods,
test plan generation, and reuse. Advanced topics include formal methods and cleanroom
software engineering. Requires a major team project. Prerequisite: Undergraduate
Algorithms Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 547 - High Performance Computing
This course covers the applied area of high performance computing for machine learning,
big data, and scientific computing. Students will learn about techniques for programs
where the amount of computation is substantial enough that performance is a major
concern. A substantial part of the material will cover parallel computation, including
message-passing, multicore, and vectorization. A variety of different algorithms and
applications will be considered, including machine learning, big data, and more traditional
scientific computing.
Prerequisite: Computer Architecture or Undergraduate Operating Systems and C programming.
Term offered varies. 3 Credits
Levels: Graduate, Undergraduate
-
CS 550 - Operating Systems
Advanced topics in operating systems. Process synchronization, linguistic support
for concurrency, virtual memory, deadlock theory, robustness, security, mathematical
models and correctness of concurrent programs. Treatment of selected topics in distributed
and multiprocessor operating systems. Prerequisite: Undergraduate Operating Systems.
Offered every semester when possible. 3 credits
Levels: Graduate, Undergraduate
-
CS 551 - Systems Programming
A detailed study of the application program interface of a modern operating system.
File operations, concurrency, processes, threads, inter-process communication, synchronization,
client-server programming, multi-tier programming. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 552 - Intro to Cloud Computing
This course will provide students with topics in cloud computing with coverage
of core cloud components such as virtualization techniques, distributed systems, cloud
service models, and representative cloud computing systems. It will not only include
the in-depth study of the fundamental enabling techniques such as server, network,
and data storage virtualization, but also provide the demonstration of how these techniques
work inside today’s widely-used cloud-based systems such as MapReduce, key-value
stores, and Openstack. The course will include weekly assignments in the form of homework,
labs, and projects. Prerequisite: Undergraduate Operating Systems. Term offered varies.
3 credits.
Levels: Graduate, Undergraduate
-
CS 553X - Software Security
This hands-on course covers offensive and defensive technologies in the area of
software security. Particularly, students will learn about various vulnerabilities that
lead to software compromise, attacks that exploit such vulnerabilities, and defenses
that defend against such attacks. Topics covered include simple control-flow corruption
attacks, slightly harder buffer overflow and return-to-libc attacks, advanced ROP
attacks, Meltdown and Spectre attacks on the hardware. Students are expected to not
only learn the concepts behind each attack, but also execute them in a controlled
environment. Prerequisite: Undergraduate Operating Systems. Term offered varies. 3
credits.
Levels: Graduate
-
CS 555 - Intro to Visual Info Processin
The course focuses on fundamental topics, including visual information acquisition,
representation, description, enhancement, restoration, transformations and compressions,
and reconstruction from projections. The second focus is on Computer Science applications,
including algorithms developed in applications such as statistical and syntactic pattern
recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics.
Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 556 - Intro to Computer Vision
Course has two parts. Part one focuses on an introduction to the fundamental topics of computer vision,
including low-level vision, intermediate-level vision, high-level vision, vision systems,
visual knowledge representation, motion analysis, shape from shading and 3D reconstruction,
as well as image retrieval. Part two introduces the applications of the fundamental
computer vision techniques. Examples include robotic vision, pattern recognition and
medical imaging. Prerequisite: Undergraduate Algorithims. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 557 - Intro To Distributed Systems
Fundamental issues in distributed systems. Distributed synchronization and concurrency
control. Distributed process management (scheduling, remote invocation, task forces,
load balancing). Protection and security. Robust distributed systems. Case studies.
Prerequisite: Undergraduate Operating Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 558 - Intro to Computer Security
The course provides an introduction to the principles and practices of network,
computer, and information security. Topics include authentication and cryptographic
techniques, intrusion detection, access control, security policies, and program/policy
analysis techniques. Prerequisite: Undergraduate Operating Systems and Algorithms. Term
offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 559 - Science of Cyber Security
This course focuses on techniques that approach cyber security problems in a principled
manner using concepts from data mining, game theory, graph theory, and psychology.
The intent of this course is to permit students to bridge the divide between real-world
cyber threats and formal, scientific foundations of solutions that address such threats.
Real-world cyber security issues, such as spamming, phishing attacks, malware, sybil
attacks in social networks, and DDoS attacks, are used to illustrate how cyber threats
can be modeled with abstract representations that are amenable to rigorous analysis
and formal reasoning. The course also emphasizes the development of cyber defense
mechanisms that are rooted in scientific foundations. Prerequisite: Undergraduate
Operating Systems and Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 560 - Computer Graphics
Concepts, structure, techniques, algorithms for use of modern interactive computer
graphics systems. Graphics hardware, software system structure. Techniques and algorithms
for basic graphics input-output functions. Matrix techniques for transformations and projections.
Techniques for two- and three-dimensional modeling, rendering, animation and visualization.
Prerequisites: Undergraduate Algorithms and Linear Algebra. Term offered varies.
3 credits
Levels: Graduate, Undergraduate
-
CS 565 - Intro to Artificial Intelligen
This course will cover the basic ideas and techniques underlying the
design of artificial intelligence (AI) agents. Topics include search,
knowledge representation (and reasoning), planning, reasoning under uncertainty, machine
learning (including reinforcement learning), and applications (natural language processing,
vision, robotics, etc). Prerequisite: Undergraduate Algorithims. Term offered varies.
3 credits.
Levels: Graduate, Undergraduate
-
CS 571 - Programming Languages
Selected topics in programming languages and alternative programming paradigms.
Functional and imperative languages. Logic programming and object-oriented programming
paradigms. Languages for concurrent computation. Semantics of programming languages.
Prerequisite: Undergraduate Algorithims. Offered every semester when possible. 3
credits
Levels: Graduate, Undergraduate
-
CS 572 - Compiler Design
Fundamentals of programming language translation. Compiler design concepts. General
aspects of lexical analysis and parsing of context-free languages. Grammars and parsing
techniques. Syntax-directed translation. Declarations and symbol management. Semantic
processing and code generation. Principles, methods and examples of code optimization.
Prerequisite: Programming Languages. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 575 - Design & Analysis Comp Algorit
Analysis of programs and review of design techniques. Lower bound theory and NP-completeness.
Heuristic, approximation, probabilistic and parallel algorithms. Prerequisites: Undergraduate
Algorithms. Offered every semester when possible. 3 credits
Levels: Graduate, Undergraduate
-
CS 576 - Program Models Emerg Platforms
The landscape of computation platforms has changed dramatically in recent years. Computing devices such as Unmanned Aerial Vehicles (UAVs) are on the horizon.
Big data processing becomes an indispensable part of numerous applications. Multi-core
CPUs are commonly deployed in computer systems. Programming on these emerging platforms
remains a challenging task. This course introduces a number of state-of-the-art programming
models on these platforms, and further explores the frontier of next-generation programming
language design that may potentially impact the future programming practice for emerging
platforms. In particular, the course investigates UAV programming, Big Data programming,
and multi-core programming, with additional presentations on other platforms on the
rise. Applications of these programming models range from high-performance computing,
cyber-physical systems, databases, to energy-conscious systems. Prerequisites: Java
programming, Computer Architecture or Undergraduate Operating Systems. Term offered
varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 580A - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580B - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 580C - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580E - Special Topics
Special Topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580F - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580G - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580H - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580I - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580K - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580L - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 580M - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580N - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580P - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580R - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580S - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580T - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580U - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580W - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580Y - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580Z - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 592 - Tech. Dev. Curriculum I
This course is a 32-week in-house course taught at BAE Systems for students enrolled
in the BAE ELDP program only and devoted to a broad review of engineering fundamentals,
with emphasis on interdisciplinary topics related to Electronic Systems products and processes, technologies, applications, and problem solving techniques.
Coursework includes a team-project and presentation to engineering management. Term
offered varies.
Levels: Graduate, Undergraduate
-
CS 593 - Tech. Dev. Curriculum II
This course is a 16-week in-house course taught at BAE Systems for students enrolled
in the BAE ELDP program only and devoted to challenging students with problems very
similar to those frequently facing Electronic Systems engineers. Coursework includes
a technical project requiring the application of systems, software, and hardware engineering
skills. Term offered varies.
Levels: Graduate, Undergraduate
-
CS 594 - Industrial Internship
Computer science, engineering and other professional experience. Daily log book
memo progress reports and a formal report required. May replace no more than one
lecture course for the MSCS or MEng degree. Prerequisite: consent of department chair.
Variable credit
Levels: Graduate, Undergraduate
-
CS 595 - Termination Project
A theoretical or practical project carried out under the supervision of a member
of the Computer Science Department. Project documentation must be submitted to the
department library and a public presentation is required. Further information is available
in the department office. Prerequisites: consent of instructor and committee members.
Variable credit.
Levels: Graduate, Undergraduate
-
CS 597 - Independent Study
Independent study supervised by a computer science faculty member. Student must
obtain consent of instructor, who then determines description of study program, number
of credits, frequency of meetings and location. Variable credit
Levels: Graduate, Undergraduate
-
CS 599 - Masters Thesis
Research for and preparation of thesis. Must be approved by department chair.
Levels: Graduate, Undergraduate
-
CS 601 - CS Research Methodology
This seminar course covers topics that are important for students who need to perform
serious research to complete their degree. Specific topics include research paper
review, literature survey of research topics, identification of research problems,
research ethics, research methodologies, experiment design, performance evaluation,
research paper writing and revision, response to paper review comments, faculty life,
research proficiency examination (RPE), PhD prospectus, PhD dissertation, and research
presentation.
Prerequisites: CS PhD students. Instructor's approval for master's
students. Credits: 3 When offered: Once a year.
Levels: Graduate
-
CS 620X - Advanced Computer Architecture
Levels: Graduate
-
CS 680C - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680E - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680H - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680M - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680P - Systems for Security & Privacy
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680R - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680S - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 680V - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
-
CS 681A - Selected Topics in Comp Sci
This seminar course covers leading-edge research topics in Computer Science and
closely related areas. Course content varies by section and the semester of offering.
The course contents are selected considering timely interests and needs of students. Topics may include (but not limited to) artificial
intelligence, machine learning, data science, cyber security, software/hardware security,
algorithms, theory of computation, programming languages, computer architecture, operating
systems, virtualization, could computing, high performance computing, serverless computing,
computer networks, mobile computing, ubiquitous computing, embedded/real-time systems,
edge computing, cyber-physical systems, and the Internet of Things. Prerequisite:
CS 601X CS Research Methodology Sem or instructor approval. Credits: 3.
Levels: Graduate, Undergraduate
-
CS 697 - Advanced Independent Study
Reading and research on special advanced topics under direction of computer science
advisor. Student must obtain consent of professor, who then determines description
of study program, number of credits, frequency of meetings, location.
Levels: Graduate
-
CS 698 - Predissertation Research
Reserved for exploratory research oriented toward dissertation.
Levels: Graduate
-
CS 699 - Dissertation
Research for and preparation of dissertation. Registration restricted to those
admitted to candidacy.
Levels: Graduate
-
CS 700 - Continuous Registration
every semester. 1 Credit
Levels: Graduate
-
CS 701 - Pract/Teaching &Research Asst
Required for all funded graduate assistants. Research or teaching supervised by
faculty advisor.
Levels: Graduate
-
CS 707 - Research Skills
Development of research skills required within graduate programs. May not be applied
toward course credits for any graduate degree. Prerequisite: approval of relevant
graduate program directors or department chairs.
Levels: Graduate