SUNY Brockport Logo

Undergraduate Studies Catalog (1997-1999)


Department of Computer Science

215 Allen Administration Building
(716) 395-2194

Course Descriptions

Chairperson: Kulathur S. Rajasethupathy; Associate Professors: Kadathur B. Lakshmanan, Joan M. Lucas, Thambrahalli M. Rao; Assistant Professors: Sandeep Mitra, James Shuler.

COMPUTER SCIENCE

Computer science is the study of the theory and practice of computation. It 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. Presently its chief areas, reflected in regular course offerings at SUNY Brockport, are: programming methodology, design and analysis of algorithms, software engineering, programming languages, database systems, graphics, computer architecture, systems programming, modeling and simulation, artificial intelligence, and networking. Other areas are covered in independent study and topics courses. In addition, students can gain valuable job experience through the Computer Science Internship program and the Brockport Co-operative Education program.

The computer science major provides students with an excellent basis for a variety of careers and for graduate study. Possible careers include programming, system analysis and design, maintenance, management and user support of software in areas such as business, science, engineering, and computer systems. Fields of graduate study, for which a double major with mathematics is advisable, include not only computer science, but mathematics, information management, and various areas of science and engineering.

The student interested in computer science has several options to choose from: a major in computer science with either the computer science and information systems (CSIS) track or the more rigorous computer science (CS) track, which is accredited by the Computer Science Accreditation Board (CSAB); a double major in computer science and another discipline such as mathematics or business administration; a 3 + 2 program leading to a BS in computer science from SUNY Brockport and a bachelor's degree in engineering from some other institution; and a minor in computer science. Students majoring in computer science have the option of switching between CSIS and CS tracks at any time.

Major in Computer Science

  1. CS track of the computer science major (69 credits; Accredited by the Computer Science Accreditation Commission [CSAC] of the CSAB)

    For a major in computer science in the CS track a student must complete the following 69 credits of computer science and mathematics and science courses with an average grade of "C" or better. In addition, the grade for each of CSC 203, 205, and 311 must be "C" or better. A student must take at least 30 credits in non-mathematics, non-science courses.

    1. Core Courses (37 credits)
    Credits
     CSC 203 Fundamentals of Computer Science I 4
     CSC 205 Fundamentals of Computer Science II 4
     CSC 303 Digital Logic and Computer Design 3
     CSC 311 Assembly Language Programming 4
     CSC 401 Theory of Programming Languages 3
     CSC 406 Advanced Data Structures 4
     CSC 411 Computer Architecture 3
     CSC 412 Operating Systems 3
     CSC 427 Software Engineering 3
     CSC 483 Theory of Computation 3
     CSC 486 Junior/Senior Seminar3
    Total: 37
    1. Elective courses (9 credits)
      300/400-level courses selected under advisement
      Restrictions apply. See notes below.
    9
    1. Mathematics Corequisites (9 credits)
    __
     MTH 202 Calculus II* 3
     MTH 346 Probability and Statistics I 3
     MTH 481 Discrete Mathematics II* 3
      *Prerequisites:
      MTH 201 Calculus I (3 credits)
      MTH 281 Discrete Mathematics I (3 credits)
    1. Science Corequisites (14 credits)
      1. A two-semester sequence in a lab science for science/engineering majors. For example, PHS 201-202, CHM 205-206, BIO 201-202, ESC 211-311, GEL 101-302.
      1. Two courses, each of which is a course in science or a course that enhances the student's abilities in the application of the scientific method. Each course should be a course for science/engineering majors or a course with a strong emphasis on quantitative methods. For example: Two courses chosen from PHS 301, PHS 309, CHM 303, CHM 305, ESC 312, ESC 350, GEL 312, GEL 408, etc.

  2. CSIS Track of the Computer Science Major (43 credits)

    For a major in computer science in the CSIS track a student must complete the following 43 credits of computer science and mathematics courses with an average grade of "C" or better. In addition, the grade for each of CSC 203, 205 and 311 must be "C" or better.

    1. Core Courses (28 credits)
    Credits
     CSC 203 Fundamentals of Computer Science I 4
     CSC 205 Fundamentals of Computer Science II 4
     CSC 303 Digital Logic and Computer Design 3
     CSC 311 Assembly Language Programming 4
     CSC 401 Theory of Programming Languages 3
     CSC 406 Advanced Data Structures 4
     CSC 411 Computer Architecture 3
     CSC 486 Junior/Senior Seminar 3
  3. Elective courses (12 credits)
    300/400-level courses selected under advisement
    Restrictions apply. See Notes below.
  4. 12
    1. Mathematics Corequisite (3 credits)
     MTH 481 Discrete Mathematics II* 3
      *Prerequisites
      MTH 201 Calculus I (3 credits)
      MTH 281 Discrete Mathematics I (3 credits)

    Notes:

    1. At most, six credits from courses numbered 490-499 may be counted toward the elective requirement. In addition, at most, one of MTH 461, MTH 462 and MTH 471 may be counted toward elective requirements. Students are encouraged to take additional computer science and mathematics courses to broaden and deepen their expertise.

    2. At least 18 of the credits used to satisfy the core or elective requirements for the computer science major must be earned at SUNY Brockport.

    3. A maximum of six credits can be earned in each of the following two categories: Credit by Portfolio Assessment and Departmental Credit by Examination.

    Minor in Computer Science

    For a minor in computer science, a student must complete the following 21 credits of computer science courses, of which at least half of the credits must be taken at SUNY Brockport. Note that MTH 281 is a prerequisite for CSC 205.

    1. Core courses (12 credits)
    Credits
     CSC 203 Fundamentals of Computer Science I 4
     CSC 205 Fundamentals of Computer Science II 4
     CSC 311 Assembly Language Programming 4
  5. Elective Courses (9 credits)
    Three CSC courses at the 300 level or above
  6. 9

    Note: For additional and updated information on the computer science program, see the Computer Science Handbook, available in the Department of Computer Science office.




