Javascript is currently not supported, or is disabled by this browser. Please enable Javascript for full functionality.

   
    Jul 01, 2024  
2024-2025 Binghamton University Academic Guide 
  
2024-2025 Binghamton University Academic Guide

Courses


 

Computer Science

  
  • CS 105 - Intro To Computing


    Credits: 4

    Computing and its place in our society, including ethics and privacy. Basic concepts of computer hardware and systems. Data flow in computer systems. Understanding and using common application programs: word processors, spreadsheets and databases. Computers in communications. Basic concepts of algorithms, programming and the programming process. CS majors may only use this as free-elective credit. Does not provide any prerequisites for courses in the CS major or minor. Prerequisite: none

  
  • CS 106 - Everyday Computing


    Credits: 4

    Translating human logic to computer logic; program flow, data structures and functions; graphics; libraries; networks; and basic data analytics. Provides the basic digital literacy required for responsible digital communications in professional environments. Introduces essential computing concepts and programming skills in a widely used scripting language. Students follow protocols and use tools to promote secure practices in the workplace, at school, and at home. Intended for non-majors; cannot be used toward the fulfillment of a computer science degree. Prerequisites: none. Term offered varies.

  
  • CS 110 - Pgming Concepts&Applic


    Credits: 4

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

  
  • CS 115 - FRI Image & Acoustic Signal I


    Credits: 4

    This is one of two lecture-lab courses of a 2-semester sequence for FRI students in Image and Acoustic Signals Analysis. Computing skills in MATLAB and Unix and introduction to computer programming. Technical writing using LaTeX. Students will learn research techniques while gaining understanding of research problems in this area. Prerequisites: HARP 170 and enrollment in Freshman Research Immersion (FRI) program (All prerequisites must have a grade of C- or better). Offered in the Spring semester.

    Course Fees Course fee applies. Refer to the Schedule of Classes.
  
  • CS 120 - Prog & Hardware Fundamentals


    Credits: 4

    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.

  
  • CS 185A - Living/Learning Computer Proj


    Credits: Variable

    Projects developed in the context of Residential Life’s Learning Communities. Projects minimally include technology, community service and group learning and depend on the interests of instructor and needs of the sponsoring Living Community. Only counts as free-elective credit for CS majors.

  
  • CS 207 - Introduction to Data Science


    Credits: 4

    This course will provide a broad overview of data science’s different areas, from statistics, machine learning to data engineering and many data science applications. The course teaches critical concepts and skills in computer programming and statistical inference, in conjunction with hands-on analysis of real-world datasets, including economic data, document collections, geographical data, and social networks. This course is designed to provide a non-technical introduction to the data science approach. It is intended both for students from non-quantitative fields and those from a quantitative field who are interested in data science. The pre-requisite for this course includes working knowledge in high school math (Math 108 or equivalent), a course in introductory statistics (at the level of Math 147, Math 148 or AP statistics with grade 3+, or equivalent). It is recommended that a student have some understanding of scientific research. Prior programming experience is NOT required. Software: it is expected that both R and python programming will be introduced in this course. CS majors may only use this as free-elective credit. Does not provide any prerequisites for courses in the CS major or minor. Term offered varies.

  
  • CS 210 - Prog with Obj & Data


    Credits: 4

    Assumes a foundation in procedural programming as covered in CS 110. Provides the foundations of software development using Java. Problem solving using object-oriented programming techniques is emphasized. Topics include primitive and reference data types, variables, expressions, assignment, functions/methods, parameters, selection, iteration, recursion, exception handling, generic linear data structures and maps, file types, file I/O, simple GUIs, programming to an interface, use of inheritance, design patterns, javadoc documentation, and introduction to Java threads. Required laboratory provides supervised problem solving, programming using the command line as well as Eclipse, Netbeans, or IntelliJ development environments, code backup in a version control repository, debugging and JUnit testing techniques. Prerequisite: CS 110, CS Majors may request a waiver from the Undergraduate Director based on prior programming experience, and Math 225 (All prerequisites must have a grade of C- or better). CS 120 (can be taken concurrently).

  
  • CS 211 - Programming I Engineers


    Credits: 4

    Introduction to computer programming with engineering applications. Programming in the procedural language C, control structures, functions, arrays and pointers. Introduction to abstract data types and object-oriented programming using C++. This course is intended for Engineering Students. Not applicable toward a major or minor in computer science.

  
  • CS 212 - Programming II for Engineers


    Credits: 4

    Development tools and methodologies for modular programming with an emphasis on engineering applications using the C language. Software design using functional and data abstraction. Specification, use and implementation of abstract data types including stacks, queues, lists, trees and graphs. Programming language features such as recursion, dynamically allocated data structures and separate compilation. Introduction to algorithm analysis, searching and sorting. Exposure to C++ classes for implementing abstract data types. Prerequisite: CS 211. This course is intended for Engineering Students. Not applicable toward major or minor in computer science. Offered in the Spring semester.

  
  • CS 215 - FRI Image & Acoustic Signal II


    Credits: 4

    This is the second of two lecture-lab courses of a 2-semester sequence for FRI students in Image and Acoustic Signals Analysis. Computer programming in C, and selected topics in multimedia signal processing and computer vision. Students will learn research techniques while gaining understanding of research problems in this area. Prerequisites: HARP 170 and EECE 115/CS 115, and enrollment in Freshman Research Immersion (FRI) program (All prerequisites must have a grade of C- or better).

    Course Fees Course fee applies. Refer to the Schedule of Classes.
  
  • CS 220 - Arch from a Prog Perspective


    Credits: 4

    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.

  
  • CS 301 - Eth Soc & Global Issues Comput


    Credits: 4

    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.

  
  • CS 310 - Data Struct & Algorithms


    Credits: 4

    Analysis of the design, implementation, and properties of basic and advanced data structures, including lists, stacks, queues, hash tables, trees, heaps, and graphs. Design and time-space analysis of basic and advanced algorithms, including searching, sorting, insert/delete, hash table collision resolution techniques, recursive functions, balanced tree maintenance, and graph algorithms. Weekly required laboratory programming and three or more additional programming projects in C++. Practical programming techniques including C++ templates and the Standard Template Library (STL), operator overloading, C++ stream I/O, separate compilation using makefiles, debugging tools and techniques, dynamic memory management. Prerequisites: CS 120, and either CS 140 or CS 210, and either MATH 227 (may be taken concurrently) OR MATH 230 (All prerequisites must have a grade of C- or better).

  
  • CS 311 - Operating Systems Concepts


    Credits: 4

    Introduction to fundamental concepts for the design and implementation of operating systems: hardware/software interfaces; processes and threads; scheduling; synchronization techniques and primitives; memory management and virtual memory; file systems; input/output subsystems; resource and system virtualization; protection and security; introduction to distributed systems. Not open to CS majors. Prerequisites: CS 212 and EECE 287 (All prerequisites must have a grade of C- or better).

  
  • CS 320 - Advanced Computer Architecture


    Credits: 4

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

  
  • CS 350 - Operating Systems


    Credits: 4

    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.

  
  • CS 373 - Automata Theory & Formal Lg.


    Credits: 4

    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.

  
  • CS 375 - Design & Analysis of Algorithm


    Credits: 4

    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.

  
  • CS 395 - Computer Science Internship


    Credits: Variable

    On-the-job, unpaid experience in computer science. Student interns have opportunities to work in local industrial, commercial or not-for-profit institutions and to apply their knowledge to practical professional problems. Formal classroom meetings in which interns share their experiences and discuss job-search techniques. Prerequisites: four courses in computer science; open to computer science minors or majors. Registration competitive and by consent of instructor. To count as a computer science elective, this course must be taken for a total of (168 hours). Prerequisites: CS 220 and either CS 240 or CS 310 and Junior or Senior standing in Computer Science (All prerequisites must have a grade of C- or better). To count as a CS elective student must have a total of of CS 395. Offered every semester. s.

  
  • CS 396 - Computer Science Co-Op


    Credits: Variable

    On-the-job experience in computer science. Co-op students work 20 hours per week for a total of 560 hours, September through May, in local industrial, commercial or not-for-profit organizations and apply their knowledge to practical, professional problems. Students share experiences and discuss job search techniques in formal class meetings. Alternatively, students work full-time for a total of 560 hours outside the local area during one semester. Compensation provided by sponsor organization. Prerequisites: CS 220 and either CS 240 or CS 310 and Junior or Senior standing in Computer Science (All prerequisites must have a grade of C- or better). Registration, by consent of instructor, is competitive and requires sponsor interview. To count as a CS elective student must have a total of of CS 396. Offered every semester.

  
  • CS 397 - Independent Study


    Credits: Variable

    Individual study under direct supervision of faculty member investigating topic of interest to student. Special registration form required with signature of supervising faculty member. Can only count as free-elective credit for CS majors. Can not be counted for the CS minor.

  
  • CS 402 - Software & Eng. Project Mgmt


    Credits: 4

    Information is traveling faster and being shared by more individuals than ever before. Although project management has been an established field for many years, managing Software Development and Information Technology Projects requires ideas and information that go beyond standard project management. This course presents an understandable, integrated view of the many concepts skills, tools, and techniques involved in software project management. The Project Management Knowledge areas (from PMI’s PMBOK) are used to guide the student through the concepts of Software Project Management techniques and their application to the management of software and IT projects. Specifically, students will learn how to develop a software development plan including its associated tasks, milestones and deliverables, software project scheduling and how/why to establish relationships among the different tasks. Prerequisites: CS 220 and either CS 240 or CS 310, Junior or Senior standing in Computer Science or Information Systems, Junior or Senior standing in Computer Engineering (All prerequisites must have a grade of C- or better) Term offered varies.

  
  • CS 415 - Social Media Data Sci Pipeline


    Credits: 4

    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.

  
  • CS 417X - Intr to Human Comp Interaction


    Credits: 3

    This course provides an overview of Human-Computer Interaction (HCI) and its various applications. It covers a range of important topics, including the fundamentals of HCI, basic techniques of data analysis, Mobile and Wearable Computing, Ubiquitous Computing (Internet of Things), VR/AR, Brain-Computer Interaction (BCI), Accessibility, and Smart Health. Throughout the course, students will gain a solid understanding of HCI principles, along with practical insights into recent advancements and applications.Prerequisites: CS 375 Design & Analysis of Algorithms, MATH 327 Probability & Statistics. Expected to be offered at least once a year

  
  • CS 424 - Intelligent Mobile Robotics


    Credits: 4

    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.

  
  • CS 426 - Internet of Things


    Credits: 4

    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.

  
  • CS 427 - Mobile Systems Security


    Credits: 4

    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.

  
  • CS 428 - Computer Networks


    Credits: 4

    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.

  
  • CS 432 - Database Systems


    Credits: 4

    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.

  
  • CS 433 - Information Retrieval


    Credits: 4

    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.

  
  • CS 435 - Introduction To Data Mining


    Credits: 4

    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.

  
  • CS 436 - Intro to Machine Learning


    Credits: 4

    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.

  
  • CS 440 - Adv Topics - Obj Oriented Prog


    Credits: 4

    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.

  
  • CS 441 - Game Dev For Mobile Platforms


    Credits: 4

    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.

  
  • CS 442 - Design Patterns


    Credits: 4

    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.

  
  • CS 444 - Programming for the Web


    Credits: 4

    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.

  
  • CS 445 - Software Engineering


    Credits: 4

    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.

  
  • CS 447 - High Performance Computing


    Credits: 4

    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.

  
  • CS 451 - Systems Programming


    Credits: 4

    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.

  
  • CS 452 - Intro to Cloud Computing


    Credits: 4

    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.

  
  • CS 453 - Software Security


    Credits: 4

    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.

  
  • CS 455 - Intro to Visual Info Processin


    Credits: 4

    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.

  
  • CS 456 - Intro to Computer Vision


    Credits: 4

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

  
  • CS 457 - Intro To Distributed Systems


    Credits: 4

    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.

  
  • CS 458 - Intro to Computer Security


    Credits: 4

    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.

  
  • CS 459 - Science of Cyber Security


    Credits: 4

    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.

  
  • CS 460 - Computer Graphics


    Credits: 4

    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.

  
  • CS 465 - Intro to Artificial Intelligen


    Credits: 4

    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.

  
  • CS 471 - Programming Languages


    Credits: 4

    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.

  
  • CS 472 - Compiler Design


    Credits: 4

    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.

  
  • CS 476 - Program Models Emerg Platforms


    Credits: 4

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

  
  • CS 480A - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480B - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480C - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480E - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480F - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480G - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480I - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480K - Special Topics


    Credits: 4

    This course will provide students with advanced topics in cloud computing with coverage of core cloud components such as virtualization techniques, distributed systems, cloud service models, and representative cloud computing systems. It will not only include the in-depth study of the fundamental enabling techniques such as server, network, and data storage virtualization, but also provide the demonstration of how these techniques work inside today’s widely-used cloud-based systems such as MapReduce, key-value stores, and Openstack. The course will include weekly assignments in the form of homework, labs, and projects. Students will also be required to read, critique and present papers on research topics in the domain of cloud computing. Prerequisite: CS 350. Offered annually.

  
  • CS 480L - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480N - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480R - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480S - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480T - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480V - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480W - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480Y - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 480Z - Special Topics


    Credits: 4

    Special topics in Computer Science. Semester offered varies.

  
  • CS 485 - Info Systems Senior Proj I


    Credits: 4

    First semester of two-semester-long team projects involving analysis, specification, design, implementation and documentation of large-scale information systems. Project teams work to bring structure to a loosely formulated business/organizational problem. Previously learned concepts and techniques are applied in a real-world environment. Interpersonal (including communication) skills are enhanced. Host organizations and the instructor supervise the projects. Oral and written reports are required. Prerequisite: senior standing in the Information Systems Dual-Diploma program.

  
  • CS 486 - Info Systems Senior Proj II


    Credits: 4

    Continuation of CS 485, Information Systems Project I. Prerequisite: CS 485 and senior standing in the Information Systems Dual-Diploma program. Offered in Spring semester.

  
  • CS 499 - Undergraduate Research


    Credits: Variable

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

  
  • CS 515 - Social Media Data Sci Pipeline


    Credits: 3

    The focus of this course is on applying data science techniques to large-scale social media. The topics covered include large-scale data collection, cleaning, and management, exploratory analysis and measurement techniques, hypothesis testing and statistical modeling, and predictive, real time analytics. Students will build an end-to-end analysis pipeline and use it to answer questions about online events as they occur. The goal of the class is to provide students with a methodological toolbox, the technical skills to make use of these tools, and the experience of using them on real world data. Prerequisite: Undergraduate Operating Systems, Undergraduate Algorithms, Probability with Stat Methods or equivalent. Term offered varies.

  
  • CS 517X - Intr to Human Comp Interaction


    Credits: 3

    This course provides an overview of Human-Computer Interaction (HCI) and its various applications. It covers a range of important topics, including the fundamentals of HCI, basic techniques of data analysis, Mobile and Wearable Computing, Ubiquitous Computing (Internet of Things), VR/AR, Brain-Computer Interaction (BCI), Accessibility, and Smart Health. Throughout the course, students will gain a solid understanding of HCI principles, along with practical insights into recent advancements and applications. Prerequisites: CS 375 Design & Analysis of Algorithms, MATH 327 Probability & Statistics. Expected to be offered at least once a year

  
  • CS 520 - Computer Architecture & Organ


    Credits: 3

    Pipelined processors: basic theory, instruction pipelines, multifunction units, dynamic instruction scheduling, branch handling, precise interrupts. Compiler techniques for enhancing ILP. Pipelined vector machines. Superscalar, VLIW and EPIC architectures. High-speed memory system design. Overview of parallel/multiprocessor architectures: SIMD/MIMD systems, interconnection networks, synchronization and cache coherence. Prerequisite: Computer Architecture. Offered every semester when possible.

  
  • CS 524 - Intelligent Mobile Robotics


    Credits: 3

    The focus of this course is on intelligent mobile robots that can autonomously operate in indoor environments with limited human guidance. The topics covered in this course include mapping, localization, navigation, planning, reasoning, and human-robot interaction (language-based and vision-based). The students will learn to develop software in Robot Operating System (ROS) on real mobile robots. The goal of this course is to help students learn entry-level algorithms and programming skills that are required to conduct research in the area of intelligent mobile robotics. Prerequisite: Undergraduate Operating Systems and Algorithms. Term offered varies.

  
  • CS 526 - Internet of Things


    Credits: 3

    This course covers the applied area of Internet of Things (IoT). IoT are pervasive computing systems consisting of smart sensors embedded in physical environments with many promising applications. IoT challenge many classical approaches to computing and networking. Students will learn about key techniques in IoT through this course. A substantial part of the material will cover wireless sensor networks, embedded operating systems, and network protocols. A variety of different IoT applications will be introduced, including clinical monitoring, structural health monitoring, and industrial process automation. In this course, students will also have an opportunity to obtain hands-on experience on programming embedded devices to sense and communicate. Prerequisite: Either Undergraduate Operating Systems or Advanced Computer Architecture. Term offered varies.

  
  • CS 527 - Mobile Systems Security


    Credits: 3

    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 528 - Computer Networks


    Credits: 3

    Communication protocols and layering, hardware-software infrastructures for networking, MAC protocols, data link protocols, switching, inter- and intra-domain routing, the TCP/IP protocol suite, transport protocols, application layer protocols, local and system area networks, wireless and sensor networks, overlay and virtual networks, client-server and peer-to-peer models, network programming with sockets, protocol design and implementation issues, network security. Prerequisite: Undergraduate Operating Systems. Term offered varies.

  
  • CS 532 - Database Systems


    Credits: 3

    Associations between data elements and data models: entity-relationship, relational and object-oriented. Relational database design techniques. Formal and commercial query languages. Introduction to query processing, transaction management and concurrency control. Prerequisite: Undergraduate Algorithms. Term offered varies.

  
  • CS 533 - Information Retrieval


    Credits: 3

    Indexing and data structures for storing and searching the index. Boolean, statistical, inference nets and knowledge-based models. Thesaurus construction. Query expansion. Natural language and linguistic techniques. Evaluation. Distributed information retrieval. Information integration and fusion. Dissemination of information. Summaries, themes and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries. Prerequisite: Undergraduate Algorithms. Term offered varies.

  
  • CS 535 - Introduction To Data Mining


    Credits: 3

    Basic topics of data mining, including data preprocessing, mining association rules, classification rules, clustering rules, post processing, and mining in unstructured data. Prerequisite: Undergraduate Algorithms and Probability & Statistics or equivalent. Term offered varies.

  
  • CS 536 - Intro to Machine Learning


    Credits: 3

    This course provides a broad introduction to machine learning and its applications. Major topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, support vector machines); computational learning theory (bias/variance tradeoffs, VC theory, large margins); unsupervised learning; semi-supervised learning; reinforcement learning. The course will give students the basic ideas and intuition behind different techniques as well as a more formal understanding of how and why they work. The course will also discuss recent applications of machine learning, such as to data mining, bioinformatics, and information retrieval. Prerequisites: Undergraduate Algorithms, Probability with Statistical Methods. Term offered varies

  
  • CS 540 - Adv Topics - Obj Oriented Prog


    Credits: 3

    Object-oriented programming and its concomitant design patterns provide rich abstractions for program development. These programs will eventually execute on real hardware, however. This course will investigate advanced object-oriented techniques and how they interact with hardware and operating system issues. We will ground our topics in C++, but the goal of the course will be to develop understanding that can be applied across languages. We will examine different design techniques for things such as memory management, and explore how and why they differ in performance and robustness. We will also cover idioms such as “Resource Acquisition Is Initialization” (RAII) and how they can be used to provide robust resource management for exceptions (exception safety). We will also devote time to covering generic programming and related topics such as expression templates. This is a growing area that seeks to decouple algorithms and data structures through the use of templates and other meta-programming techniques. These techniques exploit the fact that the C++ template mechanism is a language-within-a-language that is executed at compile-time rather than run-time. Additional topics include dynamic linking for techniques such as “plug-ins”, template instantiation mechanisms, template specialization, idioms for memory management, thread-safety issues, thread-safety, C++ reflection. Prerequisites: Undergraduate Operating Systems. Term offered varies.

  
  • CS 541 - Game Dev For Mobile Platforms


    Credits: 3

    This course focuses software development for mobile computing platforms, such as smartphones and tablets, with an emphasis on games. Students will develop interactive applications and utilize the wide variety of sensors and networking features available on the platform, along with basic elements of graphics programming and animation. The course also covers the mechanics of distributing software for mobile computing platforms. Both iOS and Android operating systems will be covered. The course will feature a mix of individual and team projects. Prerequisite: Programming with Objects & Data Structures, Java Programming, Undergraduate Algorithms or equivalents. Term offered varies.

  
  • CS 542 - Design Patterns


    Credits: 3

    Patterns for program design including examples of patterns used in existing software libraries. Exercises in programming with design patterns and communicating designs to other programmers using the language of patterns. Use of an object-oriented programming language to implement patterns and principles for common design problems. Design patterns are applied to problems involving features such as concurrency, sockets, streams, reflection, and dynamic proxies. The course also discusses automating software build processes with build tools. Prerequisites: Java Programming, Undergraduate Algorithms or equivalents. Term offered varies.

  
  • CS 544 - Programming for the Web


    Credits: 3

    An in-depth understanding of programming for the World Wide Web: detailed coverage of widely used language(s) for web programming, asynchronous programming, principles of web architecture, web protocols, web design patterns, client-side programming, templating, server-side programming, a technical history of the web, web security. Students are expected to have experience with a modern programming language and will be assigned programming projects using current state-of-the-art web technologies. Prerequisite: Undergraduate Operating Systems or Undergraduate Algorithms, or equivalents. Term offered varies.

  
  • CS 545 - Software Engineering


    Credits: 3

    Software engineering practice applied to the life cycle of large software applications and engineering projects. Software project planning and management: risk management, estimation, scheduling, trade studies, CM and SQA. Software development: process model selection, domain analysis, requirements gathering, analysis and design modeling, user interface design, architectural and detailed design, documentation, testing strategies/methods, test plan generation, and reuse. Advanced topics include formal methods and cleanroom software engineering. Requires a major team project. Prerequisite: Undergraduate Algorithms Term offered varies.

  
  • CS 547 - High Performance Computing


    Credits: 3

    This course covers the applied area of high performance computing for machine learning, big data, and scientific computing. Students will learn about techniques for programs where the amount of computation is substantial enough that performance is a major concern. A substantial part of the material will cover parallel computation, including message-passing, multicore, and vectorization. A variety of different algorithms and applications will be considered, including machine learning, big data, and more traditional scientific computing. Prerequisite: Computer Architecture or Undergraduate Operating Systems and C programming. Term offered varies.

  
  • CS 550 - Operating Systems


    Credits: 3

    Advanced topics in operating systems. Process synchronization, linguistic support for concurrency, virtual memory, deadlock theory, robustness, security, mathematical models and correctness of concurrent programs. Treatment of selected topics in distributed and multiprocessor operating systems. Prerequisite: Undergraduate Operating Systems. Offered every semester when possible.

  
  • CS 551 - Systems Programming


    Credits: 3

    A detailed study of the application program interface of a modern operating system. File operations, concurrency, processes, threads, inter-process communication, synchronization, client-server programming, multi-tier programming. Prerequisite: Undergraduate Operating Systems. Term offered varies.

  
  • CS 552 - Intro to Cloud Computing


    Credits: 3

    This course will provide students with topics in cloud computing with coverage of core cloud components such as virtualization techniques, distributed systems, cloud service models, and representative cloud computing systems. It will not only include the in-depth study of the fundamental enabling techniques such as server, network, and data storage virtualization, but also provide the demonstration of how these techniques work inside today’s widely-used cloud-based systems such as MapReduce, key-value stores, and Openstack. The course will include weekly assignments in the form of homework, labs, and projects. Prerequisite: Undergraduate Operating Systems. Term offered varies.

  
  • CS 553X - Software Security


    Credits: 3

    This hands-on course covers offensive and defensive technologies in the area of software security. Particularly, students will learn about various vulnerabilities that lead to software compromise, attacks that exploit such vulnerabilities, and defenses that defend against such attacks. Topics covered include simple control-flow corruption attacks, slightly harder buffer overflow and return-to-libc attacks, advanced ROP attacks, Meltdown and Spectre attacks on the hardware. Students are expected to not only learn the concepts behind each attack, but also execute them in a controlled environment. Prerequisite: Undergraduate Operating Systems. Term offered varies.

  
  • CS 555 - Intro to Visual Info Processin


    Credits: 3

    The course focuses on fundamental topics, including visual information acquisition, representation, description, enhancement, restoration, transformations and compressions, and reconstruction from projections. The second focus is on Computer Science applications, including algorithms developed in applications such as statistical and syntactic pattern recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics. Prerequisite: Undergraduate Algorithms. Term offered varies.

  
  • CS 556 - Intro to Computer Vision


    Credits: 3

    Course has two parts. Part one focuses on an introduction to the fundamental topics of computer vision, including low-level vision, intermediate-level vision, high-level vision, vision systems, visual knowledge representation, motion analysis, shape from shading and 3D reconstruction, as well as image retrieval. Part two introduces the applications of the fundamental computer vision techniques. Examples include robotic vision, pattern recognition and medical imaging. Prerequisite: Undergraduate Algorithims. Term offered varies.

  
  • CS 557 - Intro To Distributed Systems


    Credits: 3

    Fundamental issues in distributed systems. Distributed synchronization and concurrency control. Distributed process management (scheduling, remote invocation, task forces, load balancing). Protection and security. Robust distributed systems. Case studies. Prerequisite: Undergraduate Operating Systems. Term offered varies.

  
  • CS 558 - Intro to Computer Security


    Credits: 3

    The course provides an introduction to the principles and practices of network, computer, and information security. Topics include authentication and cryptographic techniques, intrusion detection, access control, security policies, and program/policy analysis techniques. Prerequisite: Undergraduate Operating Systems and Algorithms. Term offered varies.

  
  • CS 559 - Science of Cyber Security


    Credits: 3

    This course focuses on techniques that approach cyber security problems in a principled manner using concepts from data mining, game theory, graph theory, and psychology. The intent of this course is to permit students to bridge the divide between real-world cyber threats and formal, scientific foundations of solutions that address such threats. Real-world cyber security issues, such as spamming, phishing attacks, malware, sybil attacks in social networks, and DDoS attacks, are used to illustrate how cyber threats can be modeled with abstract representations that are amenable to rigorous analysis and formal reasoning. The course also emphasizes the development of cyber defense mechanisms that are rooted in scientific foundations. Prerequisite: Undergraduate Operating Systems and Algorithms. Term offered varies.

  
  • CS 560 - Computer Graphics


    Credits: 3

    Concepts, structure, techniques, algorithms for use of modern interactive computer graphics systems. Graphics hardware, software system structure. Techniques and algorithms for basic graphics input-output functions. Matrix techniques for transformations and projections. Techniques for two- and three-dimensional modeling, rendering, animation and visualization. Prerequisites: Undergraduate Algorithms and Linear Algebra. Term offered varies.

  
  • CS 565 - Intro to Artificial Intelligen


    Credits: 3

    This course will cover the basic ideas and techniques underlying the design of artificial intelligence (AI) agents. Topics include search, knowledge representation (and reasoning), planning, reasoning under uncertainty, machine learning (including reinforcement learning), and applications (natural language processing, vision, robotics, etc). Prerequisite: Undergraduate Algorithims. Term offered varies.

 

Page: 1 <- Back 1022 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32Forward 10 -> 86