All Computer Science Courses
CSC 120 Introduction to Computing (A) Covers the fundamental of computer problem solving and programming. Includes these topics: program development process, programming methodologies, language translation phases, Java programming (data types, variables, expressions, assignment, selection, iteration, methods, parameter passing and I/O), secure coding techniques and ethical, legal and social issues of computing. 4 Cr. (Every Semester.) [Prerequisites: MTH 111 or higher.]
CSC 203 Problem Solving with Objects (A)Covers fundamentals of algorithms and object-oriented software development. Includes these topics: primitive and reference data types, classes, methods, selection, iteration, parameters, recursion, exception handling, arrays, file I/O, inheritance, polymorphism, program testing and documentation, introduction to GUIs and introduction to sorting and searching techniques and other basic algorithms. Requires extensive programming and supervised laboratory sessions. 4 Cr. (Every Semester.) [Prerequisites: CSC 120 and MTH 122 or higher.]
CSC 205 Fundamentals of Data Structures (A)Covers the fundamentals of abstract data structures and their implementation. Includes these topics: software modeling, program development, testing; implementation and use of stacks, queues, linked lists, binary tress, recursion, searching and sorting algorithms, introduction to analysis of algorithms and program verification, even-driven programming with graphical user interfaces. Requires extensive programming and supervised laboratory sessions. 4 Cr. (Every Semester.) [Prerequisites: CSC 203 and MTH 281.]
CSC 209 UNIX Tools (A) Provides a comprehensive introduction to the UNIX operating system from the programmer's point of view. Includes these topics: basic commands, file system structure, concept of shells, shell features (pipes, redirection, etc.), access control, process control, scripting, UNIX tools (sed, grep, make, etc.). Requires extensive hands-on laboratory exercises and shell-script programming. 1 Cr. (Every Semester.) [Prerequisite: CSC 203 or CYB 203.]
CSC 219 Programming in C (A) Provides an advanced coverage of the C language. Includes these topics: syntax, semantics, control structures; arrays, pointers and pointer arithmetic; string manipulation; structs and unions; functions and parameter passing, command line arguments; bit level operations. Requires extensive programming. 1 Cr. [Prerequisites: must take CSC 203 or CYB 203.]
CSC 295 Topics in Computer Science (A)Addresses current topics in the field at an introductory level. Each offering of the course is motivated by the expertise of the instructor and by students' interests. Descriptions and prerequisites are published prior to the registration period for the course. Example topic: Problem Solving Seminar. 1-3 Cr. [Prerequisite: Published prior to registration each semester.]
CSC 311 Computer Organization and Architecture (A)Covers fundamentals of computer architecture and organization. Includes the following topics: digital logic and circuit design, data representation, CPU and ALU architectures, instruction set encoding, fetch-decode-execute cycle, addressing modes, memory management, handling of subprograms and assembly language programming. Requires extensive programming and supervised laboratory sessions. 4 Cr. (Every Semester.) [Prerequisites: CSC 203 and MTH 281.]
CSC 312 Cybersecurity (A) Covers fundamental issues and tools relating to insuring that computer systems are secure and reliable. Includes these topics: recognizing attackers, maintaining confidentiality, integrity and availability of computing systems, account control and access rights management, software vulnerability analysis, defense, exploitation, reverse engineering, operating system security and malware, applied cryptography, and legal and ethical issue of security. 3 Cr. (Every Semester.) [Prerequisites: CSC 209 & CSC 311 or CIS 303.]
CSC 356 Life in the Digital Age (AI)Studies the impact of new technologies on a global society. Includes the changing nature of privacy and growing use of government surveillance, ie. national ID cards and RFID tracking. Also considers the Internet's effect on societal communication and differences in gender communication patterns, issues of freedom of expression and censorship, the influence of technology in the workplace and at home, and other relevent topics. 3 Cr.
CSC 401 Programming Languages (A) Studies the concepts of various programming languages. Includes these topics: history of languages, design principles, formal syntax and semantics, implementation: compilation and interpretation, comparative study of features in various languages considering criteria such as binding, scope, type conversion, data abstraction, parameter passing techniques, exceptions and I/O. Covers various programming paradigms such as procedural, object-oriented, functional, logic and scripting. Requires extensive programmming. 3 Cr. (Fall.) [Prerequisites: CSC 205 and 219 and 311.]
CSC 406 Algorithms and Data Structures (A)Covers design and analysis of data structures and associated algorithms using object-oriented methods. Includes these topics: complexity measures, pre-and post-conditions, programming to interfaces, union-find sets, hashing, trees (AVL, splay, B-Trees), graphs, recursion, algorithm design strategies and NP-completeness. Requires extensive programming. 3 Cr. (Spring.) [Prerequisites: CSC 205 and MTH 481.]
CSC 414 Operating Systems and Parallel Computing (A) Covers basic principles of operating systems and parallel and distributed computing. Includes these topics: OS role, components and structure, process concepts, threads, CPU scheduling, memory management, concurrent processes, interprocess coordination and communication, parallelism versus concurrency, parallel architecture, algorithms, and decomposition. Requires extensive programming. Swing Course CSC514. 3 Cr. (Spring.) [Prerequisites: CSC 209 & 219 & 311.]
CSC 423 Web Application Development (A) Covers the basic principles involved in developing Web-based applications that operate with a back-end relational database. Includes these topics: basics of HTTP-based client-server systems, web page creation with XHTML/CSS, client-side scripting, server-side software development, interfacing to relational databases, model-view separation, and database serialization/viewing using XML/XSLT. Requires team project involving design/setup of database server and development of application interfacing to database. 3 Cr. [Prerequisites: CSC 209 and CSC 422 or CIS 422.]
CSC 427 Software Systems Engineering (A)Provides an introduction to software engineering methodologies and programming-in-the-large. Includes these topics: life-cycle models, development standards, project organization, estimation techniques, requirements modeling, specification techniques, object-oriented and structured approaches to software design, implementation issues, testing, verification and validation, maintenance and documentation. Requires students to work in teams developing a large-scale software product. Develops technical communication and writing skills. Requires extensive programming. 3 Cr. (Fall.) [Prerequisite: CSC 205.]
CSC 429 Object-Oriented Software Development (A)Provides an introduction to OOP concepts and their applications using Java. Includes these topics: review of OOP fundamentals, UML modeling; advanced Java features: interfaces, abstract classes, GUI programming, layout managers, event and exception handlers, etc.; software design principles, cohesion and coupling; detailed coverage of design patterns: model-view-controller, observer, adapter, factory, strategy, singleton, etc.; software quality assurance: testing strategies. Requires extensive programming. 3 Cr. [Prerequisite: CSC 427.]
CSC 434 Artificial Intelligence and Machine Learning (A) Provides an introduction to artificial intelligence and machine learning, and their applications. Includes these topics: intelligent agents, problem solving using state space search, A* algorithm, heuristics, genetic algorithm, adversarial game, knowledge-based agent, machine learning basics, probabilistic reasoning, decision making, ensemble learning, support vector machine, feedforward neural networks, convolutional neural network; Al programming using Python. Project-based course. requires extensive programming. 3 Cr. (Fall.) [Prerequisite: CSC 205.]
CSC 435 Data Analytics and Predictive Modeling (A) Teaches students how to be a data analyst. Learn how students can clean, manipulate, analyze and visualize databases to draw useful results and outcomes that help others to make decisions. Consists of two main parts. The first part covers data analytics using R language extensively. The second part covers several topics related to data science and analysis such as, machine learning and modeling, web scraping, natural language processing and clustering. Crosslisted with CIS435 swing courses CSC&CIS535. 3 Cr. (Spring.) [Prerequisite: CSC 205.]
CSC 446 Principles of Cloud Computing (A)Covers basic concepts, models, technologies, applications, and programming tools in cloud computing. Includes these topics: concepts of cloud, scalability, cloud models, broadband networks and Internet architecture, virtualization technology, computing and storage hardware, cloud security mechanism, cloud infrastructure, cloud platforms, metrics of SLA and QoS, load balancing and scheduling algorithms, resilient distributed datasets, programming patterns and tools for cloud computing, big data access, and big data processing via Spark APIs. Requires extensive programming. Swing course CSC546. Crosslisted CIS446. 3 Cr. (Spring.) [Prerequisites: CSC 205, 209, and CIS 419.]
CSC 483 Theory of Computation (A)Provides a study of formal languages and theory of automata with an emphasis on Church's thesis and the "algorithm = machine" point of view. Includes these topics: regular expressions and context-free languages, finite and pushdown automata, Turing machines, computability, undecidability, and complexity of problems. 3 Cr. (Spring.) [Prerequisites: CSC 203 and MTH 481.]
CSC 486 Junior/Senior Seminar (A) Provides an overall view of the professional field of computing, emphasizing development of communication skills for the profession. Includes these topics: ethics in the field, history of computing technology, professional literature, organizations and related activities, finding and preparing for jobs and interviews, contemporary workplace issues, and career paths and opportunities. Requires extensive reading and writing, both technical and non-technical, as well as library research, and prepared group discussions and oral presentations. 3 Cr. (Every Semester.) [Prerequisite: Junior OR senior status AND Computer Science AND/OR Computer Information Systems AND/OR Cybersecurity majors only.]
CSC 492 Computer Science Internship (A)Provides an opportunity to apply knowledge from the classroom by working in a professional setting. Also provides a valuable and challenging experience for students who have never worked in such a situation, as well as for professionals furthering their education. Teaches the successful intern how effective professional performance requires integrating substantive knowledge with behavioral skills and proficiency in oral and written communication. Each student is supervised on campus by a computer science faculty member, and at the work site by qualified management personnel. Past projects have involved software engineering, graphics, database design, data communications, and process control. 1-3 Cr. (By Arrangement.) [Prerequisites: Junior status, 3.0 or better average in computer science courses, appropriate course work, at least 18 credits towards the major completed prior to starting the internship, and instructor's permission.]
CSC 493 Senior Thesis (A)Provides students with an opportunity to apply knowledge from the classroom by working in an independent research or development project in an academic setting, which is a valuable and challenging experience for students who are contemplating graduate studies in computer science, to test out their potential for independent study and advanced research. May involve substantial software or hardware development, structuring available commercial software/hardware for specific applications, or theoretical analysis of computational schemes. By developing a successful thesis, permits students to enrich their knowledge of computer applications, theory, hardware or software, to develop skills in analyzing problems involving current computing technologies, and to make effective oral aand written presentations of their accomplishments. Each student is supervised by a Department of Computer Science faculty member. 3 Cr. (By Arrangement.) [Prerequisites: Junior status, 3.0 or better average in computer science courses, appropriate course work, at least 18 credits towards the major completed prior to starting the thesis, and instructor's permission.]
CSC 495 Topics in Computer Science (A)As an advanced course, addresses current topics in the field. Each offering is motivated by the expertise of the instructor and students' interests. Requires students to complete a major research, design, or development project. Descriptions and prerequisites are published prior to the registration period for the course. Past topics include: networking, human factors, computational linguistics, advanced architecture, software engineering, logic programming, and program validation, object-oriented programming and parallel algorithms. 1-3 Cr. [Prerequisite: Published prior to registration each semester.]
CSC 499 Independent Study in Computer Science (A)Arranged in consultation with the instructor-sponsor and in accordance with the procedures of the Office of Academic Advisement prior to registration. 1-3 Cr. (By Arrangement.) [Prerequisite: Instructor's permission.]
CSC 501 Programming Languages (A)Studies the concepts of various programming languages. Includes these topics: history of languages, design principles, formal syntax and semantics, implementation: compilation and interpretation, comparative study of features in various languages considering criteria such as binding, scope, type conversion, data abstraction, parameter passing techniques, exceptions and I/O. Covers various programming paradigms such as procedural, object-oriented, functional, logic and scripting. Requires extensive programmming. 3 Cr. (Fall.) [Prerequisite: CSC 311.]
CSC 506 Algorithms and Data Structures (A)Covers design and analysis of data structures and associated algorithms using object-oriented methods. Includes these topics: complexity measures, pre-and post-conditions, programming to interfaces, union-find sets, hashing, trees (AVL, splay, B-Trees), graphs, recursion, algorithm design strategies and NP-completeness. Requires extensive programming. 3 Cr. (Spring.) [Prerequisites: CSC 205 and MTH 481.]
CSC 514 Operating Systems and Parallel Computing (A)Covers basic principles of operating systems and parallel and distributed computing. Includes these topics: OS role, components and structure, process concepts, threads, CPU scheduling, memory management, concurrent processes, interprocess coordination and communication, parallelism versus concurrency, parallel architecture, algorithms, and decomposition. Requires extensive programming. Additional assignments on parallel algorithm design and a graduate-level project centered on parallel software design for computing systems. Swing course CSC414. 3 Cr. (Spring.)
CSC 522 Relational Database Design (A)Provides a study of the theory and practice of the relational approach to database design. Includes these topics: DBMS vs. a traditional file processing, relational algebra, normalization, lossless and/or dependency preserving decomposition, query languages such as SQL and a language that is available on the system, query optimization, integrity and security, and database project design. Requires extensive programming. 3 Cr. [Prerequisite: CSC 205.]
CSC 523 Web Application Development (A) Covers the basic principles involved in developing Web-based applications that operate with a back-end relational database. Includes these topics: basics of HTTP-based client-server systems, web page creation with XHTML/CSS, client-side scripting, server-side software development, interfacing to relational databases, model-view separation, and database serialization/viewing using XML/XSLT. Requires team project involving design/setup of database server and development of application interfacing to database. 3 Cr. [Prerequisites CSC 209 and CSC 422 or CIS 422.]
CSC 527 Software Systems Engineering (A)Provides an introduction to software engineering methodologies and programming-in-the-large. Includes these topics: life-cycle models, development standards, project organization, estimation techniques, requirements modeling, specification techniques, object-oriented and structured approaches to software design, implementation issues, testing, verification and validation, maintenance and documentation. Requires students to work in teams developing a large-scale software product. Develops technical communication and writing skills. Requires extensive programming. 3 Cr. (Fall.) [Prerequisite: CSC 205.]
CSC 529 Object-Oriented Software Development (A)Provides an introduction to OOP concepts and their applications using Java. Includes these topics: review of OOP fundamentals, UML modeling; advanced Java features: interfaces, abstract classes, GUI programming, layout managers, event and exception handlers, etc.; software design principles, cohesion and coupling; detailed coverage of design patterns: model-view-controller, observer, adapter, factory, strategy, singleton, etc.; software quality assurance: testing strategies. Requires extensive programming. 3 Cr. [Prerequisite: CSC 427.]
CSC 534 Artificial Intelligence (A)Provides an introduction to artificial intelligence, its applications, and languages. Includes these topics: problem solving using state space search, heuristics, A* algorithm, game playing, mini-max, alpha-beta, knowledge-based expert systems, forward and backward chaining, natural language understanding, evolutionary computing, cellular automata, genetic algorithms, neural networks; programming AI applications using Prolog, LISP, and/or using frameworks in Java. Requires extensive programming. 3 Cr. [Prerequisite: CSC 401.]
CSC 535 Data Analytics and Predictive Modeling (A)Teaches students how to be a data analyst. Learn how students can clean, manipulate, analyze and visualize databases to draw useful results and outcomes that help others to make decisions. Consists of two main parts. The first part covers data analytics using R language extensively. The second part covers several topics related to data science and analysis such as, machine learning and modeling, web scraping, natural language processing and clustering. Crosslisted with CIS535 swing courses CSC&CIS435. 3 Cr. (Spring.)
CSC 546 Principles of Cloud Computing (A)Covers basic concepts, models, technologies, applications, and programming tools in cloud computing. Includes these topics: concepts of cloud, scalability, cloud models, broadband networks and Internet architecture, virtualization technology, computing and storage hardware, cloud security mechanism, cloud infrastructure, cloud platforms, metrics of SLA and QoS, load balancing and scheduling algorithms, resilient distributed datasets, programming patterns and tools for cloud computing, big data access, and big data processing via Spark APIs. Requires extensive programming. Graduate level: Graduate students will build a simple machine learning model using a cloud-based service (e.g., Amazon SageMaker or Google AI Platform) and deploy it as a web service. Swing course CSC446. Crosslisted CIS546. 3 Cr. (Spring.)
CSC 583 Theory of Computation (A)Studies formal languages and theory of automata with an emphasis on Church's thesis, "algorithm = machine" point of view. Includes these topics: regular expressions and context-free languages, finite and pushdown automata, Turing machines, computability, undecidability and complexity of problems. 3 Cr. (Spring.) [Prerequisites: CSC 203 and MTH 481.]
CSC 602 Deep Learning () This course teaches students the fundamental principles and concepts of neural networks and state-of-the-art approaches to deep learning. Students will learn to design neural network and deep network architectures and training methods. Students will also learn to use critical software tools for deep learning. 3 Cr. [Prerequisites: CSC534 or CIS/CSC535.]
CSC 618 Computer Vision (B)Studies the concepts of computer vision. Includes these topics: image formation, image filtering, camera calibration, feature detection and matching, stereo, motion estimation and tracking, image classification and recognition. Uses classical machine learning and deep learning methods. Provides extensive programming experience from implementing computer vision and object recognition applications. 3 Cr.
CSC 692 Computer Science Internship (B) This course will provide an opportunity to apply knowledge from the classroom by working in a professional setting. Also provides a valuable and challenging experience for students who have never worked in such a situation, as well as for professionals furthering their education. Teaches the successful intern how effective professional performance requires integrating substantive knowledge with behavioral skills and proficiency in oral and written communication. Each student is supervised on campus by a computing sciences faculty member, and at the work site by qualified management personnel. 3 Cr. [Prerequisite: By Instructor permission, a graduate student must have: completed at least six credits of course work at the graduate level at SUNY Brockport with minimum grades of “B” in each course; or demonstrate adequate background for the area of the internship.]
CSC 698 Graduate Thesis in Computer Science (B) Provides students the opportunity for an individual investigation of an original problem. Requires the preparation and oral defense of a substantial research project planned and completed under the guidance of a graduate faculty committee. By developing a successful thesis, it permits students to enrich their knowledge of computer applications, theory, software or hardware, security; to develop skills in analyzing problems involving current computing technologies; and to make effective oral and written presentations of their accomplishments. 1-6 Cr. [Prerequisite: By Instructor permission: a graduate student must have: completed at least 18 credits of course work at the graduate level at SUNY Brockport with minimum grades of “B” in each course.]
CSC 699 Independent Study in Computer Science (A)By Instructor permission, a graduate student must have: 1. completed at least six credits of course work at the graduate level at SUNY Brockport with minimum grades of “B” in each course; or demonstrate adequate background for the area of independent study. Permission to grant an independent study is by discretion of the instructor and department chair. Individual independent study instructor-sponsor may have additional requirements, such as knowledge of specific subjects, programming languages or software. Besides meeting the formal prerequisites, candidates should be self-motivated and interested in real-world learning, and should have good communication and problem-solving skills. This course will provide students the opportunity to study individually with an instructor on a contractual basis. The course will permit graduate students to pursue topics they studied previously in greater depth. A content outline for the independent study course will be developed by the student and instructor-sponsor that suits the student’s needs and interest and aligns with the special competence of the instructor. 1-3 Cr.