key
Computer Science Courses

All courses are coded (A), liberal arts. Other codes: (N) = natural science without lab; (T) = computer literacy.

Generally, CSIS-track core courses are offered both fall and spring semesters, and CSIS-track electives are offered every other semester. Exceptions and late changes are possible; check the most recent registration schedule, or call the Department of Computer Science at (716) 395-2194.

CSC 104 Computers in the Business World (A,T). Provides a general introduction to the different uses of computers in business. Includes these topics: computer system concepts, data representation and storage, processor and peripheral hardware, data processing and word processing systems, spreadsheets, report generation, database queries, and management packages. 3 Cr. Every Semester.

CSC 120 Introduction to Computer Science (A,T). Prerequisite: MTH 121. Provides an introduction to problem solving and computers for prospective computer science majors or minors, or other students wishing to take CSC 203. Includes these topics: computer system orientation; data representation; algorithms and their properties, representations, and structure; designing and testing algorithms; assembly language concepts; syntax notation; elementary Pascal programming; history, uses, and social effects of computers. Requires extensive programming. (Closed to students who have successfully completed CSC 203.) 3 Cr. Every Semester.

CSC 203 Fundamentals of Computer Science I (A,N,T). Prerequisites: MTH 122 and CSC 120. Covers fundamental computer science concepts and programming in Pascal. Includes these topics: computing system concepts, problem solving, algorithm design, top-down development, program testing and documentation, data types (built-in and enumerated), data manipulation, sequences, selection, loops, modules, parameters, arrays, records, sets, strings, files, introduction to sorting and searching techniques and other basic algorithms. Requires extensive programming and supervised lab sessions. 4 Cr. Every Semester.

TOP

CSC 205 Fundamentals of Computer Science II (A). Prerequisites: CSC 203 and MTH 281. Covers abstract data structures and their operations, and software engineering concepts. Includes these topics: program development (interpreting specifications, top-down development, information hiding, structured testing), implementation of built-in data types and structures, files, pointers, stacks, queues, linked lists, recursion, trees, graphs, searching and sorting algorithms, and an introduction to complexity analysis of algorithms. Requires extensive programming and supervised lab sessions. 4 Cr. Every Semester.

CSC 212 Programming in BASIC (A,T). Prerequisite: MTH 121. Provides a general introduction to computer programming and applications for non-majors, using the BASIC language. Includes these topics: computer terminology, programming concepts, language features, and algorithm design. Surveys computer applications using the following programming techniques: decisions, loops, functions, subroutines, arrays, and files. Requires extensive programming. (Closed to students who have successfully completed CSC 203.) 3 Cr. Spring.

CSC 213 FORTRAN (A). Prerequisite: CSC 120 or 212. Provides a comprehensive study in FORTRAN 77. Includes these topics: FORTRAN language features, structured programming techniques, file operations, applications, and the FORTRAN subroutine library. Requires an ability to program in some computer language. Also requires extensive programming. 3 Cr.

