PRINTER-FRIENDLY VERSION OF THE GUIDESHEETStudents 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.
These suggested course tracks are based on undergraduate requirements from the class
entering in the 2022-23 academic year. These are only suggestions, refer to the University Academic Guide for the official requirements for each major.
For archived requirements refer to the University Academic Guide. Select the desired year, then click Link to Resource under the heading View Online.
For more information on graduate-level requirements go here.
Credit Requirements
To receive the BS degree in computer science, students must earn a minimum of 126
credit hours, including transfer credits, with a minimum 2.0 (C) grade-point average
in computer science major courses, and a minimum cumulative grade-point average of
2.0.
Of the minimum 126 semester credits:
- A minimum of 60 credits must be in liberal arts and sciences courses.
- A minimum of 40 credits must be earned in Computer Science Watson College.
- A minimum of 45 credits must be completed at the 300-level or above.
Area Requirements
Communications - 8 Credits
One course that meets the Binghamton Univeristy General Education Composition requirement.
AND
-
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
Humanities/Social Science Electives - 20 Credits
Science - 8 or 10 Credits
The total of the science and free elective credits should be 22 credits.
Select one of the following sequences:
-
BIOL 113 - Intro to Cell & Molecular Biol
Introductory Biology: Cell and molecular Biology. Survey of cell and molecular
biology: biological macromolecules, cellular organization and metabolism, cell communication,
cell differentiation, coding of genetic information, inheritance, gene expression
and regulation, cell replication, biotechnology, as well as cellular and molecular
aspects of animal physiology. Lecture and discussion. BIOL 113 and 114 may be taken
in any order. Offered regularly. 4 credits.
Levels: Undergraduate
-
BIOL 114 - Intro to Organisms & Pops Biol
Introductory Biology: Organisms and Populations. Survey of organismal and population
biology; history of life; structure and physiology of plants and animals; homeostasis,
integration, growth, ecology; animal behavior; evolution. Lecture and discussion.
BIOL 113 and 114 may be taken in any order. Offered regularly. 4 credits.
Levels: Undergraduate
-
BIOL 115 - Intro Biology Lab
Introductory research-based course organized around developing novel research hypotheses
and executing studies and experiments to test those hypotheses. The course covers
the complete scientific process: assessing literature, learning techniques for field-
and lab-based data collection, collecting and analyzing data, and writing and sharing
results. Course fee applies. Refer to the Schedule of Classes. Co-requisite or prerequisite
of BIOL 113 or BIOL 114. Offered regularly.
Levels: Undergraduate
OR
-
CHEM 104 - General Chemistry I
Fundamentals of chemistry, including atomic structure, stoichiometry, chemical
reactions, kinetic theory of gases, thermochemistry, chemical bonding, molecular geometry
and bonding theories, as well as properties of liquids, solids, and solutions. This
material provides the foundation for CHEM 105; together, CHEM 104 and CHEM 105 provide
a thorough treatment of chemical principles. This course is recommended for pre‐health
students and science majors (other than Chemistry and Biochemistry majors). Not open
to students who have credit for CHEM 111, CHEM107 or CHEM 108. Offered regularly.
4 Credits.
Levels: Graduate, Undergraduate
-
CHEM 105 - General Chemistry II
Thermochemistry and thermodynamics; equilibrium; chemical kinetics; electrochemistry;
nuclear chemistry; descriptive inorganic, organic and biochemistry. This course is
recommended for pre‐health students and
science majors (other than Chemistry and Biochemistry majors). Prerequisite: CHEM
104 or equivalent. Not open to students who have credit for CHEM 111, CHEM107 or CHEM
108. Offered regularly. 4 credits.
Levels: Undergraduate
-
CHEM 106 - General Chemistry Laboratory
Experiments designed to teach students basic laboratory skills and provide them
with an authentic research experience in chemistry through a combination of lecture
and laboratory sessions. This course is recommended for pre‐health students and science
majors (other than Chemistry and Biochemistry majors). Co or Prerequisite: CHEM 104.
Offered regularly. 2 credits. Course fee applies. Refer to the Schedule of Classes.
Levels: Undergraduate
OR
-
PHYS 131 - Gen. Physics I(Calculus Based)
A calculus based introduction to the basic concepts underlying physical phenomena,
including kinematics, dynamics, energy, momentum, forces found in nature, rotational
motion, angular momentum, simple harmonic motion, fluids, thermodynamics and kinetic
theory. Lectures, discussion, demonstration, and laboratory. Pre or Co-requisites:
high school trigonometry and algebra; AP calculus or MATH 224/225. Offered spring
semester. 4 credits.
Levels: Graduate, Undergraduate
-
PHYS 132 - Gen.Physics II(Calculus Based)
Fundamentals of electricity, magnetism, light, wave motion and relativity. Lectures,
discussion, demonstration and laboratory. Prerequisite: PHYS 131. Pre or Corequisite:
MATH 226/227. Offered fall semester. 4 credits.
Levels: Undergraduate
Mathematics - 20 Credits
-
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
-
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
OR
-
MATH 330 - Number Systems
Careful discussion of the real numbers, the rational numbers and the integers,
including a thorough study of induction and recursion. Countable and uncountable sets.
The methodology of mathematics: basic logic, the use of quantifiers, equivalence relations,
sets and functions. Methods of proof in mathematics. Training in how to discover and
write proofs. Prerequisites: C or better in MATH 227 or MATH 230, or consent of instructor.
Every semester. 4 credits.
Levels: Undergraduate
AND
-
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
OR
-
MATH 448 - Mathematical Statistics
Estimation, confidence intervals and hypothesis testing. Introduction to linear
models, categorical data and nonparametric statistics. Students who obtain B- or better
in this course can apply for the VEE Mathematical Statistics credits from Society
of Actuaries. Prerequisites: C or better in MATH 447 and either MATH 314 or MATH 330,
or consent of instructor. Every semester. 4 credits.
Levels: Undergraduate
As well as one elective chosen from the following list.
-
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
-
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
-
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
-
MATH 386 - Combinatorics
Topics from among counting techniques, generating function and recurrence relations,
pigeonhole principle, Ramsey's Theorem, Latin squares, combinatorial designs.
Prerequisites: C or better in both MATH 304 and either MATH 314 or MATH 330, or consent
of instructor. Fall only. 4 credits.
Levels: Undergraduate
-
MATH 407 - Intro to the Theory of Numbers
Classical number theory. Divisibility, prime numbers, quadratic reciprocity, Diophantine
equations. Prerequisites: C or better in MATH 330, or consent of instructor. 4 credits.
Levels: Undergraduate
Mathematics or Science Elective - 4 Credits
-
MATH 323 - Calculus III
Calculus of functions of several variables. Prerequisites: C- or better in MATH
227 or MATH 230, or consent of instructor. Every semester. 4 credits.
Levels: Undergraduate
Or a scince elective chosen from the courses that meet the General Education Labrotory
Science requirement.
Free Electives - 12 or 14 Credits
The total of the science and free elective credits should be 22 credits.
At least four credits must be in liberal arts and science. At most one free elective
in liberal arts and science may be taken pass/fail instead of a letter grade. At most
2 credits of activity/wellness may be used as free elective credit.
Computer Science - 52 Credits
-
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
-
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 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 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
At least 15 credits of Computer Science electivesmust be chosen, and at least one
course must be chosen from each of the areas A, B, and C. Courses in multipl areas
count as meeting all the areas indicated. Courses from D and E are optional. At most,
one course can be taken from E.
A: Networking and Communications
-
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 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 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 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 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
B: Large Software Development
-
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 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 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 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 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 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 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 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
C: Data and Information Management
-
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 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 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 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
D: Other Courses
-
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
Restrictions:
Must be enrolled in one of the following Majors:
Computer Science
-
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 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 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 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 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-480 any approved topics course, prequisites will vary by course.
Any future approved CS 400-level course will count as area D and other areas as is
appropriate.
E: Internship, Co-op, Research
To count as a CS elective, courses in this area must be taken for a total of 3 credits.
- CS 395. Computer Science Internship. Prerequisites: CS 220, 240, junior or senior
standing and CS Department approval
- CS 396. Computer Science Co-op. Prerequisites: CS 220, 240, junior or senior standing
and CS Department approval
- CS 499. Undergraduate Research. Prerequisites vary by research area. Requires junior
or senior standing, supervision by a Computer Science faculty
member, and completion of CS Department approval form.
General Education Requirements
Students must fulfill the General Education Requirements for Computer Science. Students
normally complete these requirements within the 126-credit program described above.
Supplemental information regarding the BSCS Degree Requirements
The following information supplements that provided in the University Academic Guide.
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 (Mathematical Statistics),
which has a prerequisite of MATH 323 and MATH 447.
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 free elective credits must be in Liberal Arts
and Science in order to ensure the 60 credits needed for a BS degree. 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: None
- CS 110: MATH 225
- CS 120: CS 110, MATH 225
- CS 140: CS 110, MATH 225
- CS 220: CS 120, 140
- CS 240: CS 120, 140, MATH 226
- CS 301: CS 101, Gen Ed C/J course, CS 220 or 240
- CS 320: CS 220
- CS 350: CS 220, 240, 301
- CS 373: CS 140, MATH 314 or 330
- CS 375: CS 240, MATH 227, 314 or 330, CS 301
- CS 402: CS 220, 240
- CS 415: CS 350, 375, MATH 327 or 448
- CS 424: CS 350, 375
- CS 426: CS 320 or 350
- CS 428: CS 350
- CS 432: CS 375
- CS 433: CS 375
- CS 435: CS 375, MATH 304, 327 or 448
- CS 436: CS 375, MATH 327 or 448
- CS 440: CS 240, 350
- CS 441: CS 140, 375
- CS 442: CS 140, 375
- CS 444: CS 320 or 350 or 375
- CS 445: CS 350 or 375
- CS 447: CS 22, 240, 320 or 350
- CS 451: CS 350
- CS 452: CS 350
- CS 453: CS350
- CS 455: CS 375
- CS 456:
- CS 457: CS 350
- CS 458: CS 350, 375
- CS 459: CS 375, MATH 327 or 448
- CS 460: CS 375
- CS 465: CS 375
- CS 471: CS 373, 375
- CS 472: CS 373, 375
- CS 476: CS 140, 320, 350