CS Curricula

←All schools

Binghamton UniversityWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1

CS 101: Professional Skills, Ethics, and CS Trends (1) impact

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.

CS 110: Programming Concepts and Applications (4) intro

An introductory course for students with little or no programming experience. Basic control flow, data types, simple data structures and functions using a scripting language. Developing code using an integrated environment. The basics of directories, files and file types, including text files. Simple examples of the applications enabled by a modern, platform-independent scripting language such as GUIs, event handling, and database access. This course is open to all students who have not taken any other CS courses (with the exception of CS 105) and under these conditions, can count as free-elective credit for CS majors.

CS 120: Programming and Hardware Fundamentals (4) intro

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.

CS 210: Programming with Objects and Data Structures (4) intro

Assumes a foundation in procedural programming as covered in CS 110. Provides the foundations of software development using Java. Problem solving using object-oriented programming techniques is emphasized. Topics include primitive and reference data types, variables, expressions, assignment, functions/methods, parameters, selection, iteration, recursion, exception handling, generic linear data structures and maps, file types, file I/O, simple GUIs, programming to an interface, use of inheritance, design patterns, javadoc documentation, and introduction to Java threads. Required laboratory provides supervised problem solving, programming using the command line as well as Eclipse, Netbeans, or IntelliJ development environments, code backup in a version control repository, debugging and JUnit testing techniques.

CS 220: Architecture from a Programmer's Perspective (4) sys

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.

CS 301: Ethical, Social, and Global Issues in Computing (4) impact

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. Offered every semester.

CS 310: Data Structures and Algorithms (4) algs

Analysis of the design, implementation, and properties of basic and advanced data structures, including lists, stacks, queues, hash tables, trees, heaps, and graphs. Design and time-space analysis of basic and advanced algorithms, including searching, sorting, insert/delete, hash table collision resolution techniques, recursive functions, balanced tree maintenance, and graph algorithms. Weekly required laboratory programming and three or more additional programming projects in C++. Practical programming techniques including C++ templates and the Standard Template Library (STL), operator overloading, C++ stream I/O, separate compilation using makefiles, debugging tools and techniques, dynamic memory management.

CS 320: Advanced Computer Architecture (4) sys

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.

CS 350: Operating Systems (4) sys

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.

CS 373: Automata Theory and Formal Languages (4) theory

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.

CS 375: Design and Analysis of Algorithms (4) algs

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.

CS 395: Computer Science Internship (variable) special

On-the-job, unpaid experience in computer science. Student interns have opportunities to work in local industrial, commercial or not-for-profit institutions and to apply their knowledge to practical professional problems. Formal classroom meetings in which interns share their experiences and discuss job-search techniques.

CS 396: Computer Science Co-Op (variable) special

On-the-job experience in computer science. Co-op students work 20 hours per week for a total of 560 hours, September through May, in local industrial, commercial or not-for-profit organizations and apply their knowledge to practical, professional problems. Students share experiences and discuss job search techniques in formal class meetings. Alternatively, students work full-time for a total of 560 hours outside the local area during one semester. Compensation provided by sponsor organization.

CS 402: Software & Eng. Project Mgmt (4) softeng

Information is traveling faster and being shared by more individuals than ever before. Although project management has been an established field for many years, managing Software Development and Information Technology Projects requires ideas and information that go beyond standard project management. This course presents an understandable, integrated view of the many concepts skills, tools, and techniques involved in software project management. The Project Management Knowledge areas (from PMI?s PMBOK) are used to guide the student through the concepts of Software Project Management techniques and their application to the management of software and IT projects. Specifically, students will learn how to develop a software development plan including its associated tasks, milestones and deliverables, software project scheduling and how/why to establish relationships among the different tasks.

CS 415: Social Media Data Sci Pipeline (4) ai

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.

CS 424: Intelligent Mobile Robotics (4) ai

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.

CS 426: Internet of Things (4) sys

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.

CS 427: Mobile Systems Security (4) sys

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.

CS 428: Computer Networks (4) sys

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.

CS 432: Database Systems (4) sys

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.

CS 433: Information Retrieval (4) sys

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.

CS 435: Introduction to Data Mining (4) ai

Basic topics of data mining, including data preprocessing, mining association rules, classification rules, clustering rules, post processing and mining in unstructured data.

CS 436: Introduction to Machine Learning (4) ai

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.

CS 440: Adv Topics - Obj Oriented Prog (4) intro

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.

CS 441: Game Dev For Mobile Platforms (4) sys

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.

CS 442: Design Patterns (4) softeng

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.