CSC 214 COBOL (A). Prerequisite: CSC 120 or 212. Provides a comprehensive study in COBOL. Includes these topics: COBOL language features, structured programming techniques, file operations, and applications. Requires an ability to program in some computer language. Also requires extensive programming. 3 Cr.

CSC 219 Programming in C (A). Prerequisite: CSC 120 or 212. Provides an introduction to ANSI C. Includes these topics: types, operators, expressions, control flow, functions and program structure, pointers and arrays, structures and I/O. Requires extensive programming. 3 Cr.

CSC 303 Digital Logic and Computer Design (A). Prerequisite: MTH 281. Provides an introduction to digital logic and design of computers. Includes these topics: number systems, Boolean algebra and logic gates, simplification of Boolean functions, combinational and sequential logic design, registers, counters and memory units, register transfer logic, ALU and control unit design. Includes hands-on experience with hardware circuit components. 3 Cr. Every Semester.

CSC 304 Office Information Systems (A). Prerequisites: CSC 104 and junior status. Covers office productivity, information, and decision support systems. Includes these topics: calendar and memo systems; project management; word processing, spelling, grammar and style checkers; desktop publishing; spreadsheets with advanced applications; data analysis and statistical tools; artificial intelligence and expert systems in business; and computers in design and manufacturing. Requires extensive lab work. 3 Cr. Fall.

CSC 311 Assembly Language Programming (A). Prerequisite: CSC 205. Covers basic computer hardware organization, machine language programming and assembly language programming. Includes these topics: digital data representation, assembly language concepts and specific instructions for an available computer, addressing techniques, digital arithmetic, macros, subroutines and linkage, basic concepts of two-pass assemblers, and linking and loading of external modules. Requires extensive programming and supervised lab sessions. 4 Cr. Every Semester.

CSC 319 C in the UNIX Environment (A). Prerequisite: CSC 205. Provides a comprehensive study of the C programming language and the UNIX operating system from the programmer's point of view. Covers language features, program development, modularization, low-level I/O, system function calls, UNIX-specific library functions, UNIX commands, programming environment and utilities. Requires extensive programming. Recommended preparation for CSC 412. 3 Cr. Every Semester.

CSC 401 Theory of Programming Languages (A). Prerequisite: CSC 311. Covers programming language concepts, description, design, and evaluation. Includes these topics: language families and history; design principles; BNF and other syntax notations; compilation vs. interpretation; implementation concepts; comparison of features and conventions of various languages, including: data types, structures, declaration, abstraction, binding, scope, conversion, and protection; computational primitives; control structures; sub-programs; I/O; exceptions; concurrency; preprocessors; and programming environments. Requires extensive programming. 3 Cr. Every Semester.

CSC 402 Compiler Construction (A). Prerequisite: CSC 401. Provides an introduction to the design and implementation of compilers. Includes these topics: formal definitions of programming language syntax and semantics, lexical analysis, parsing techniques (using packages like LEX and YACC), syntax-directed translation, symbol table organization, run-time storage management, code generation and optimization, error detection and recovery. Requires extensive programming. 3 Cr.

CSC 406 Advanced Data Structures (A). Prerequisites: CSC 205 and MTH 481. Covers design and analysis of data structures and associated algorithms. Includes these topics: arrays, strings, stacks, linear and generalized lists, multilists, multirings, queues, sets, hashing, trees, graphs, recursion, searching and sorting, and applications such as text processing, polynomials, sparse matrices, storage management, and unlimited-precision arithmetic. Requires extensive programming and supervised lab sessions. 4 Cr. Every Semester.

CSC 411 Computer Architecture (A). Prerequisite: CSC 303 and CSC 311. Covers design and organization of digital computers. Includes these topics: digital logic and circuit design, data representation, registers, memories and memory management, CPU and ALU architectures, instruction sets, busses and I/O systems, interrupt structure, microprogramming. Covers additional topics such as virtual machines, parallelism, pipelining, and data flow machines. 3 Cr. Every Semester.

CSC 412 Operating Systems (A). Prerequisites: CSC 406 and 411. Recommended: CSC 319 or knowledge of C and UNIX. Covers basic principles of operating systems. Includes these topics: file systems, CPU scheduling and context switching, memory management and virtual memory, disk scheduling, deadlock, concurrent processes and programming, protection mechanisms, design principles, and attempts at standardization. Includes an in-depth study of the UNIX operating system. Requires extensive programming. 3 Cr. Spring.

TOP

CSC 419 Computer Networks (A). Prerequisites: CSC 411 and MTH 481. Provides a comprehensive study of the field of computer communications, with emphasis on the theoretical aspects of local area networks. Compares specific LANs. Includes these topics: the ISO model, protocols, topologies, error detection and correction, routing, packet-switching, virtual circuits, and datagrams. 3 Cr. Fall.

