COMPUTER SCIENCE (CSC)

Robert A. Allen, Chair/Professor of Computer Science

David L. Cozart, Professor

Andrew Digh, Associate Professor

Andrew J. Pounds, Professor

Cynthia Robertson, Lecturer

Eniye Tebekaemi, Assistant Professor

Martin Q. Zhao, Associate Professor

The Computer Science Department offers several majors: a major in Computer Science (CSC) leading to either a B.S. degree or B.A. degree, a major in Computational Science (CPS) leading to a B.S. degree, a major in Information Science and Technology leading to either the B.S. or B. A. degree, and a major in Cybersecurity (CYS) leading to either the B.S. or B.A. degree. A minor is also available in all four areas: CSC, CPS, IST, and CYS. Students who wish to pursue these programs should consult with the department chair as early as possible to assure an appropriate sequencing of courses. A complete description of the Computational Science program is found under the COMPUTATIONAL SCIENCE heading in this catalog. In addition, a complete description of the Information Science and Technology program is found under the INFORMATION SCIENCE AND TECHNOLOGY heading in this catalog. A complete description of the Cybersecurity program is found under the CYBERSECURITY heading in this catalog.

Both the B.S. and B.A. degree programs in Computer Science include programming languages, algorithms and data structures, software methodology and tools, and computer hardware. This foundation supports further study in numerous advanced courses, such as computer graphics (in which students develop interactive graphics packages using equipment in the Graphics Laboratory), digital logic design (in which students build their own microcomputer from integrated circuit chips), artificial intelligence (in which students learn about computational processes that model human knowledge and reasoning), and software engineering (in which students learn to design and to maintain large software projects).

