## ##   * Overview
  * Programs
  * Courses
Computer science involves the application of theoretical concepts in the
context of software development to the solution of problems that arise in
almost every human endeavor. Computer science as a discipline draws its
inspiration from mathematics, logic, science, and engineering. From these
roots, computer science has fashioned paradigms for program structures,
algorithms, data representations, efficient use of computational resources,
robustness and security, and communication within computers and across
networks. The ability to frame problems, select computational models, design
program structures, and develop efficient algorithms is as important in
computer science as software implementation skill. Computer science is
concerned with bringing together all of the intellectual resources needed to
enable the rapid and effective development of software to meet the needs of
business, research, and end users.
The goal of the undergraduate program in computer science is to teach students
the conceptual and practical skills that will enable them to contribute to the
development of computational principles and to play a productive role in the
software community. To that end, the undergraduate program focuses on the
fundamentals of program design including object-oriented design, software
development, computer organization, systems and networks, theory of
computation, principles of languages, and advanced algorithms and data. The
program also offers a variety of electives at the upper undergraduate and
beginning graduate levels ranging from more theoretical courses to those that
focus on important applications.
## Bachelor of Science in Computer Science (BSCS)
  * [Computer Science](/undergraduate/computer-information-science/computer-science/bscs/)
## Bachelor of Arts in Computer Science (BACS)
  * [Computer Science](/undergraduate/computer-information-science/computer-science/bacs/)
## Bachelor of Science (BS)
  * [Computing and Law](/undergraduate/computer-information-science/computer-science/computing-law-bs/)
  * [Interdisciplinary Studies](/undergraduate/computer-information-science/computer-science/interdisciplinary-studies-bs/index.html)
## Minor
  * [Computer Science](/undergraduate/computer-information-science/computer-science/minor/)