CS 444: Programming for the Web (4) sys

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.

CS 445: Software Engineering (4) softeng

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.

CS 447: High Performance Computing (4) sys

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.

CS 451: Systems Programming (4) sys

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.

CS 452: Intro to Cloud Computing (4) sys

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.

CS 453: Software Security (4) sys

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.

CS 455: Intro to Visual Info Processing (4) ai

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.

CS 456: Introduction to Computer Vision (4) ai

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.

CS 457: Intro To Distributed Systems (4) sys

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.

CS 458: Intro to Computer Security (4) sys

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.

CS 459: Science of Cyber Security (4) sys

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.

CS 460: Computer Graphics (4) 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.

CS 465: Introduction to Artificial Intelligence (4) ai

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).

CS 471: Programming Languages (4) pls

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.

CS 472: Compiler Design (4) pls

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.

CS 476: Program Models Emerg Platforms (4) sys

The landscape of computation platforms has changed dramatically in recent years. Computing devices such as Unmanned Aerial Vehicles (UAVs) are on the horizon. Big data processing becomes an indispensable part of numerous applications. Multi-core CPUs are commonly deployed in computer systems. Programming on these emerging platforms remains a challenging task. This course introduces a number of state-of-the-art programming models on these platforms, and further explores the frontier of next-generation programming language design that may potentially impact the future programming practice for emerging platforms. In particular, the course investigates UAV programming, Big Data programming, and multi-core programming, with additional presentations on other platforms on the rise. Applications of these programming models range from high-performance computing, cyber-physical systems, databases, to energy-conscious systems.

CS 480: Special Topics in Computer Science (4) special

CS 499: Undergraduate Research (variable) special

Participation in research under supervision of a faculty member. Written report and oral presentation required.

MATH 224: Differential Calculus (2) math

This is a 2-credit course in differential calculus covering limits, continuity, and differentiation.

MATH 225: Integral Calculus (2) math

This is a 2-credit course in integral calculus covering optimization and integration.

MATH 226: Integration Tech & Application (2) math

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.

MATH 227: Infinite Series (2) math

This is a 2-credit course covering sequences, series, power series, and Taylor series.

MATH 304: Linear Algebra (4) math

Vector spaces, linear transformations, determinants, characteristic values, inner products.

MATH 314: Discrete Mathematics (4) math

Logic, sets, relations, functions, induction, recursion, counting methods, graphs, trees. Some abstract algebra.

MATH 323: Calculus III (4) math

Calculus of functions of several variables. Every semester.

MATH 327: Probability with Stat Methods (4) math

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.

MATH 330: Number Systems (4) math

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.

MATH 371: Ordinary Diff. Equations (4) math

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..

MATH 381: Graph Theory (4) math

Directed and undirected graphs, trees, connectivity, Eulerian and Hamiltonian graphs, planar graphs, coloring of graphs, graph parameters, optimization and graph algorithms. Spring only.

MATH 386: Combinatorics (4) math

Topics from among counting techniques, generating function and recurrence relations, pigeonhole principle, Ramsey's Theorem, Latin squares, combinatorial designs. Fall only.

MATH 407: Intro to the Theory of Numbers (4) math

Classical number theory. Divisibility, prime numbers, quadratic reciprocity, Diophantine equations.

MATH 448: Mathematical Statistics (4) math

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.

BIOL 113: Intro to Cell & Molecular Biol (4) sci

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.

BIOL 114: Intro to Organisms & Pops Biol (4) sci

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.

BIOL 115: Intro Biology Lab (4) sci

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.

CHEM 104: General Chemistry I (4) sci

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.

CHEM 105: General Chemistry II (4) sci

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).

CHEM 106: General Chemistry Laboratory (2) sci

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).

CHEM 107: Gen Chem I CHEM/BCHEM Majors (4) sci

First of two courses for students who want a one-year, two-semester introductory general chemistry course as basis for further work in a science. Scientific measurement, atomic structure, periodic relationships, theories of bonding, states of matter, solution properties. Lecture and laboratory.

CHEM 108: Gen Chem II CHEM/BCHEM Majors (4) sci

Continuation of CHEM 107. Thermochemistry and thermodynamics; equilibrium; chemical kinetics; electrochemistry; nuclear chemistry; descriptive inorganic, organic and biochemistry.

PHYS 131: Gen. Physics I (Calculus Based) (4) sci

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.

PHYS 132: Gen. Physics II (Calculus Based) (4) sci

Fundamentals of electricity, magnetism, light, wave motion and relativity. Lectures, discussion, demonstration and laboratory.