Main Page Content
Department of Computer Science
Chairperson and Professor: Kadathur B. Lakshmanan, PhD, Ohio State University; Professors: Kulathur S. Rajasethupathy, PhD, Tata Institute; Thambrahalli M. Rao, PhD, Indian Institute of Science; Associate Professors: Joan M. Lucas, PhD, Princeton University; Sandeep R. Mitra, PhD, SUNY Binghamton; Anthony Scime, DA, George Mason University; Assistant Professors: Vishal Anand, PhD, SUNY Buffalo; Francis Andoh-Baidoo, PhD, Virginia Commonwealth University; Wan Huang, PhD, University of Alabama, Tuscaloosa; Lecturer: Daniel F. Rogers, MS, Syracuse University.
Computer science is the study of theory and practice of computation. A computer scientist creates new hardware and software that is more efficient, effective and reliable. Computer science incorporates aspects of several other fields: mathematics, to analyze the properties of algorithms and data structures; engineering, to design and construct practical programs and machines; the experimental sciences, both to investigate the behavior of programs running on real machines and to use programs for modeling scientific phenomena; and the cognitive sciences, to develop intelligent programs and to study computation in relation to human intelligence.
Computer science is a young and rapidly developing field. Its chief areas of specialization, reflected in regular course offerings at SUNY Brockport, are: design and analysis of algorithms, programming languages, software engineering, database systems, e-commerce, computer architecture, operating systems, computer security, artificial intelligence, networking, etc. Other areas are covered in independent-study and topics courses.
Although the department does not offer a graduate degree program, a variety of courses are offered at the graduate level.
COMPUTER SCIENCE COURSES
CSC 501 Programming Languages (A). Prerequisite: CSC 311. 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 programming. 3 Cr. Every Semester
CSC 506 Algorithms and Data Structures (A). Prerequisites: CSC 205 and MTH 481. 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. Extensive programming. 3 Cr. Every Semester
CSC 511 Computer Architecture (A). Prerequisites: CSC 303 and CSC 311. Covers design and organization of digital computers. Includes these topics: digital logic and circuit design, data representation, computer history, performance evaluation, CISC/RISC architectures, registers, memories and memory management, CPU and ALU architectures, instruction sets, busses and I/O systems, interrupt structure, microprogramming and control unit design. Covers additional topics such as virtual machines, parallelism and pipelining. 3 Cr. Every Semester
CSC 512 Operating Systems (A). Prerequisite: CSC 311. Covers basic principles of operating systems. Includes these topics: OS structures and design principles, concurrent processes and programming, threads, CPU scheduling, memory management and virtual memory, process synchronization and deadlock, file systems, mass-storage structure, I/O systems, and case study of UNIX/LINUX operating system. Requires extensive programming. 3 Cr. Spring
CSC 519 Computer Networks (A). Prerequisites: CSC 303 and CSC 311. Provides a comprehensive study of the field of computer communications, local area networks, and internetworking. Includes these topics: the OSI and TCP/IP models, protocols, topologies, data communication issues, error detection and correction, local area networks, network hardware, Ethernet and wireless technologies, WAN, packet-switching, routing, datagrams, Internet addressing, home networking and security. Includes hands-on experience with network hardware and software. 3 Cr. Spring
CSC 521 Computer and Network Security (A). Prerequisites: CSC 205 and CSC 209. Studies concepts, techniques, and tools in computer and network security. Includes these topics: security, privacy, information assurance, threats, user authentication and access control; UNIX and Windows examples; logs and intrusion detection; cryptography, public-key and private-key systems, Kerberos, IP security, firewalls, Web and database access control and security issues; ethical issues. Includes hands-on experience with security hardware and software. 3 Cr. Fall
CSC 522 Relational Data Base Design (A). Prerequisite: CSC 205. Examines 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. Fall
CSC 527 Software Systems Engineering (A). Prerequisite: CSC 311. 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
CSC 529 Object-Oriented Programming (A). Prerequisite: CSC 205. Introduces basic concepts in object-oriented programming (OOP) and how to apply OOP techniques using an appropriate OOP language such as Java or C++. Includes these topics: the OOP programming paradigm, including analysis and design, a survey of related languages, data hiding and encapsulation, inheritance and polymorphism. Entails implementation of these concepts using appropriate programming language constructs. Requires extensive programming. 3 Cr. Spring
CSC 534 Artificial Intelligence (A). Prerequisite: CSC 205. Introduces artificial intelligence and its languages. Includes these topics: history and state of the art in AI: programming techniques in the languages LISP and PROLOG; fundamental methods in AI, including heuristic search; knowledge representation using predicate logic and production systems; and classic basic problems involving games, graphs, theorem proving, symbolic algebra, expert systems, natural language, etc. Requires extensive programming. 3 Cr. Spring
CSC 542 Electronic Commerce Technology (A). Prerequisites: CSC 205 and CSC 209. Surveys electronic commerce technologies and realities. Studies defining tools of e-business to understand the manner in which users, tools, needs and opportunities interact. Includes these topics: the infrastructure of e-commerce and the design and implementation of e-business portals using network and database technologies, data/Web mining and security/encryption techniques for finding and negotiating with trading partners to execute electronic transactions. 3 Cr. Fall
CSC 544 Introduction to Parallel Computing (A). Prerequisites: CSC 406 and MTH 481. Deals with design and analysis of parallel algorithms. Includes these topics: parallel models of computation; measures of complexity; parallel algorithms for selection, searching, sorting, and merging; matrix algorithms; transitive closure; connected components; and shortest path, minimum spanning tree and routing algorithms. Provides hands-on experience in a parallel programming environment. 3 Cr.
CSC 583 Theory of Computation (A). Prerequisites: CSC 203 and MTH 481. 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
CSC 595 Topics in Computer Science (A). Prerequisites: Published prior to registration each semester. As an advanced course, addresses current topics in the field. Each offering is motivated by the expertise of the instructor and students’ interests. Expects 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 covered included: networking, human factors, computational linguistics, advanced architecture, software engineering, logic programming, program validation, object-oriented programming and parallel algorithms. 3 Cr.
CSC 599 Independent Study in Computer Science (A). Prerequisite: Instructor’s permission. Arranged in consultation with the instructor-sponsor prior to registration. 1-3 Cr. By Arrangement
CSC 601 Concepts of Programming Languages (A). Prerequisites: CSC 401, CSC 406 and MTH 481. Presents an advanced mathematical treatment of the underlying principles of programming languages and comparison of the issues as they relate to the main language paradigms: procedural, object oriented, declarative, functional and concurrent. Covers: lexical vs. syntactic vs. semantic structures of languages; objects and classes, inheritance, dynamic binding, and implementation issues; Lambda calculus and recursive functions; logic resolution and unification; and parallel processing, co-routines and message passing. 3 Cr.
CSC 611 Advanced Computer Architecture (A). Prerequisites: CSC 411, MTH 346 and MTH 481. As an advanced course in architecture of high-performance computer systems, emphasizes quantitative analysis. Includes: measuring performance, cost trends, CISC versus RISC, pipelined processors, branch penalties and prediction, memory hierarchy, cache organization, virtual memory, parallel processors, SIMD/MIMD systems, interconnection networks and distributed computing. 3 Cr.
CSC 683 Automata Theory and Formal Languages (A). Prerequisite: MTH 481. Provides an advanced treatment of the mathematical foundations of computer science, including the theories of automata, formal languages, computability and computational complexity. Includes some of the fundamental material regarding finite automata and context-free grammars as part of regularly accredited undergraduate programs, covering the material more quickly in this course. 3 Cr.