## Accelerated Programs
See [Accelerated Bachelor/Graduate Degree Programs](/undergraduate/computer-
information-science/accelerated-bachelor-graduate-degree-
programs/#programstext)
  * Computer Science Courses
  * Information Science Courses
## Computer Science Courses
**CS 1100. Computer Science and Its Applications. (4 Hours)**
Introduces students to the field of computer science and the patterns of
thinking that enable them to become intelligent users of software tools in a
problem-solving setting. Examines several important software applications so
that students may develop the skills necessary to use computers effectively in
their own disciplines.
**Corequisite(s):**[CS 1101](/search/?P=CS%201101 "CS 1101")
**Attribute(s):** NUpath Analyzing/Using Data
**CS 1101. Lab for CS 1100. (1 Hour)**
Accompanies [CS 1100](/search/?P=CS%201100 "CS 1100"). Involves experiments
and problem solving across multiple disciplines using computer science
techniques and tools.
**Corequisite(s):**[CS 1100](/search/?P=CS%201100 "CS 1100")
**CS 1200. First Year Seminar. (1 Hour)**
Seeks to support students in their transition to Northeastern and in their
holistic development as they become responsible members of the college and
university communities. Incorporates large group discussion, small group
activities, and self-reflection in order to facilitate connections with
faculty, staff, and peers; promote utilization of appropriate campus
resources; and assist with academic and personal goal setting.
**CS 1210. Professional Development for Khoury Co-op. (1 Hour)**
Continues the preparation of students for careers in the computing and
information fields by discussing co-op and co-op processes. Offers students an
opportunity to prepare a professional resumé; practice proper interviewing
techniques; explore current job opportunities; learn how to engage in the job
and referral process; and to understand co-op policies, procedures, and
expectations. Discusses professional behavior and ethical issues in the
workplace.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [DS 2500](/search/?P=DS%202500 "DS 2500") with a minimum grade
of D-
**CS 1800. Discrete Structures. (4 Hours)**
Introduces the mathematical structures and methods that form the foundation of
computer science. Studies structures such as sets, tuples, sequences, lists,
trees, and graphs. Discusses functions, relations, ordering, and equivalence
relations. Examines inductive and recursive definitions of structures and
functions. Discusses principles of proof such as truth tables, inductive
proof, and basic logic. Also covers the counting techniques and arguments
needed to estimate the size of sets, the growth of functions, and the space-
time complexity of algorithms.
**Corequisite(s):**[CS 1802](/search/?P=CS%201802 "CS 1802")
**Attribute(s):** NUpath Formal/Quant Reasoning
**CS 1802. Seminar for CS 1800. (1 Hour)**
Accompanies [CS 1800](/search/?P=CS%201800 "CS 1800"). Illustrates topics from
the lecture course through discussions, quizzes, and homework assignments.
**Corequisite(s):**[CS 1800](/search/?P=CS%201800 "CS 1800")
**CS 1990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**CS 2500. Fundamentals of Computer Science 1. (4 Hours)**
Introduces the fundamental ideas of computing and the principles of
programming. Discusses a systematic approach to word problems, including
analytic reading, synthesis, goal setting, planning, plan execution, and
testing. Presents several models of computing, starting from nothing more than
expression evaluation in the spirit of high school algebra. Assumes no prior
programming experience; therefore, suitable for first-year students—majors,
and nonmajors alike—who wish to explore the intellectual ideas in the
discipline.
**Corequisite(s):**[CS 2501](/search/?P=CS%202501 "CS 2501")
**Attribute(s):** NUpath Formal/Quant Reasoning, NUpath Natural/Designed World
**CS 2501. Lab for CS 2500. (1 Hour)**
Accompanies [CS 2500](/search/?P=CS%202500 "CS 2500"). Covers topics from the
course through various experiments.
**Corequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500")
**CS 2510. Fundamentals of Computer Science 2. (4 Hours)**
Continues [CS 2500](/search/?P=CS%202500 "CS 2500"). Examines object-oriented
programming and associated algorithms using more complex data structures as
the focus. Discusses nested structures and nonlinear structures including hash
tables, trees, and graphs. Emphasizes abstraction, encapsulation, inheritance,
polymorphism, recursion, and object-oriented design patterns. Applies these
ideas to sample applications that illustrate the breadth of computer science.
**Prerequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum
grade of D-
**Corequisite(s):**[CS 2511](/search/?P=CS%202511 "CS 2511")
**Attribute(s):** NUpath Analyzing/Using Data, NUpath Natural/Designed World
**CS 2511. Lab for CS 2510. (1 Hour)**
Accompanies [CS 2510](/search/?P=CS%202510 "CS 2510"). Covers topics from the
course through various experiments.
**Corequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510")
**CS 2800. Logic and Computation. (4 Hours)**
Introduces formal logic and its connections to computer and information
science. Offers an opportunity to learn to translate statements about the
behavior of computer programs into logical claims and to gain the ability to
prove such assertions both by hand and using automated tools. Considers
approaches to proving termination, correctness, and safety for programs.
Discusses notations used in logic, propositional and first order logic,
logical inference, mathematical induction, and structural induction.
Introduces the use of logic for modeling the range of artifacts and phenomena
that arise in computer and information science.
**Prerequisite(s):**([CS 1800](/search/?P=CS%201800 "CS 1800") with a minimum
grade of D- or [MATH 1365](/search/?P=MATH%201365 "MATH 1365") with a minimum
grade of D- or MATH 2310 with a minimum grade of D- ); [CS
2500](/search/?P=CS%202500 "CS 2500") with a minimum grade of D-
**CS 2810. Mathematics of Data Models. (4 Hours)**
Studies the methods and ideas in linear algebra, multivariable calculus, and
statistics that are most relevant for the practicing computer scientist doing
machine learning, modeling, or hypothesis testing with data. Covers least
squares regression, finding eigenvalues to predict a linear system’s behavior,
performing gradient descent to fit a model to data, and performing t-tests and
chi-square tests to determine whether differences between populations are
significant. Includes applications to popular machine-learning methods,
including Bayesian models and neural networks.
**Prerequisite(s):**[CS 1800](/search/?P=CS%201800 "CS 1800") with a minimum
grade of D- ; [CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum grade
of D-
**Attribute(s):** NUpath Analyzing/Using Data, NUpath Formal/Quant Reasoning
**CS 2963. Topics. (1,2 Hours)**
Offers undergraduate students an opportunity to learn about timely issues,
develop new skills, or explore areas of broad interest in an immersive, short-
course format. Content and instructors vary by offering. May be repeated three
times.
**CS 2990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**CS 2991. Research in Computer Science. (1-4 Hours)**
Offers an opportunity to conduct introductory-level research or creative
endeavors under faculty supervision. May be repeated three times.
**CS 2992. Research. (0 Hours)**
Offers an opportunity to document student contributions to research projects
or creative endeavors.
**CS 3000. Algorithms and Data. (4 Hours)**
Introduces the basic principles and techniques for the design, analysis, and
implementation of efficient algorithms and data representations. Discusses
asymptotic analysis and formal methods for establishing the correctness of
algorithms. Considers divide-and-conquer algorithms, graph traversal
algorithms, and optimization techniques. Introduces information theory and
covers the fundamental structures for representing data. Examines flat and
hierarchical representations, dynamic data representations, and data
compression. Concludes with a discussion of the relationship of the topics in
this course to complexity theory and the notion of the hardness of problems.
**Prerequisite(s):**(([CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [DS 2500](/search/?P=DS%202500 "DS 2500") with a minimum grade
of D- ); [CS 1800](/search/?P=CS%201800 "CS 1800") with a minimum grade of D-
) or [EECE 2160](/search/?P=EECE%202160 "EECE 2160") with a minimum grade of
D-
**Corequisite(s):**[CS 3001](/search/?P=CS%203001 "CS 3001")
**Attribute(s):** NUpath Formal/Quant Reasoning
**CS 3001. Recitation for CS 3000. (0 Hours)**
Accompanies [CS 3000](/search/?P=CS%203000 "CS 3000"). Provides students with
additional opportunities to ask questions and engage with course material.
**Corequisite(s):**[CS 3000](/search/?P=CS%203000 "CS 3000")
**CS 3200. Introduction to Databases. (4 Hours)**
Studies the design of a database for use in a relational database management
system. The entity-relationship model and normalization are used in problems.
Relational algebra and then the SQL (structured query language) are presented.
Advanced topics include triggers, stored procedures, indexing, elementary
query optimization, and fundamentals of concurrency and recovery. Students
implement a database schema and short application programs on one or more
commercial relational database management systems.
**Prerequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum
grade of D- or [DS 2000](/search/?P=DS%202000 "DS 2000") with a minimum grade
of D- or [EECE 2560](/search/?P=EECE%202560 "EECE 2560") with a minimum grade
of D-
**Attribute(s):** NUpath Analyzing/Using Data
**CS 3500. Object-Oriented Design. (4 Hours)**
Presents a comparative approach to object-oriented programming and design.
Discusses the concepts of object, class, meta-class, message, method,
inheritance, and genericity. Reviews forms of polymorphism in object-oriented
languages. Contrasts the use of inheritance and composition as dual techniques
for software reuse: forwarding vs. delegation and subclassing vs. subtyping.
Fosters a deeper understanding of the principles of object-oriented
programming and design including software components, object-oriented design
patterns, and the use of graphical design notations such as UML (unified
modeling language). Basic concepts in object-oriented design are illustrated
with case studies in application frameworks and by writing programs in one or
more object-oriented languages.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [EECE 2560](/search/?P=EECE%202560 "EECE 2560") with a minimum
grade of D-
**Corequisite(s):**[CS 3501](/search/?P=CS%203501 "CS 3501")
**Attribute(s):** NUpath Analyzing/Using Data, NUpath Natural/Designed World
**CS 3501. Lab for CS 3500. (1 Hour)**
Accompanies [CS 3500](/search/?P=CS%203500 "CS 3500"). Covers topics from the
course and provides students with additional opportunities to engage with
course material.
**Corequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500")
**CS 3520. Programming in C++. (4 Hours)**
Examines how to program in C++ in a robust and safe manner. Reviews basics,
including scoping, typing, and primitive data structures. Discusses data types
(primitive, array, structure, class, string); addressing/parameter mechanisms
(value, pointer, reference); stacks; queues; linked lists; binary trees; hash
tables; and the design of classes and class inheritance, emphasizing single
inheritance. Considers the instantiation of objects, the trade-offs of stack
vs. heap allocation, and the design of constructors and destructors.
Emphasizes the need for a strategy for dynamic memory management. Addresses
function and operator overloading; templates, the Standard Template Library
(STL), and the STL components (containers, generic algorithms, iterators,
adaptors, allocators, function objects); streams; exception handling; and
system calls for processes and threads.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [DS 2500](/search/?P=DS%202500 "DS 2500") with a minimum grade
of D-
**CS 3540. Game Programming. (4 Hours)**
Introduces the different subsystems used to create a 3D game, including
rendering, animation, collision, physics, audio, trigger systems, game logic,
behavior trees, and simple artificial intelligence. Offers students an
opportunity to learn the inner workings of game engines and how to use
multiple libraries such as physics and graphics libraries to develop a game.
Discusses graphics pipeline, scene graph, level design, behavior scripting,
object-oriented game design, world editors, and game scripting languages.
**Prerequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum
grade of D- or [ARTG 2260](/search/?P=ARTG%202260 "ARTG 2260") with a minimum
grade of D- or [ARTG 2262](/search/?P=ARTG%202262 "ARTG 2262") with a minimum
grade of D-
**CS 3620. Building Extensible Systems. (4 Hours)**
Deals with the design of extensible software systems, which enable clients to
add functionality both statically as well as dynamically. Examples of such
systems are operating systems, game servers, and Web browsers. Describes the
classic systems built on C-like languages with unsafe, manual memory control
and the more recent systems built on Java-like languages with safe, automated
memory management. Introduces the Rust programming language, which combines
the efficiency of C with safe manual memory control via type specifications
and compiler constraints. Offers students an opportunity to build systems
using all three settings but focuses on the Rust approach. Students also have
an opportunity to evaluate their work via essays and memos.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- ; ([ENGW 1111](/search/?P=ENGW%201111 "ENGW 1111") with a minimum
grade of C or [ENGW 1102](/search/?P=ENGW%201102 "ENGW 1102") with a minimum
grade of C or ENGL 1111 with a minimum grade of C or ENGL 1102 with a minimum
grade of C )
**Attribute(s):** NUpath Writing Intensive
**CS 3650. Computer Systems. (4 Hours)**
Introduces the basic design of computing systems, computer operating systems,
and assembly language using a RISC architecture. Describes caches and virtual
memory. Covers the interface between assembly language and high-level
languages, including call frames and pointers. Covers the use of system calls
and systems programming to show the interaction with the operating system.
Covers the basic structures of an operating system, including application
interfaces, processes, threads, synchronization, interprocess communication,
deadlock, memory management, file systems, and input/output control.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [EECE 2560](/search/?P=EECE%202560 "EECE 2560") with a minimum
grade of D-
**CS 3700. Networks and Distributed Systems. (4 Hours)**
Introduces the fundamentals of computer networks, including network
architectures, network topologies, network protocols, layering concepts (for
example, ISO/OSI, TCP/IP reference models), communication paradigms (point-to-
point vs. multicast/broadcast, connectionless vs. connection oriented), and
networking APIs (sockets). Also covers the construction of distributed
programs, with an emphasis on high-level protocols and distributed state
sharing. Topics include design patterns, transactions, performance trade-offs,
security implications, and reliability. Uses examples from real networks
(TCP/IP, Ethernet, 802.11) and distributed systems (Web, BitTorrent, DNS) to
reinforce concepts.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D-
**CS 3800. Theory of Computation. (4 Hours)**
Introduces the theory behind computers and computing aimed at answering the
question, “What are the capabilities and limitations of computers?” Covers
automata theory, computability, and complexity. The automata theory portion
includes finite automata, regular expressions, nondeterminism, nonregular
languages, context-free languages, pushdown automata, and noncontext-free
languages. The computability portion includes Turing machines, the Church-
Turing thesis, decidable languages, and the Halting theorem. The complexity
portion includes big-O and small-o notation, the classes P and NP, the P vs.
NP question, and NP-completeness.
**Prerequisite(s):**[CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [EECE 2160](/search/?P=EECE%202160 "EECE 2160") with a minimum
grade of D-
**CS 3950. Introduction to Computer Science Research. (2 Hours)**
Introduces students to research in the fields of computer science, information
science, data science, and cybersecurity. Explores how the scientific method
is applied to these fields and covers the breadth of subareas of specialty
that exist. Offers students an opportunity to practice how to locate and read
scientific literature in different subareas. Also offers students an overview
of graduate education in these fields.
**Prerequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum
grade of D-
**CS 3990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**CS 4050. Artificial Intelligence and Society. (4 Hours)**
Examines the societal impact of artificial intelligence technologies and
prominent strategies for aligning these impacts with social and ethical
values. Offers multidisciplinary readings to provide conceptual lenses for
understanding these technologies in their contexts of use.
**CS 4097. Mixed Reality. (4 Hours)**
Seeks to provide a strong foundation in the fundamentals of virtual and
augmented reality, broadly defined as mixed reality (XR). These technologies
have recently witnessed a resurgence of interest. Offers students an
opportunity to obtain hands-on experience developing XR applications by diving
into this burgeoning area of research and practice in computer science.
Synthesizes theoretical and practice knowledge from various disciplines,
including computer graphics, 3D interfaces, human-computer interaction,
tracking systems, and perceptual psychology.
**Prerequisite(s):**[CS 3540](/search/?P=CS%203540 "CS 3540") with a minimum
grade of D-
**CS 4100. Artificial Intelligence. (4 Hours)**
Introduces the fundamental problems, theories, and algorithms of the
artificial intelligence field. Includes heuristic search; knowledge
representation using predicate calculus; automated deduction and its
applications; planning; and machine learning. Additional topics include game
playing; uncertain reasoning and expert systems; natural language processing;
logic for common-sense reasoning; ontologies; and multiagent systems.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade
of D-
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 4120. Natural Language Processing. (4 Hours)**
Introduces the computational modeling of human language; the ongoing effort to
create computer programs that can communicate with people in natural language;
and current applications of the natural language field, such as automated
document classification, intelligent query processing, and information
extraction. Topics include computational models of grammar and automatic
parsing, statistical language models and the analysis of large text corpora,
natural language semantics and programs that understand language, models of
discourse structure, and language use by intelligent agents. Course work
includes formal and mathematical analysis of language models and
implementation of working programs that analyze and interpret natural language
text. Knowledge of statistics is helpful.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade
of D-
**CS 4150. Game Artificial Intelligence. (4 Hours)**
Offers an overview of classical and modern approaches to artificial
intelligence in digital games. Focuses on the creation of believable agents
and environments with the goal of providing a fun and engaging experience to a
player. Covers player modeling, procedural content generation, behavior trees,
interactive narrative, decision-making systems, cognitive modeling, and path
planning. Explores different approaches for behavior generation, including
learning and rule-based systems. Requires students to complete several
individual assignments in these areas to apply the concepts covered in class.
Students choose a group final project to explore one aspect of artificial
intelligence for games in further depth. Offers students an opportunity to
learn team management and communication. Students who do not meet course
prerequisites may seek permission of instructor.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- ; [CS 3520](/search/?P=CS%203520 "CS 3520") with a minimum grade
of D-
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 4180. Reinforcement Learning. (4 Hours)**
Introduces reinforcement learning and the Markov decision process (MDP)
framework. Covers methods for planning and learning in MDPs such as dynamic
programming, model-based methods, and model-free methods. Examines commonly
used representations including deep-learning representations. Students are
expected to have a working knowledge of probability, to complete programming
assignments, and to complete a course project that applies some form of
reinforcement learning to a problem of interest.
**Prerequisite(s):**[CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum
grade of D- ; ([ECON 2350](/search/?P=ECON%202350 "ECON 2350") with a minimum
grade of D- or [ENVR 2500](/search/?P=ENVR%202500 "ENVR 2500") with a minimum
grade of D- or [MATH 3081](/search/?P=MATH%203081 "MATH 3081") with a minimum
grade of D- or [PSYC 2320](/search/?P=PSYC%202320 "PSYC 2320") with a minimum
grade of D- or [CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum grade
of D- ); ([MATH 2331](/search/?P=MATH%202331 "MATH 2331") with a minimum grade
of D- or [CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum grade of D-
)
**CS 4300. Computer Graphics. (4 Hours)**
Charts a path through every major aspect of computer graphics with varying
degrees of emphasis. Discusses hardware issues: size and speed; lines,
polygons, and regions; modeling, or objects and their relations; viewing, or
what can be seen (visibility and perspective); rendering, or how it looks
(properties of surfaces, light, and color); transformations, or moving,
placing, distorting, and animating and interaction, or drawing, selecting, and
transforming.
**Prerequisite(s):**([CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum
grade of D- or [CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum grade
of D- or [EECE 2560](/search/?P=EECE%202560 "EECE 2560") with a minimum grade
of D- ); ([MATH 1260](/search/?P=MATH%201260 "MATH 1260") with a minimum grade
of D- or [MATH 2331](/search/?P=MATH%202331 "MATH 2331") with a minimum grade
of D- or [MATH 2341](/search/?P=MATH%202341 "MATH 2341") with a minimum grade
of D- or [CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum grade of D-
)
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 4360. Non-Interactive Computer Graphics. (4 Hours)**
Introduces computer graphics algorithms and concepts primarily focusing on
offline rendering techniques. Consists of a lecture component and in-class
laboratory to study common image synthesis algorithms and techniques to
generate images used in games and 3D animated movies. Culminates with a final
project in which students complete in groups or individually a renderer for
generating high quality images. Students with an interest in a career as a
graphics, rendering, or high performance computer engineer may consider taking
this course.
**Prerequisite(s):**([CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum
grade of D- or [MATH 2331](/search/?P=MATH%202331 "MATH 2331") with a minimum
grade of D- ); [CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum grade
of D-
**CS 4400. Programming Languages. (4 Hours)**
Introduces a systematic approach to understanding the behavior of programming
languages. Covers interpreters; static and dynamic scope; environments;
binding and assignment; functions and recursion; parameter-passing and method
dispatch; objects, classes, inheritance, and polymorphism; type rules and type
checking; and concurrency.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- ; ([CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum grade
of D- or CS 4800 with a minimum grade of D- )
**CS 4410. Compilers. (4 Hours)**
Studies the construction of compilers and integrates material from earlier
courses on programming languages, automata theory, computer architecture, and
software design. Examines syntax trees; static semantics; type checking;
typical machine architectures and their software structures; code generation;
lexical analysis; and parsing techniques. Uses a hands-on approach with a
substantial term project.
**Prerequisite(s):**[CS 4400](/search/?P=CS%204400 "CS 4400") with a minimum
grade of D- or [CS 5400](/search/?P=CS%205400 "CS 5400") with a minimum grade
of C- or [CS 7400](/search/?P=CS%207400 "CS 7400") with a minimum grade of C-
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 4500. Software Development. (4 Hours)**
Considers software development as a systematic process involving
specification, design, documentation, implementation, testing, and
maintenance. Examines software process models; methods for software
specification; modularity, abstraction, and software reuse; and issues of
software quality. Students, possibly working in groups, design, document,
implement, test, and modify software projects.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- ; ([ENGW 1111](/search/?P=ENGW%201111 "ENGW 1111") with a minimum
grade of C or [ENGW 1102](/search/?P=ENGW%201102 "ENGW 1102") with a minimum
grade of C )
**Attribute(s):** NUpath Writing Intensive
**CS 4520. Mobile Application Development. (4 Hours)**
Focuses on mobile application development on a mobile phone or related
platform. Discusses memory management; user interface building, including both
MVC principles and specific tools; touch events; data handling, including core
data, SQL, XML, and JSON; network techniques and URL loading; and, finally,
specifics such as GPS and motion sensing that may be dependent on the
particular mobile platform. Students are expected to work on a project that
produces a professional-quality mobile application. The instructor chooses a
modern mobile platform to be used in the course.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D-
**CS 4530. Fundamentals of Software Engineering. (4 Hours)**
Covers the fundamentals of software engineering, including software
development life cycle models (e.g., waterfall, spiral,agile); requirements
analysis; user-centered design; software design principles and patterns;
testing (functional testing, structural testing, testing strategies); code
refactoring and debugging; software architecture and design; and integration
and deployment. Includes a course project in which some of the software
engineering methods (from requirements analysis to testing) are applied in a
team-based setting.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D-
**Attribute(s):** NUpath Writing Intensive
**CS 4535. Professional Practicum Capstone. (4 Hours)**
Offers students an opportunity to expand skills in real-world application
development and team collaboration within an experiential learning structure.
Involves students in industry-specific projects designed to integrate into an
industry partner’s intellectual property portfolio. Projects focus on software
design and development and also include written components that align with the
partner’s standards and reference relevant prior work. Students engage in a
structured process of milestones and feedback cycles with peers; instructors;
and, as appropriate, industry partners to refine project outcomes.
**Attribute(s):** NUpath Capstone Experience, NUpath Integration Experience,
NUpath Writing Intensive
**CS 4550. Web Development. (4 Hours)**
Discusses Web development for sites that are dynamic, data driven, and
interactive. Focuses on the software development issues of integrating
multiple languages, assorted data technologies, and Web interaction. Considers
ASP.NET, C#, HTTP, HTML, CSS, XML, XSLT, JavaScript, AJAX, RSS/Atom, SQL, and
Web services. Requires each student to deploy individually designed Web
experiments that illustrate the Web technologies and at least one major
integrative Web site project. Students may work as a team with the permission
of the instructor. Each student or team must also create extensive
documentation of their goals, plans, design decisions, accomplishments, and
user guidelines. All source files must be open and be automatically served by
a sources server.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade
of D-
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 4610. Robotic Science and Systems. (4 Hours)**
Introduces autonomous mobile robots, with a focus on algorithms and software
development, including closed-loop control, robot software architecture,
wheeled locomotion and navigation, tactile and basic visual sensing, obstacle
detection and avoidance, and grasping and manipulation of objects. Offers
students an opportunity to progressively construct mobile robots from a
predesigned electromechanical kit. The robots are controlled wirelessly by
software of the students’ own design, built within a provided robotics
software framework. The course culminates in a grand challenge competition
using all features of the robots.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D-
**CS 4700. Network Fundamentals. (4 Hours)**
Introduces the fundamental concepts of network protocols and network
architectures. Presents the different harmonizing functions needed for the
communication and effective operation of computer networks. Provides in-depth
coverage of data link control, medium access control, routing, end-to-end
transport protocols, congestion and flow control, multicasting, naming, auto
configuration, quality of service, and network management. Studies the
abstract mechanisms and algorithms as implemented in real-world Internet
protocols. Also covers the most common application protocols (e-mail, Web, and
ftp).
**Prerequisite(s):**[CS 3650](/search/?P=CS%203650 "CS 3650") with a minimum
grade of D- or [CS 5600](/search/?P=CS%205600 "CS 5600") with a minimum grade
of D- or [CS 5600](/search/?P=CS%205600 "CS 5600") with a minimum grade of C-
(Graduate)
**CS 4710. Mobile and Wireless Systems. (4 Hours)**
Covers both theoretical foundations of wireless/mobile networking and
practical aspects of wireless/mobile systems, including current standards,
mobile development platforms, and emerging technologies. Incorporates a strong
practical component; requires students to work in teams on several practical
assignments (e.g., based on Wi-Fi sensing, mobile applications, Internet-of-
Things devices, and software-defined radio applications) and a final project.
The final project integrates knowledge about several wireless communication
technologies and mechanisms.
**Prerequisite(s):**[CS 3700](/search/?P=CS%203700 "CS 3700") with a minimum
grade of D- or [CS 4730](/search/?P=CS%204730 "CS 4730") with a minimum grade
of D-
**CS 4730. Distributed Systems. (4 Hours)**
Introduces distributed systems, covering fundamental concepts and showing how
they are applied to build reliable distributed services. Examines several
existing distributed applications, such as file systems, databases, lock
services, digital currencies, smart contracts, and machine learning, and how
these applications must coordinate to function and overcome failures, network
partitions, or compromised parties. Distributed systems, such as databases,
cloud services, and blockchains, are omnipresent in the services and
applications that serve society on a daily basis.
**Prerequisite(s):**[CS 3650](/search/?P=CS%203650 "CS 3650") with a minimum
grade of D-
**CS 4805. Fundamentals of Complexity Theory. (4 Hours)**
Reviews basic material such as automata, Turing machines, (un)decidability,
time complexity, P vs. NP, and NP-completeness. Studies core topics in
computational complexity, including time and space complexity, polynomial
hierarchy, circuit complexity, probabilistic computation, interactive proofs,
and hardness of approximation. Optional topics may include Gödel's
incompleteness theorem, Kolgomorov complexity, cryptography, quantum
computing, communication complexity, lower bounds, or pseudorandomness.
**Prerequisite(s):**[CS 3800](/search/?P=CS%203800 "CS 3800") with a minimum
grade of D-
**CS 4810. Advanced Algorithms. (4 Hours)**
Builds on [CS 3000](/search/?P=CS%203000 "CS 3000"). Presents an advanced
study of computer algorithms. Covers basic algorithmic paradigms (e.g.,
greedy, divide-and-conquer, and dynamic programming); graph algorithms;
optimization; computational Intractability (e.g., NP-completeness, PSPACE-
completeness);  
randomized algorithms; and approximation algorithms.
**Prerequisite(s):**[CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum
grade of D-
**CS 4820. Computer-Aided Reasoning. (4 Hours)**
Covers fundamental concepts, techniques, and algorithms in computer-aided
reasoning, including propositional logic, variants of the DPLL algorithm for
satisfiability checking, first-order logic, unification, tableaux, resolution,
Horn clauses, congruence closure, rewriting, Knuth-Bendix completion, decision
procedures, Satisfiability Modulo Theories, recursion, induction, termination,
Presburger arithmetic, quantifier elimination, and interactive theorem
proving. Offers students an opportunity to develop and implement a reasoning
engine in a sequence of projects over the course of the semester. Also covers
how to formalize and reason about computational systems using a modern
interactive theorem prover.
**Prerequisite(s):**[CS 2800](/search/?P=CS%202800 "CS 2800") with a minimum
grade of D- ; [CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum grade
of D-
**Attribute(s):** NUpath Capstone Experience
**CS 4830. System Specification, Verification, and Synthesis. (4 Hours)**
Covers the fundamental topics in formal modeling and specification (transition
systems, temporal logic, regular and omega-regular languages, safety and
liveness properties, etc.); computer-aided verification (state-space
exploration, model checking, bounded-model checking, binary-decision diagrams,
symbolic model checking, etc.); compositionality and assume-guarantee
reasoning; contracts; and component-based design. Also covers fundamental
topics in computer-aided synthesis of correct-by-construction systems,
starting from high-level formal specifications or from example scenarios.
Designing large and complex systems (digital circuits, embedded control
systems such as automated vehicles, computerized healthcare devices such as
pacemakers, cyber-physical systems such as automated intersections, etc.) and
their software cannot be done by hand. Instead, designers use computer-aided
techniques that allow them to build system models and verify correctness of
the design before the real system is actually built.
**Prerequisite(s):**[CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum
grade of D-
**CS 4850. Building Game Engines. (4 Hours)**
Discusses the components of game engines and strategies for their software
implementation. Includes graphics management algorithms (animation, scene
graph, level of detail); basic artificial intelligence algorithms (search,
decision making, sensing); and related algorithmic issues (networking,
threading, input processing). Explores the use of data-driven software design.
Offers students an opportunity to use a rendering engine and to build and
integrate several software components to create a complete game engine.
Requires students to work on several individual assignments to apply the
algorithms and then develop a project in a team. Offers students an
opportunity to learn team/project management; work division; team
communication; and the software development cycle of implementation, testing,
critique, and further iteration. Students who do not meet course prerequisites
may seek permission of instructor.
**Prerequisite(s):**[CS 3520](/search/?P=CS%203520 "CS 3520") with a minimum
grade of D- ; [CS 3540](/search/?P=CS%203540 "CS 3540") with a minimum grade
of D-
**CS 4950. Computer Science Research Seminar. (1 Hour)**
Offers students an in-depth look at research in a particular subarea of
computer science, information science, data science, or cybersecurity. The
particular subarea varies from semester to semester. Exposes students to
current research topics, often via guest faculty members. Offers students an
opportunity to practice reading and discussing scientific literature,
presenting scientific work, and distilling the key ideas and contributions of
papers through required weekly paper summaries. May be repeated once.
**Prerequisite(s):**[CS 3950](/search/?P=CS%203950 "CS 3950") with a minimum
grade of D-
**CS 4955. Computer Science Teaching Seminar. (1 Hour)**
Introduces techniques and frameworks to prepare undergraduate students to
become more effective teaching assistants in the field of computer science.
Students analyze and reflect on literature, case studies, and real examples of
teaching computer science. Offers students an opportunity to participate
within in-class activities to learn presentation skills, to practice speaking
to different audience sizes, and to learn how to work with different types of
audiences. Culminates with a final capstone project in which students prepare
and present a lecture on a topic in computer science. Successful students are
prepared for careers in teaching, presenting technical content when pursuing
graduate studies, and for presenting technical information in industry.
**Prerequisite(s):**[CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum
grade of D-
**CS 4970. Junior/Senior Honors Project 1. (4 Hours)**
Focuses on in-depth project in which a student conducts research or produces a
product related to the student’s major field. Combined with Junior/Senior
Project 2 or college-defined equivalent for 8 credit honors in the discipline
project.
**CS 4971. Junior/Senior Honors Project 2. (4 Hours)**
Focuses on second semester of in-depth project in which a student conducts
research or produces a product related to the student’s major field.
**Prerequisite(s):**[CS 4970](/search/?P=CS%204970 "CS 4970") with a minimum
grade of D-
**CS 4973. Topics in Computer Science. (4 Hours)**
Offers a lecture course in computer science on a topic not regularly taught in
a formal course. Topics may vary from offering to offering. May be repeated up
to three times.
**Prerequisite(s):**[CS 3000](/search/?P=CS%203000 "CS 3000") with a minimum
grade of D- ; ([CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum grade
of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade of D-
)
**CS 4990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**CS 4991. Research. (4,8 Hours)**
Offers an opportunity to conduct research under faculty supervision. May be
repeated up to three times.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- ; [CS 3800](/search/?P=CS%203800 "CS 3800") with a minimum grade
of D-
**Attribute(s):** NUpath Capstone Experience, NUpath Integration Experience,
NUpath Writing Intensive
**CS 4992. Directed Study. (1-6 Hours)**
Focuses on student examining standard computer science material in fresh ways
or new computer science material that is not covered in formal courses. May be
repeated up to three times.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- ; [CS 3800](/search/?P=CS%203800 "CS 3800") with a minimum grade
of D-
**CS 4998. Research. (0 Hours)**
Offers an opportunity to document student contributions to research projects
or creative endeavors.
**CS 5001. Intensive Foundations of Computer Science. (4 Hours)**
Introduces systematic problem solving through programming. Offers students an
opportunity to learn how to analyze a problem, how to divide and organize the
problem into appropriate components, how to describe the problem in a computer
language, how to analyze and understand the behavior of their programs, and
how to test that their programs are working correctly. Additionally,
introduces a method of program design called object-oriented programming and
various ways to organize data, including a discussion of their advantages and
disadvantages. To practice the course concepts, students undertake assignments
ranging from small, highly specified programming tasks to larger open-ended
problems where students design and code their own solutions.
**Corequisite(s):**[CS 5003](/search/?P=CS%205003 "CS 5003")
**CS 5002. Discrete Structures. (4 Hours)**
Introduces the mathematical structures and methods that form the foundation of
computer science. Studies structures such as sets, tuples, sequences, lists,
trees, and graphs. Discusses functions, relations, ordering, and equivalence
relations. Examines inductive and recursive definitions of structures and
functions. Covers principles of proof such as truth tables, inductive proof,
and basic logic and the counting techniques and arguments needed to estimate
the size of sets, the growth of functions, and the space-time complexity of
algorithms. Also, discusses data structures such as arrays, stacks, queues,
lists, and the algorithms that manipulate them.
**CS 5003. Recitation for CS 5001. (0 Hours)**
Provides a small-group discussion format to cover material in [CS
5001](/search/?P=CS%205001 "CS 5001"). _Coreq[CS 5001](/search/?P=CS%205001
"CS 5001")._.
**Corequisite(s):**[CS 5001](/search/?P=CS%205001 "CS 5001")
**CS 5004. Object-Oriented Design. (4 Hours)**
Presents a comparative approach to object-oriented programming and design.
Discusses the concepts of object, class, metaclass, message, method,
inheritance, and genericity. Reviews forms of polymorphism in object-oriented
languages. Contrasts the use of inheritance and composition as dual techniques
for software reuse—forwarding vs. delegation and subclassing vs. subtyping.
Offers students an opportunity to obtain a deeper understanding of the
principles of object-oriented programming and design, including software
components, object-oriented design patterns, and the use of graphical design
notations such as UML (unified modeling language). Illustrates basic concepts
in object-oriented design with case studies in application frameworks and by
writing programs in Java.
**Prerequisite(s):**([CS 5001](/search/?P=CS%205001 "CS 5001") with a minimum
grade of C- or [CS 5001](/search/?P=CS%205001 "CS 5001") with a minimum grade
of C- ); ([CS 5002](/search/?P=CS%205002 "CS 5002") with a minimum grade of C-
or [CS 5002](/search/?P=CS%205002 "CS 5002") with a minimum grade of C- )
**Corequisite(s):**[CS 5005](/search/?P=CS%205005 "CS 5005")
**CS 5005. Recitation for CS 5004. (0 Hours)**
Provides small-group discussion format to cover material in [CS
5004](/search/?P=CS%205004 "CS 5004").
**Corequisite(s):**[CS 5004](/search/?P=CS%205004 "CS 5004")
**CS 5007. Computer Systems. (2 Hours)**
Introduces the basic design of computing systems, computer operating systems,
and assembly language using a RISC architecture. Describes caches and virtual
memory. Covers the interface between assembly language and high-level
languages, including call frames and pointers; the use of system calls and
systems programming to show the interaction with the operating system; and the
basic structures of an operating system, including application interfaces,
processes, threads, synchronization, interprocess communication, deadlock,
memory management, file systems, and input/output control.
**CS 5008. Data Structures, Algorithms, and Their Applications within Computer
Systems. (4 Hours)**
Presents an integrated approach to the study of data structures, algorithms,
and their application within systems topics. Introduces a variety of
fundamental algorithmic techniques (divide-and-conquer, dynamic programming,
graph algorithms) and systems topics (models of computation, computer
architecture, compilation, system software, networking). Demonstrates the
integration of topics through programming assignments in the C language that
implement fundamental data structures (lists, queues, trees, maps, graphs) and
algorithms as they are applied in computer systems. Additional breadth topics
include programming applications that expose students to primitives of
different subsystems using threads and sockets.
**Prerequisite(s):**([CS 5001](/search/?P=CS%205001 "CS 5001") with a minimum
grade of C- or [CS 5001](/search/?P=CS%205001 "CS 5001") with a minimum grade
of C- ); ([CS 5002](/search/?P=CS%205002 "CS 5002") with a minimum grade of C-
or [CS 5002](/search/?P=CS%205002 "CS 5002") with a minimum grade of C- )
**Corequisite(s):**[CS 5009](/search/?P=CS%205009 "CS 5009")
**CS 5009. Recitation for CS 5008. (0 Hours)**
Provides small-group active learning format to augment material in [CS
5008](/search/?P=CS%205008 "CS 5008").
**Corequisite(s):**[CS 5008](/search/?P=CS%205008 "CS 5008")
**CS 5010. Programming Design Paradigm. (4 Hours)**
Introduces modern program design paradigms. Starts with functional program
design, introducing the notion of a design recipe. The latter consists of two
parts: a task organization (ranging from the description of data to the
creation of a test suite) and a data-oriented approach to the organization of
programs (ranging from atomic data to self-referential data definitions and
functions as data). The course then progresses to object-oriented design,
explaining how it generalizes and contrasts with functional design. In
addition to studying program design, students also have an opportunity to
practice pair-programming and public code review techniques, as found in
industry today.
**Corequisite(s):**[CS 5011](/search/?P=CS%205011 "CS 5011")
**CS 5011. Recitation for CS 5010. (0 Hours)**
Provides small-group discussion format to cover material in [CS
5010](/search/?P=CS%205010 "CS 5010").
**Corequisite(s):**[CS 5010](/search/?P=CS%205010 "CS 5010")
**CS 5047. Exploring AI Trends and Tools. (4 Hours)**
Explores key ideas in artificial intelligence while delving into trending
developments in the field. Examines AI tools and frameworks to enable
collaboration effectively and efficiently across technical and nontechnical
stakeholders. Analyzes topics such as AI-enabled perception, representation,
reasoning, and learning as contextualized by societal impact. Offers students
an opportunity to obtain the knowledge and skills necessary to confidently
navigate the ever-evolving landscape of AI.
**CS 5097. Mixed Reality. (4 Hours)**
Seeks to provide a strong foundation in the fundamentals of virtual and
augmented reality, broadly defined as mixed reality (XR), and hands-on
experience developing XR applications. Offers students an opportunity to dive
into this burgeoning area of research and practice in computer science. Given
the complex nature of XR environments, this course synthesizes theoretical and
practice knowledge from various disciplines, including computer graphics, 3D
interfaces, human-computer interaction, tracking systems, and perceptual
psychology (to name a few). XR technologies have recently witnessed a
resurgence of interest.
**CS 5100. Foundations of Artificial Intelligence. (4 Hours)**
Introduces the fundamental problems, theories, and algorithms of the
artificial intelligence field. Topics include heuristic search and game trees,
knowledge representation using predicate calculus, automated deduction and its
applications, problem solving and planning, and introduction to machine
learning. Required course work includes the creation of working programs that
solve problems, reason logically, and/or improve their own performance using
techniques presented in the course.
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 5150. Game Artificial Intelligence. (4 Hours)**
Offers an overview of classical and modern approaches to artificial
intelligence in digital games. Focuses on the creation of believable agents
and environments with the goal of providing a fun and engaging experience to a
player. Covers player modeling, procedural content generation, behavior trees,
interactive narrative, decision-making systems, cognitive modeling, and path
planning. Explores different approaches for behavior generation, including
learning and rule-based systems. Requires students to complete several
individual assignments in these areas to apply the concepts covered in class.
Students choose a group final project, which requires a report, to explore one
aspect of artificial intelligence for games in further depth. Offers students
an opportunity to learn team management and communication. Requires knowledge
of algorithms and experience with object-oriented design or functional
programming.
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 5170. Artificial Intelligence for Human-Computer Interaction. (4 Hours)**
Offers an overview of the wide range of AI techniques that exploit knowledge
of the domain and humans to facilitate interaction between humans and systems,
mediate human-human interaction, leverage humans to improve system
performance, and promote beneficial outcomes at the social and individual
level. Topics can include AI/human computation, plan and activity recognition,
smart sensing/homes, active learning, preference elicitation,
intelligent/adaptive user interfaces, and mixed human-agent simulations.
Studies how to design and develop intelligent interaction technologies while
also critically assessing their social and ethical impact.
**Prerequisite(s):**[CS 5100](/search/?P=CS%205100 "CS 5100") with a minimum
grade of C- ; [CS 5800](/search/?P=CS%205800 "CS 5800") with a minimum grade
of C- ; [CS 6140](/search/?P=CS%206140 "CS 6140") with a minimum grade of C-
**CS 5180. Reinforcement Learning and Sequential Decision Making. (4 Hours)**
Introduces reinforcement learning and the underlying computational frameworks
and the Markov decision process framework. Covers a variety of reinforcement
learning algorithms, including model-based, model-free, value function, policy
gradient, actor-critic, and Monte Carlo methods. Examines commonly used
representations including deep learning representations and approaches to
partially observable problems. Students are expected to have a working
knowledge of probability and linear algebra, to complete programming
assignments, and to complete a course project that applies some form of
reinforcement learning to a problem of interest.
**CS 5200. Database Management Systems. (4 Hours)**
Introduces relational database management systems as a class of software
systems. Prepares students to be sophisticated users of database management
systems. Covers design theory, query language, and performance/tuning issues.
Topics include relational algebra, SQL, stored procedures, user-defined
functions, cursors, embedded SQL programs, client-server interfaces, entity-
relationship diagrams, normalization, B-trees, concurrency, transactions,
database security, constraints, object-relational DBMSs, and specialized
engines such as spatial, text, XML conversion, and time series. Includes
exercises using a commercial relational or object-relational database
management system.
**Attribute(s):** NUpath Analyzing/Using Data
**CS 5310. Computer Graphics. (4 Hours)**
Introduces the fundamentals of two-dimensional and three-dimensional computer
graphics, with an emphasis on approaches for obtaining realistic images.
Covers two-dimensional algorithms for drawing lines and curves, anti-aliasing,
filling, and clipping. Studies rendering of three-dimensional scenes composed
of spheres, polygons, quadric surfaces, and bi-cubic surfaces using ray-
tracing and radiosity. Includes techniques for adding texture to surfaces
using texture and bump maps, noise, and turbulence. Requires knowledge of
linear algebra.
**Prerequisite(s):**[MATH 2331](/search/?P=MATH%202331 "MATH 2331") with a
minimum grade of D- or graduate program admission
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 5330. Pattern Recognition and Computer Vision. (4 Hours)**
Introduces fundamental techniques for low-level and high-level computer
vision. Examines image formation, early processing, boundary detection, image
segmentation, texture analysis, shape from shading, photometric stereo, motion
analysis via optic flow, object modeling, shape description, and object
recognition (classification). Discusses models of human vision (gestalt
effects, texture perception, subjective contours, visual illusions, apparent
motion, mental rotations, and cyclopean vision). Requires knowledge of linear
algebra.
**Prerequisite(s):**[MATH 2331](/search/?P=MATH%202331 "MATH 2331") with a
minimum grade of D- or graduate program admission
**CS 5335. Robotic Science and Systems. (4 Hours)**
Introduces autonomous mobile robots with a focus on algorithms and software
development, including closed-loop control, robot software architecture,
wheeled locomotion and navigation, tactile and basic visual sensing, obstacle
detection and avoidance, and grasping and manipulation of objects. Offers
students an opportunity to progressively construct mobile robots from a
predesigned electromechanical kit. The robots are controlled wirelessly by
software of the students’ own design, built within a provided robotics
software framework. Culminates in a project that connects the algorithms and
hardware developed in the course with a selected topic in the current robotics
research literature.
**CS 5340. Computer/Human Interaction. (4 Hours)**
Covers the principles of human-computer interaction and the design and
evaluation of user interfaces. Topics include an overview of human information
processing subsystems (perception, memory, attention, and problem solving);
how the properties of these systems affect the design of user interfaces; the
principles, guidelines, and specification languages for designing good user
interfaces, with emphasis on tool kits and libraries of standard graphical
user interface objects; and a variety of interface evaluation methodologies
that can be used to measure the usability of software. Other topics may
include World Wide Web design principles and tools, computer-supported
cooperative work, multimodal and “next generation” interfaces, speech and
natural language interfaces, and virtual reality interfaces. Course work
includes both the creation and implementation of original user interface
designs, and the evaluation of user interfaces created by others. Requires
knowledge of C programming language/UNIX.
**CS 5350. Applied Geometric Representation and Computation. (4 Hours)**
Surveys practical techniques for representing geometric objects in two and
three dimensions, for computing their motions and interactions, and for human
interfaces to manipulate them. These techniques are useful not only in
graphics but also in robotics, computer vision, game design, geographic
information systems, computer-aided design and manufacturing, spatial
reasoning and planning, physical simulation, biomechanics, and the
implementation of many types of human-computer interface. Requires
undergraduate background in algorithms.
**CS 5360. Noninteractive Computer Graphics. (4 Hours)**
Introduces computer graphics algorithms and concepts. Focuses on offline
rendering techniques. Consists of a lecture component and in-class laboratory
offering instruction about common image synthesis algorithms and techniques to
generate images used in games and 3D-animated movies. Culminates in a final
individual or group project to complete a renderer for generating high-quality
images. This course is appropriate for students interested in a career as a
graphics, rendering, or high-performance computer engineer.
**CS 5400. Principles of Programming Language. (4 Hours)**
Studies the basic components of programming languages, specification of syntax
and semantics, and description and implementation of programming language
features. Discusses examples from a variety of languages.
**Prerequisite(s):**[CS 5010](/search/?P=CS%205010 "CS 5010") with a minimum
grade of D- or [CS 5004](/search/?P=CS%205004 "CS 5004") with a minimum grade
of B- or [CS 5010](/search/?P=CS%205010 "CS 5010") with a minimum grade of C-
(Graduate)
**CS 5500. Foundations of Software Engineering. (4 Hours)**
Covers the foundations of software engineering, including software development
life cycle models (e.g., waterfall, spiral, agile); requirements analysis;
user-centered design; software design principles and patterns; testing
(functional testing, structural testing, testing strategies); code refactoring
and debugging; software architecture and design; and integration and
deployment. Includes a course project where some of the software engineering
methods (from requirements analysis to testing) are applied in a team-based
setting. Requires admission to MS program or completion of all transition
courses.
**Prerequisite(s):**[CS 5010](/search/?P=CS%205010 "CS 5010") with a minimum
grade of D or [CS 5004](/search/?P=CS%205004 "CS 5004") with a minimum grade
of C or [CS 5010](/search/?P=CS%205010 "CS 5010") with a minimum grade of C
**Attribute(s):** NUpath Writing Intensive
**CS 5520. Mobile Application Development. (4 Hours)**
Focuses on mobile application development on a mobile phone or related
platform. Discusses memory management; user interface building, including both
MVC principles and specific tools; touch events; data handling, including core
data, SQL, XML, and JSON; network techniques and URL loading; and, finally,
specifics such as GPS and motion sensing that may be dependent on the
particular mobile platform. Students are expected to work on a project that
produces a professional-quality mobile application and to demonstrate the
application that they have developed. The instructor chooses a modern mobile
platform to be used in the course.
**CS 5540. Game Programming. (4 Hours)**
Covers the skills needed to develop easily scalable and modifiable scripts
that can be used to implement various game mechanics common to most game
genres. Programming is an integral part of the digital game design and
development life cycle. Designed as a foundational game programming course
covering numerous aspects of game programming.
**Prerequisite(s):**([CS 5004](/search/?P=CS%205004 "CS 5004") with a minimum
grade of C- or [CS 5004](/search/?P=CS%205004 "CS 5004") with a minimum grade
of C- ) or ([CS 2500](/search/?P=CS%202500 "CS 2500") with a minimum grade of
D- ; [CS 2510](/search/?P=CS%202510 "CS 2510") with a minimum grade of D- ;
[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum grade of D- ) or [CS
5010](/search/?P=CS%205010 "CS 5010") with a minimum grade of C-
**CS 5600. Computer Systems. (4 Hours)**
Studies the structure, components, design, implementation, and internal
operation of computer systems, focusing mainly on the operating system level.
Reviews computer hardware and architecture including the arithmetic and logic
unit, and the control unit. Covers current operating system components and
construction techniques including the memory and memory controller, I/O device
management, device drivers, memory management, file system structures, and the
user interface. Introduces distributed operating systems. Discusses issues
arising from concurrency and distribution, such as scheduling of concurrent
processes, interprocess communication and synchronization, resource sharing
and allocation, and deadlock management and resolution. Includes examples from
real operating systems. Exposes students to the system concepts through
programming exercises. Requires admission to MS program or completion of all
transition courses.
**CS 5610. Web Development. (4 Hours)**
Discusses Web development for sites that are dynamic, data driven, and
interactive. Focuses on the software development issues of integrating
multiple languages, assorted data technologies, and Web interaction. Considers
ASP.NET, C#, HTTP, HTML, CSS, XML, XSLT, JavaScript, AJAX, RSS/Atom, SQL, and
Web services. Each student must deploy individually designed Web experiments
that illustrate the Web technologies and at least one major integrative Web
site project. Students may work in teams with the permission of the
instructor. Each student or team must also create extensive documentation of
their goals, plans, design decisions, accomplishments, and user guidelines.
All source files must be open and be automatically served by a sources server.
**Attribute(s):** NUpath Capstone Experience, NUpath Writing Intensive
**CS 5700. Fundamentals of Computer Networking. (4 Hours)**
Studies network protocols, focusing on modeling and analysis, and
architectures. Introduces modeling concepts, emphasizing queuing theory,
including Little’s theorem, M/M/1, M/M/m, M/D/1, and M/G/1 queuing systems.
Discusses performance evaluation of computer networks including performance
metrics, evaluation tools and methodology, simulation techniques, and
limitations. Presents the different harmonizing functions needed for
communication and efficient operation of computer networks and discusses
examples of Ethernet, FDDI, and wireless networks. Covers link layer protocols
including HDLC, PPP, and SLIP; packet framing; spanning tree and learning
bridges, error detection techniques, and automatic repeat request algorithms;
sliding window and reliable/ordered services; and queuing disciplines
including FQ and WFQ. Introduces flow control schemes, such as window flow
control and leaky bucket rate control schemes, and discusses congestion
control and fairness. Requires knowledge of probability theory.
**CS 5800. Algorithms. (4 Hours)**
Presents the mathematical techniques used for the design and analysis of
computer algorithms. Focuses on algorithmic design paradigms and techniques
for analyzing the correctness, time, and space complexity of algorithms.
Topics may include asymptotic notation, recurrences, loop invariants, Hoare
triples, sorting and searching, advanced data structures, lower bounds,
hashing, greedy algorithms, dynamic programming, graph algorithms, and NP-
completeness.
**Attribute(s):** NUpath Formal/Quant Reasoning
**CS 5850. Building Game Engines. (4 Hours)**
Discusses the components of game engines and strategies for their software
implementation. Includes graphics management algorithms (animation, scene
graph, level of detail); basic artificial intelligence algorithms (search,
decision making, sensing); and related algorithmic issues (networking,
threading, input processing). Explores the use of data-driven software design.
Offers students an opportunity to use a rendering engine and to build and
integrate several software components to create a complete game engine.
Requires students to work on individual assignments and then develop a project
in a team, which requires a report. Offers students an opportunity to learn
team/project management; work division; team communication; and the software
development cycle of implementation, testing, critique, and further iteration.
Requires knowledge of computer graphics, differential calculus, operating
systems concepts, and algorithms.
**CS 5933. Advanced Computer Science Topics for Teachers. (4 Hours)**
Offers learners intending to be certified as K–12 computer science educators
an advanced programming course. Covers GUI development and event-driven
programming, an introduction to modeling and simulation, basics of computer
networking and security, as well as topics related to the state of the art in
computer science.
**CS 5934. Introduction to Inclusive Computer Science Teaching. (4 Hours)**
Introduces teaching computer science (CS) in grades K–12. Focuses on
integrating CS concepts with other topic areas. Includes working with
multilingual learners—examining student identities with respect to CS and
exploring strategies for creating an inclusive CS classroom. Offers students
an opportunity to design and practice implementing lesson plans for CS
curricula at all grade levels, to explore current research in CS education,
and to build a portfolio of teaching resources.
**CS 5963. Topics. (1,2 Hours)**
Offers students an opportunity to learn about timely issues, develop new
skills, or explore areas of broad interest in an immersive, short-course
format. Content and instructors vary by offering.
**CS 5964. Projects for Professionals. (0 Hours)**
Offers students an applied project setting in which to apply their curricular
learning. Working with a sponsor, students refine an applied research topic,
perform research, develop recommendations that are shared with a partner
sponsor, and create a plan for implementing their recommendations. Seeks to
benefit students with a curriculum that supports the development of key
business communication skills, project and client management skills, and
frameworks for business analysis. Offers students an opportunity to learn from
sponsor feedback, review 'lessons learned,' and incorporate suggestions from
this review to improve and further develop their career development and
professional plan. May be repeated twice.
**CS 5965. Engaging with Industry Partners for Rising Professionals. (0
Hours)**
Offers students an enhanced applied project setting in which to apply their
curricular learning. Working with a partner sponsor, students refine an
applied research topic, perform research, develop recommendations that are
shared with the partner sponsor, and create a plan for implementing their
recommendations. Curriculum supports students as they develop key business
communication skills, project and client management skills, and frameworks for
business analysis. Offers students an opportunity to learn from sponsor
feedback, review lessons learned, and incorporate suggestions to improve and
further hone their career development and professional plan. Career
development opportunities through skill-building workshops, panels, and
interview preparation are available. Partner-student interactions, including a
culminating project presentation, allow partners to assess student potential
for co-op, internship, or other employment opportunities with the partner. May
be repeated two times.
**CS 5976. Directed Study. (2-4 Hours)**
Focuses on student examining standard computer science material in fresh ways
or new computer science material that is not covered in formal courses. May be
repeated up to three times.
## Information Science Courses
**IS 1300. Knowledge in a Digital World. (4 Hours)**
Examines the impact that information technologies (such as the internet,
search engines, blogs, wikis, and smartphones); information processing
techniques (such as big data analysis, machine learning, crowdsourcing, and
cryptography); and information policies (such as privacy norms and speech
restrictions) have on what we know and how much we know, as individuals and as
a society. The digital world can enhance our ability to acquire knowledge by
providing us with fast and cheap access to huge amounts of information.
However, it can also undermine our cognitive abilities and provide us with
inaccurate or misleading information. Studies normative frameworks from
epistemology and ethics (such as epistemic value theory, the extended mind
hypothesis, and moral rights) to evaluate these technologies and policies.
**Attribute(s):** NUpath Ethical Reasoning, NUpath Societies/Institutions
**IS 1500. Introduction to Web Development. (4 Hours)**
Introduces Web development and networks. Discusses HTML5, CSS, and client-side
scripting with JavaScript and jQuery; embedding of media: images, video, and
sound; the use of back-end data (either from databases or XML) to create
dynamic Web sites; Web hosting, operating systems, and network infrastructure;
and the automation of website construction using content management systems.
Considers the construction of Web forms and the underlying protocols for
information exchange: HTTP and HTTPS. Emphasizes the need for testing both
correctness and usability. Offers a brief introduction to server-side
scripting. Surveys the security problems faced by dynamic websites. Hands-on
laboratory work is built into the course. May be taken as a general elective
by CCIS students but does not count as a CS or IS elective.
**Attribute(s):** NUpath Analyzing/Using Data
**IS 1990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**IS 2000. Principles of Information Science. (4 Hours)**
Introduces information science. Examines how information is used to solve
problems both for individuals and organizations and how information systems
interface with their users. Considers the technical, economic, social, and
ethical issues that arise when working with information. Discusses how to
collect, manage, classify, store, encode, transmit, retrieve, and evaluate
data and information with appropriate security and privacy. Storage models
include lists, tables, and trees (hierarchies). Examines applications of
information: visualization, presentation, categorization, decision making, and
predictive modeling. Introduces key concepts in probability. Explains Bayesian
analysis for information classification and modeling. Teaches intensive
programming in Excel, including VBA macro development. Introduces programming
in R.
**Attribute(s):** NUpath Analyzing/Using Data
**IS 2050. Information and Uncertainty. (4 Hours)**
Introduces the foundations of probabilistic inference, information theory, and
their uses for drawing conclusions from noisy data. Applications include
diagnosing diseases with inconclusive medical tests, locating autonomous
vehicles when sensors are imperfect, and how best to make inferences with
incomplete or partial information. Central topics include distinguishing
deductive and probabilistic inference, philosophical interpretations of
probability, fundamental justifications for the rules of probability, and key
concepts of information theory. Introduces analytic and mathematical methods
of analysis in these cases and contemporary computational (i.e., programming)
techniques for implementing and applying theories of information and
probabilistic inference.
**Attribute(s):** NUpath Analyzing/Using Data, NUpath Formal/Quant Reasoning
**IS 2990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**IS 2991. Research in Information Science. (1-4 Hours)**
Offers an opportunity to conduct introductory-level research or creative
endeavors under faculty supervision. May be repeated three times.
**IS 3050. Information and Uncertainty. (4 Hours)**
Introduces the foundations of probabilistic inference, information theory, and
their uses for drawing conclusions from noisy data. Applications include
diagnosing diseases with inconclusive medical tests, locating autonomous
vehicles when sensors are imperfect, and how best to make inferences with
incomplete or partial information. Central topics include distinguishing
deductive and probabilistic inference, philosophical interpretations of
probability, fundamental justifications for the rules of probability, and key
concepts of information theory. Introduces analytic and mathematical methods
of analysis in these cases and contemporary computational (i.e., programming)
techniques for implementing and applying theories of information and
probabilistic inference.
**Attribute(s):** NUpath Analyzing/Using Data, NUpath Formal/Quant Reasoning
**IS 3500. Information System Design and Development. (4 Hours)**
Discusses the planning, analysis, design, and implementation of computer-based
information systems, focusing on the methodologies and procedures used in
organizational problem solving and systems development. Topics include the
systems development life cycle; project management; requirements analysis and
specification; feasibility and cost-benefit analysis; logical and physical
design; prototyping; and system validation, deployment, and postimplementation
review. Additional topics may include platform and database selection and
integration issues; CASE tools; end-user training; maintenance; and object-
oriented analysis and design.
**Prerequisite(s):**[IS 2000](/search/?P=IS%202000 "IS 2000") with a minimum
grade of D- ; [CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum grade
of D- ; (ENGL 1102 with a minimum grade of C or ENGL 1111 with a minimum grade
of C or [ENGW 1102](/search/?P=ENGW%201102 "ENGW 1102") with a minimum grade
of C or [ENGW 1111](/search/?P=ENGW%201111 "ENGW 1111") with a minimum grade
of C or [ENGW 1113](/search/?P=ENGW%201113 "ENGW 1113") with a minimum grade
of C or [ENGW 1114](/search/?P=ENGW%201114 "ENGW 1114") with a minimum grade
of C )
**Attribute(s):** NUpath Writing Intensive
**IS 3990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**IS 4200. Information Retrieval. (4 Hours)**
Introduces information retrieval (IR) systems and different approaches to IR.
Topics covered include evaluation of IR systems; retrieval, language, and
indexing models; file organization; compression; relevance feedback;
clustering; distributed retrieval and metasearch; probabilistic approaches to
IR; Web retrieval; filtering, collaborative filtering, and recommendation
systems; cross-language IR; multimedia IR; and machine learning for IR.
**Prerequisite(s):**([CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade
of D- ); ([CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum grade of D-
or [ECON 2350](/search/?P=ECON%202350 "ECON 2350") with a minimum grade of D-
or [MATH 2280](/search/?P=MATH%202280 "MATH 2280") with a minimum grade of D-
or [MATH 3081](/search/?P=MATH%203081 "MATH 3081") with a minimum grade of D-
or [MGSC 2301](/search/?P=MGSC%202301 "MGSC 2301") with a minimum grade of D-
or [PSYC 2320](/search/?P=PSYC%202320 "PSYC 2320") with a minimum grade of D-
)
**IS 4300. Human Computer Interaction. (4 Hours)**
Studies the principles of human-computer interaction and the practice of user
interface design. Discusses the major human information processing subsystems
(perception, memory, attention, and problem solving), and how the properties
of these systems influence the design of interactive systems. Reviews
guidelines and specification languages for designing user interfaces, with an
emphasis on tool kits of standard graphical user interface (GUI) objects.
Introduces usability metrics and evaluation methods. Additional topics may
include World Wide Web design principles and tools; wireless/mobile device
interfaces; computer-supported cooperative work; information visualization;
and virtual reality. Course work includes designing user interfaces, creating
working prototypes using a GUI tool kit, and evaluating existing interfaces
using the methods studied.
**Prerequisite(s):**[CS 3500](/search/?P=CS%203500 "CS 3500") with a minimum
grade of D- or [DS 3500](/search/?P=DS%203500 "DS 3500") with a minimum grade
of D-
**IS 4800. Empirical Research Methods. (4 Hours)**
Evaluates and conducts empirical research, focusing on students’ use of
empirical methods to study the effectiveness and organizational/social impact
of information systems and technologies. Empirical research involves a number
of broad steps including identifying problems; developing specific hypotheses;
collecting data relevant to the hypotheses; analyzing the data; and
considering alternative explanations for the empirical findings. Some of the
most commonly used research techniques, such as surveys, experiments, and
ethnographic methods, are discussed. Additional topics include the ethics of
data collection and experimentation in behavioral science. Although the course
focuses primarily on the relationship between formulating research questions
and implementing the appropriate methods to answer them, students can expect
to apply the statistical techniques learned in the course prerequisites.
**Prerequisite(s):**[CS 2810](/search/?P=CS%202810 "CS 2810") with a minimum
grade of D- or [ECON 2350](/search/?P=ECON%202350 "ECON 2350") with a minimum
grade of D- or [ENVR 2500](/search/?P=ENVR%202500 "ENVR 2500") with a minimum
grade of D- or [MATH 2280](/search/?P=MATH%202280 "MATH 2280") with a minimum
grade of D- or [MATH 3081](/search/?P=MATH%203081 "MATH 3081") with a minimum
grade of D- or [MGSC 2301](/search/?P=MGSC%202301 "MGSC 2301") with a minimum
grade of D- or [PHTH 2210](/search/?P=PHTH%202210 "PHTH 2210") with a minimum
grade of D- or [PSYC 2320](/search/?P=PSYC%202320 "PSYC 2320") with a minimum
grade of D-
**IS 4990. Elective. (1-4 Hours)**
Offers elective credit for courses taken at other academic institutions. May
be repeated without limit.
**IS 4991. Research. (4,8 Hours)**
Offers an opportunity to conduct research under faculty supervision. May be
repeated up to three times.
**Prerequisite(s):**[IS 4800](/search/?P=IS%204800 "IS 4800") with a minimum
grade of D- or ([CS 5350](/search/?P=CS%205350 "CS 5350") with a minimum grade
of C- or [CS 5350](/search/?P=CS%205350 "CS 5350") with a minimum grade of D-
)
**Attribute(s):** NUpath Capstone Experience, NUpath Integration Experience,
NUpath Writing Intensive