Mercer University’s Bachelor of Science degree program in Computer Science is accredited by the Computing Accreditation Commission (CAC) of ABET, Inc. (http://www.abet.org), the recognized accreditor of college and university programs in applied science, computing, engineering, and technology. ABET accreditation demonstrates a program’s commitment to providing its students with a quality education. Students who complete this program will obtain a significant degree of technical competence and breadth of exposure to segments of the discipline and will supplement their program with courses from mathematics and science. They will be prepared to continue their education in graduate programs or to obtain employment as computer science professionals. The following program educational outcomes have been established for the BS CSC program. Graduates of the program: (1) will have sufficient breadth and depth in the fundamental scientific and technical areas of computer science to succeed as a computing professional and/or as a graduate student; (2) will be life-long learners who are able to learn, evaluate, and utilize advances in their field; (3) will have the ability to work together with others in a variety of contexts, effectively communicating their ideas both orally and in written form; (4) will be able to recognize and make ethical, moral, and social decisions in their professional environment; and (5) will be capable of applying software development methodology to the analysis, design, implementation, and testing of a software system.

The major in Computer Science leading to the B.A. degree is appropriate for students who have an interest in Computer Science but wish to pursue another major (or minor) course of study as well. This program is especially attractive to students who wish to study both mathematics and computer science, or for students who wish to focus on computer applications in business, education, the arts, or other areas.

Students may enhance their experience in computer science by participating in the Computer Science Cooperative Program. This program allows students to gain computer-related experience through local businesses and industries. Those interested in this program should consult with the department chair. Students are also encouraged to participate in the department’s Undergraduate Research Program, where they work closely with a faculty member on a research problem in their program. Results of students’ work are presented at the local, regional, national, or international level.

The Computer Science Department provides course work in the area of Computer Engineering for the School of Engineering. Students interested in designing both software and hardware should consider this program of study. Information related to this major is contained within the SCHOOL OF ENGINEERING section of this catalog.

Major in Computer Science: B.S. degree 77 semester credit hours minimum 42 semester credit hours of computer science • CSC 204. Programming I • CSC 205. Programming II • CSC 245. Data Structures and Algorithm Analysis • CSC 322. Computer Organization and Assembly Language • CSC 323. Computer Organization and Logic Design • CSC 330. Organization of Programming Languages • CSC 340. Introduction to the Theory of Computing • CSC 460. Operating Systems • CSC 480. Software Engineering • 12 hours of CSC courses numbered 310 or above. CSC 398 cannot be used to satisfy this requirement. CSC 485 and CSC 499 may be taken to satisfy this requirement, but only 3 hours credit, maximum, from either course may be used. • Choose one course from: • MAT 131. College Algebra • MAT 133. Precalculus (either may be exempted by achieving a specific score on the Math Index or Math Placement Test): • MAT 191. Calculus I • MAT 192. Calculus II • MAT 225. Topics in Discrete Mathematics • MAT 320. Probability and Mathematical Statistics • One from: • BIO 211—212. Introduction to Biology I and II • (CHM 111—112 prerequisites) • CHM 111—112. General Chemistry I and II • (MAT 133 prerequisite may be exempted) • PHY 161—162. General Physics I and II • (MAT 191 and 192 prerequisites) • One additional laboratory science course, chosen in consultation with the Computer Science faculty • One additional laboratory science course or one additional mathematics course, chosen in consultation with the Computer Science faculty • Satisfactory completion of the Major Field Test in Computer Science during student’s senior year. • Successful preparation and delivery of a departmentally-approved presentation |

Major in Computer Science: B.A. degree 38 semester credit hours minimum • CSC 204. Programming I • CSC 205. Programming II • CSC 245. Data Structures and Algorithm Analysis • One course from: • CSC 322. Computer Organization and Assembly Language • CSC 323. Computer Organization and Logic Design • 12 additional hours of CSC courses numbered 310 or above. No more than a total of four of these hours may come from CSC 485 and CSC 499 and only with prior approval by the department. • Choose one course from: • MAT 131. College Algebra • MAT 133. Precalculus (either may be exempted by achieving a specific score on the Math Index or Math Placement Test): • MAT 191. Calculus I • MAT 192. Calculus II • MAT 225. Topics in Discrete Mathematics • Satisfactory completion of the Major Field Test in Computer Science |

Departmental Honors in computer science may be earned by students who fulfill these requirements: (1) achieve a 3.50 GPA in CSC courses that apply to the major; (2) prepare a proposal for work on a research project that goes beyond normal coursework two semesters prior to graduation and have it approved by two members of the department; (3) complete the research project under the direction of these two faculty members, and enroll in three semester hours of CSC 499 (Undergraduate Research); (4) prepare a written report of publishable quality using the format of the Association for Computing Machinery and present the results of the project to faculty and students at an announced time; and (5) receive final approval of the work by the departmental faculty.

Minor in Computer Science 17 semester credit hours minimum • CSC 204. Programming I • CSC 205. Programming II • Three CSC courses selected from: • CSC 245. Data Structure and Algorithm Analysis • CSC courses numbered 310 and above |

CSC 125. Introduction to Computing (3 hours)

An introduction to computer systems with emphasis on the central processing unit, memory units, input and output devices, data communications, operating systems, computer software, programming concepts, and the impact of computers on society. Students will learn to use popular software packages for applications such as word processing, spreadsheets, and data base systems. (Every semester)

CSC 198. Special Introductory Topics in Computer Science: (Subtitle) (3 hours)

Study of an introductory topic in Computer Science not covered in any of the departmental offerings. This course may not be applied to the Computer Science major or minor. (Occasionally)

CSC 204. Programming I (4 hours)

Prerequisite: mathematics competency.

Students will gain an understanding of computer science foundations by learning how to program in a modern object-oriented language. The basic topics to be covered include structured and object-oriented programming, basic syntax and semantics, simple data types, control structures, classes, arrays, and graphics. Students will be introduced to the formal logical and mathematical processes behind algorithm construction. They will furthermore learn how to use the computer to test and debug algorithms of their own design. (Every semester)

CSC 205. Programming II (4 hours)

Prerequisite: CSC 204.

A continuation of CSC 204 with an emphasis on advance object-oriented principles. Topics include inheritance, polymorphism, graphical user interfaces, event-driven programming, recursion, and simple data structures (lists, stacks, queues, and binary search trees). (Every semester)

CSC 206. Visual Programming (3 hours)

Prerequisite: CSC 204.

This course offers an introduction to window-based, visual programming. Emphasis will be on the object-oriented, event-driven languages such as Visual Basic, Visual C++, Delphi, and Access. Students will learn how to create objects, change their properties, and develop appropriate event handlers. (Every year)

CSC 212. Programming Team Strategies (1 hour)

Prerequisite: competence in a programming language.

This course allows students to practice and discuss skills needed to be successful in computer programming team competitions. Grading is S/U. Can be repeated for a maximum of 3 hours. (Every year)

CSC 245. Data Structures and Algorithm Analysis (3 hours)

Prerequisites: CSC 205 and MAT 141 or 191.

A rigorous study of the implementation of different data structures, and an analysis of the time and space complexity of their associated algorithms. Topics will include dynamic memory, trees, hashing, heaps, sorting, and graphs. (Every semester)

CSC 285. Topics in Computer Science: (Subtitle) (1-4 hours)

Prerequisite: consent of instructor.

Students must engage in projects or assignments requiring at least one contact hour, or equivalent, per week for every hour of credit. May be repeated with different topics. (Occasionally)

CSC 290. Theory and Application of Multimedia (3 hours)

An introduction to the technical aspects of computer-based multimedia. Technical and hardware issues as well as theory and design concepts are covered. Students will design and build a multimedia presentation. (Occasionally)

CSC 303. Topics in Computational Science: (Subtitle) (1-4 hours)

Prerequisite: to be determined by the instructor.

Students will engage in projects and assignments related to modeling and computation within one or more scientific disciplines. While emphasis will be placed on using existing computational tools, programming may be required. May be repeated with different topics. (Every two years)

CSC 310. File Structures and Advanced Algorithms (3 hours)

Prerequisite: CSC 245.

A study of the different data structures and algorithms that are appropriate for the placement and organization of data on secondary storage. Topics will include indexing, external sorting, B-trees, extendible hashing, and basic paradigms for the design and analysis of efficient algorithms. (Every two years)

CSC 312. Database Systems (3 hours)

Prerequisite: CSC 245.

A study of both logical and physical organization of computer database systems, including DBMS languages, architecture, and interfaces, data modeling, integrity, and security. Emphasis will be placed on relational models, languages, and systems. (Every two years)

CSC 315. Introduction to Computer Graphics (3 hours)

Prerequisite: CSC 205.

Co-requisite: CSC 245.

A survey of the basic hardware components and the software techniques used in the discipline of computer graphics. Topics to be covered will include two and three-dimensional geometry, matrix representations of transformations, clipping, perspective, stereoscopic views, viewing in three dimensions, and device interaction. Visual realism and animation using color, shading, lighting, and texturing will also be introduced. Each student will be required to complete a project utilizing a graphics workstation. (Every two years)

CSC 322. Computer Organization and Assembly Language (3 hours)

Prerequisite: CSC 204.

Designed to provide an introduction to fundamental concepts of the organization and operation of a computer and to the study of assembly language programming. Included will be the study of register sets, symbolic addresses, addressing techniques, parameter-passing techniques, and data representation. (Every year)

CSC 323. Computer Organization and Logic Design (4 hours)

Prerequisite: CSC 204.

An introduction to the basic organization of a digital computer. Topics will include basic logic design at the circuit level, data coding and representations, functions of large-scale components of a computer system, and the mechanics of information transfer and control within a digital system. Students are introduced to practical design, breadboarding, and testing of digital circuits in the Hardware Laboratory. (Every year)

CSC 324. Digital System Design (3 hours)

Prerequisite: CSC 323.

A continuation of the hardware design process begun in CSC 323. (Occasionally)

CSC 330. Organization of Programming Languages (3 hours)

Prerequisite: CSC 205.

Co-requisite: CSC 322.

A study of the concepts and issues underlying the design and implementation of programming languages. Topics considered will be the objects of computation, grammars, ambiguity, control structures, scope and typing of variables, block-structured languages, precedence, recursion, and input/output facilities. Examples will be drawn from a high-level language. (Every year)

CSC 335. Numerical Methods (3 hours)

(Same as MAT 335)

Prerequisites: MAT 192 and ability to write programs in a high-level computer language.

A study of numerical methods for the solution of mathematical problems and computer application of those methods. Topics will include methods such as the bisection algorithm and fixed point iteration for the solution of equations with a single variable, interpolation and polynomial approximation, numerical differentiation and integration, solution of systems of linear equations, and least squares approximation. (Every year)

CSC 340. Introduction to the Theory of Computing (3 hours)

Prerequisites: MAT 225 and the ability to write programs in a high-level computer language.

Fundamentals of computing theory are developed on an intuitive level. Topics studied include finite automata, context-free grammars, Turing machines, and recursive functions. The notion of undecidable or non-computable problems based on the Turing machine model is discussed briefly. (Every year)

CSC 360. Theory of Data Communications (3 hours)

Prerequisite: CSC 205.

Consideration of the design of communication line characteristics, modems, synchronous and asynchronous line protocols, error detection and correction schemes including polynomial codes, basic multiplexing, and concentration. (Every year)

CSC 380. Artificial Intelligence (3 hours)

Prerequisites: CSC 245, MAT 225.

An introduction to the problem domains of artificial intelligence and to the principles and techniques used to design systems that acquire knowledge and demonstrate intelligent responses. Particular areas studied include deterministic and heuristic search techniques appropriate for large problem spaces, formal methods of knowledge representation and logical reasoning, natural language understanding, and neutral nets. (Every two years)

CSC 398. Internship in Computer Science (1-3 hours)

Prerequisites: junior or senior standing, and permission of department chair.

An intensive practicum experience at an approved business, organization, or academic institution. Students, under the direction of a faculty member and an on-site supervisor, must engage in projects or assignments requiring at least three on-site hours per week for every hour of credit. Students will learn through observation, regular discussions with the on-site supervisor and Mercer faculty member, and written reflection. In addition, students may be required to attend training events, workshops or weekly seminars. This course may be repeated for a total of 9 hours and does not count toward a major or minor in Computer Science. Graded S/U. (Every year)

CSC 415. Graphics Simulation and Visualization (3 hours)

Prerequisite: CSC 315.

Advanced topics in computer graphics such as viewing in three dimensions, representation of three-dimensional surfaces and shapes, texture mapping, hierarchical kinematic and solid modeling, rendering and animation of articulated objects, scientific visualization, and physical aspects of simulation such as collision detection and gravity will be covered. The design and implementation of a graphics project focusing on real-time simulation will be required. (Every two years)

CSC 435. High Performance Scientific Computing (3 hours)

Prerequisite: CSC 335.

An introduction to modern methods in large-scale scientific computing. Topics will include architectures for high performance and parallel computing utilizing both shared memory and distributed memory hierarchies. Algorithms for parallel computing, as well as parallel implementations of codes used in numerical methods, will be studied and their performance enhancements examined. Emphasis will be placed on code development, debugging, testing, and optimization on high performance systems. Students will complete projects related to current computational problem in science and/or engineering. (Every two years)

CSC 450. Compiler Construction (3 hours)

Prerequisites: CSC 245, 322, and MAT 225.

A study of basic techniques of compiler design and implementation including formal description of syntax and semantics, lexical analysis, grammars, syntax analysis, intermediate code, generation of object code, relocation, symbol tables, error detection, and optimization. Students will be engaged in a compiler writing project. (Occasionally)

CSC 460. Operating Systems (3 hours)

Prerequisites: CSC 245, 322, and MAT 225.

A survey of functions of an operating system and the algorithms used in its implementation. Input/output programming, interrupt processing, memory management, demand paging, segmentation, processor management, scheduling, synchronization, multiprocessing, device management, dead-lock avoidance, information management, and interdependencies. (Every year)

CSC 480. Software Engineering (3 hours)

Prerequisite: CSC 245.

A study of current techniques used in the development of large-scale software projects. Topics include requirements analysis, functional specification, systems design, implementation, testing, and maintenance. (Every year)

CSC 485. Topics in Computer Science: (Subtitle) (1-3 hours)

Prerequisite: consent of instructor.

Students must engage in projects or assignments requiring at least one contact hour, or equivalent, per week for every hour of credit. May be repeated with different topics, but total credit may not exceed 6 hours. (Occasionally)

CSC 499. Undergraduate Research (1-3 hours)

Prerequisite: consent of instructor.

Individual research projects in computer science are planned, performed, and presented in written and oral form. Students must engage in projects or assignments requiring at least one contact hour, or equivalent, per week for every hour of credit Significant student results will be submitted to a conference or a journal. Projects are selected in consultation with a CSC faculty member. The course may be repeated, but total credit may not exceed 6 credit hours. This course is typically taken in conjunction with an Honors project. Graded S/U. (Occasionally)