Binghamton UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Sciencesource 1source 2ABET
CS Courses
- Professional Skills, Ethics, and CS TrendsCS 101 (1)impactCS 101: Professional Skills, Ethics, and 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.
- Programming and Hardware FundamentalsCS 120 (4)introCS 120: Programming and 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.
- Programming with Objects and Data StructuresCS 210 (4)introCS 210: Programming with Objects and Data Structures
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.
- Architecture from a Programmer's PerspectiveCS 220 (4)sysCS 220: Architecture from a Programmer's 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.
- Ethical, Social, and Global Issues in ComputingCS 301 (4)impactCS 301: Ethical, Social, and Global Issues in Computing
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.
- Data Structures and AlgorithmsCS 310 (4)algsCS 310: Data Structures and Algorithms
Analysis of the design, implementation, and properties of basic and advanced data structures, including lists, stacks, queues, hash tables, trees, heaps, and graphs. Design and time-space analysis of basic and advanced algorithms, including searching, sorting, insert/delete, hash table collision resolution techniques, recursive functions, balanced tree maintenance, and graph algorithms. Weekly required laboratory programming and three or more additional programming projects in C++. Practical programming techniques including C++ templates and the Standard Template Library (STL), operator overloading, C++ stream I/O, separate compilation using makefiles, debugging tools and techniques, dynamic memory management.
- Advanced Computer ArchitectureCS 320 (4)sysCS 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.
- Operating SystemsCS 350 (4)sysCS 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.
- Automata Theory and Formal LanguagesCS 373 (4)theoryCS 373: Automata Theory and Formal Languages
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.
- Design and Analysis of AlgorithmsCS 375 (4)algsCS 375: Design and Analysis of Algorithms
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.
- Programming LanguagesCS 471 (4)plsCS 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.
- CS Trackor5 × CS ElectiveArtificial Intelligence Trackorpick 2
Social Media Data Sci PipelineCS 415 (4)aiCS 415: Social Media Data Sci PipelineThe 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.
Intelligent Mobile RoboticsCS 424 (4)aiCS 424: Intelligent Mobile RoboticsThe 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.
Intro to Visual Info ProcessingCS 455 (4)aiCS 455: Intro to Visual Info ProcessingThe 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.
Introduction to Computer VisionCS 456 (4)aiCS 456: Introduction to Computer VisionCourse 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.
Introduction to Machine LearningCS 436 (4)aiCS 436: Introduction to Machine LearningThis 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.
Introduction to Artificial IntelligenceCS 465 (4)aiCS 465: Introduction to Artificial IntelligenceThis 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).
1 × CS electiveCybersecurity Trackpick 2
Mobile Systems SecurityCS 427 (4)sysCS 427: Mobile Systems SecurityThis 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.
Computer NetworksCS 428 (4)sysCS 428: Computer NetworksCommunication 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.
Introduction to Machine LearningCS 436 (4)aiCS 436: Introduction to Machine LearningThis 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.
Software SecurityCS 453 (4)sysCS 453: Software SecurityThis 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.
Intro to Computer SecurityCS 458 (4)sysCS 458: Intro to Computer SecurityThe 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.
Science of Cyber SecurityCS 459 (4)sysCS 459: Science of Cyber SecurityThis 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.
1 × CS elective
Math/Stat Courses
- orOrdinary Diff. EquationsorororMATH 371 (4)mathMATH 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..
- orNumber SystemsMATH 330 (4)mathMATH 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.
- Probability with Stat MethodsorMATH 327 (4)mathMATH 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.
Mathematical StatisticsMATH 448 (4)mathMATH 448: Mathematical StatisticsEstimation, 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.
Science Courses
- orIntro to Cell & Molecular BiolBIOL 113 (4)sciBIOL 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.
Intro to Organisms & Pops BiolBIOL 114 (4)sciBIOL 114: Intro to Organisms & Pops BiolIntroductory 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.
Intro Biology LabBIOL 115 (4)sciBIOL 115: Intro Biology LabIntroductory 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.
orGeneral Chemistry ICHEM 104 (4)sciCHEM 104: General Chemistry IFundamentals 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.
General Chemistry IICHEM 105 (4)sciCHEM 105: General Chemistry IIThermochemistry 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).
General Chemistry LaboratoryCHEM 106 (2)sciCHEM 106: General Chemistry LaboratoryExperiments 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).
orGen Chem I CHEM/BCHEM MajorsCHEM 107 (4)sciCHEM 107: Gen Chem I CHEM/BCHEM MajorsFirst 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.
Gen. Physics I (Calculus Based)PHYS 131 (4)sciPHYS 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.
Other Courses
- 3 × Free Elective
Program Educational Objectives
Graduates of our program will be:
- Successful in their profession in leadership or supporting positions, in which they exercise and apply their technical computer science background. These positions will use their skills in problem-solving and software or systems development.
- Capable of working well in teams, communicating effectively and meeting the social and ethical responsibilities of their profession.
- Engaged in lifelong learning relevant to their profession, including earning advanced degrees based on their computer science background or completing professional training.
Student Outcomes
Graduates of the program will have an ability to:
- Analyze a complex computing problem, and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program's discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.