CSC 422 Relational Database Design (A). Prerequisite: CSC 205. 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. Fall.

CSC 427 Software Engineering (A). Prerequisites: CSC 311 and instructor's permission. Provides an introduction to software engineering and programming-in-the-large. Includes these topics: life-cycle models, development standards, project organization, requirements engineering, configuration management, quality assurance, cost and manpower estimates, specification techniques, design methods and representations, human factors, structured programming, object-oriented programming, testing and integration, validation, maintenance, and documentation. Requires the class to work as a project team developing a system for an actual customer. Communication and writing skills are essential. Requires extensive programming. 3 Cr. Fall.

CSC 429 Object-Oriented Programming Using C++ (A). Prerequisite: CSC 319, or CSC 205 and CSC 219. Provides an introduction to basic concepts in object-oriented programming (OOP) and how to apply OOP techniques using the C++ programming language. Includes these topics: the OOP paradigm, data hiding and encapsulation, inheritance and polymorphism, implementation of these concepts in C++ using constructs such as class, friend functions, private, public and protected, overload and virtual functions, and comparison between ANSI C and C++. Requires extensive programming. 3 Cr.

CSC 432 Simulation (A). Prerequisites: CSC 203 and MTH 281. Covers computer modeling of complex systems with an emphasis on discrete stochastic models. Includes these topics: brief review of random variables, distributions and statistical tests, random number generation, mathematical model of a simple queue, simulation of discrete systems (with SIMSCRIPT), and continuous system simulation. 3 Cr. Fall.

CSC 433 Computer Graphics (A). Prerequisite: CSC 311. Provides a hands-on approach to computer graphics, emphasizing interactive 2D raster techniques. Includes these topics: graphics models, drawing primitives and clipping, color models, user interaction, 2D geometrical transformations, animation, curve and surface representations, introduction to 3D projections, solid modeling and rendering. Requires extensive programming. 3 Cr. Spring.

CSC 434 Artificial Intelligence (A). Prerequisite: CSC 205. Provides an introduction to artificial intelligence. 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; classic basic problems involving games, graphs, theorem-proving, symbolic algebra, expert systems, natural language, etc. Requires extensive programming. 3 Cr. Fall.

CSC 437 Computer-Human Interface Design (A). Prerequisite: CSC 205. Provides a hands-on introduction to design and implementation of software for streamlined computer-human interaction, emphasizing graphical user interfaces. Includes these topics: theoretical models; design guidelines; implementation and evaluation methodologies; interaction paradigms, e.g., command-line, menus, hypertext, multimedia; case studies of graphical environments, e.g., Microsoft Windows, Macintosh, X-Windows; application areas, e.g., online help, data entry/editing, query processing, programming, instruction, process control, communication. Extensive programming. 3 Cr. Spring.

CSC 444 Introduction to Parallel Computing (A). Prerequisites: MTH 481 and CSC 406. Deals with design and analysis of parallel algorithms. Includes these topics: parallel models of computation, measures of complexity, parallel algorithms for selection, searching, sorting, merging, matrix algorithms, transitive closure, connected components, shortest path, minimum spanning tree and routing algorithms. Hands-on experience in a parallel programming environment. 3 Cr. Spring.

CSC 483 Theory of Computation (A). Prerequisites: CSC 203 and MTH 481. 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.

CSC 486 Junior/Senior Seminar (A). Prerequisites: CSC 311, junior or senior status, and computer science majors only. Provides an overall view of the professional field of computing, emphasizing development of communication skills for the profession. Includes these topics: detailed history of computing technology, social effects of computing, ethics in the field, professional literature, organizations and related activities, current industrial, social, legal governmental and technical developments, and career opportunities. Requires extensive reading and writing, both technical and non-technical, as well as library research, prepared group discussions. 3 Cr. Every Semester.

CSC 492 Internship (A). 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. Provides an opportunity to apply knowledge from the classroom by working in a professional setting. This is a valuable and challenging experience for students who have never worked in such a situation, as well as for professionals furthering their education. The successful intern learns 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. 3 Cr.

TOP

CSC 495 Topics in Computer Science (A). Prerequisite: Instructor's permission. 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. 3 Cr.

CSC 499 Independent Study in Computer Science (A). Prerequisite: Instructor's permission. 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.



 Return to the Brockport home page
Comments/suggestions concerning these pages can be sent to: Webmaster