COMPUTER SCIENCE

 

MAURICE L. EGGEN, Ph.D., Professor

THOMAS E. HICKS, Ed.D., Associate Professor

JOHN E. HOWLAND, Ph.D., Professor

MARK LEWIS, Ph.D., Associate Professor

BERNA L. MASSINGILL, Ph.D., Associate Professor

J. PAUL MYERS, JR., Ph.D., Professor; Chair

GERALD N. PITTS, Ph.D., Caruth Distinguished Professor of Computer Science

YU ZHANG, Ph.D., Assistant Professor

 

THE MAJOR

 

The requirements for the degree of Bachelor of Science with a major in Computer Science are as follows:

 

I.      The common curriculum

 

II.      Departmental requirements:

 

42 semester hours (project option) or 45 semester hours (thesis option) of computer science including the following. (Note that students who take CSCI 1311 and 1120 will take one additional semester hour. See IIA below.)

 

A.    The Principles:

        CSCI 1320, 1321, 2320, 2321, 2322, 3320, 3321, 4320. (The combination of CSCI 1311 and 1120 may be substituted for CSCI 1320.)

B.     Additional Requirements:

        CSCI 1194, 1323.

C.     Professional/Ethical/Design Seminar (2 hours).

D.     Senior Software I, CSCI 4385 and Senior Software II, CSCI 4386; or Senior Thesis, CSCI 3398, 4398, 4399.

E.     Six additional upper division computer science hours sufficient to total at least 42 semester hours.

 

III.     Additional requirements include MATH 1311 and two of the following courses: MATH 1312; 1320 or 3334; 3323; CSCI/MATH 2324 or 3351; PHIL 2340; 3340.

 

IV.    Completion of the Senior Experience: CSCI 4386 or 4399, as described above.

 

V.    Electives sufficient to total 124 semester hours.

 

COMPUTING AS A SECOND MAJOR

 

The requirements for Computing as a Second Major are as follows:

 

I.      The common curriculum

 

II.      Departmental requirements:

 

30 hours of computer science including the following. (Note that students who take CSCI 1311 and 1120 will take one additional semester hour. See IIA below.):

 

A.    Required courses: CSCI 1320 (or 1311 and 1120), 1321, 1323, 2320.

B.     18 additional hours of computer science including 15 upper-division hours.

 

III.        Additional requirements are one of the following:

 

Note: At most one of the following courses may be counted for either A or B: MATH 1320, PSYC 2401, and BUSN 2301.

 

A.       Nine hours selected from MATH 1311, MATH 1312, MATH 1320, PHIL 2340, PSYC 2401, and BUSN 2301.

B.       Six hours selected from the list in III.A and three hours of upper-division CSCI.

 

IV.    Completion of a first major from another department.

 

V.    Completion of the Senior Experience as specified in the student’s first major.

 

VI.    Electives sufficient to total 124 semester hours.

 

MINOR IN COMPUTER SCIENCE

 

The department offers a minor in Computer Science. This minor is designed to provide students with entry-level skills in computing, as well as a substantial computing background for graduate studies in fields where computers have become primary research tools. This minor consists of at least 21 hours of Computer Science and at least 6 hours of Mathematics. The Computer Science requirements are CSCI 1320 (or 1311 and 1120), 1321, 1323, 2320, plus at least three additional upper division Computer Science electives. The Mathematics requirements are MATH 1311 and one of the following courses: MATH 1312; 1320 or 3334; 3323; CSCI/MATH 2324 or 3351; PHIL 2340; 3340.

 

MINOR IN MANAGEMENT INFORMATION SYSTEMS

 

For the business-oriented student, the department offers a minor in Management Information Systems. This minor is designed to provide students with some knowledge of business principles and the necessary background to permit them, through the use of computer operations, to efficiently manage and transmit information.

 

The requirements are as follows:

 

I.      Those courses required for the B.A., B.S., or minor in Business Administration.

 

II.         CSCI 1320 (or 1311 and 1120), 1321, 2320, plus three upper division Computer Science courses.

 

SENIOR SOFTWARE

 

Requirements include:

 

1.     Successful completion of CSCI 4385 in the fall semester of the senior year.

2.     Successful completion of CSCI 4386 in the spring semester of the senior year.

 

SENIOR THESIS

 

Requirements include:

 

1.     Overall grade point average of 3.0 or better at the time the thesis option is selected.

2.     Grade point average in computer science of 3.0 or better at the time the thesis option is selected.

3.     Successful completion of CSCI 3398 in the spring semester of the junior year.

4.     Successful completion of CSCI 4398 in the fall semester of the senior year.

5.     Successful completion of CSCI 4399 in the spring semester of the senior year.

6.     Select a faculty committee consisting of a thesis chair chosen from the computer science faculty and two additional faculty members during the spring semester of the junior year.

7.     During the spring semester of the senior year a public formal presentation and defense of the thesis is made.

8.     Accepted thesis will be bound and placed in the library. Binding costs will be paid by the student.

 

HONORS IN COMPUTER SCIENCE

 

To be eligible for the distinction of graduation with Honors in Computer Science the requirements are:

 

1.     Select the senior thesis capstone option described above.

2.     Grade point average of at least 3.33 or better in all courses prior to the semester of graduation.

3.     Grade point average of 3.33 or better in all computer science courses prior to the semester of graduation.

4.     Submit in writing a request for honors consideration to the department chair in the semester prior to the semester of graduation.

 

        The decision of whether or not to confer the honors designation will be made by the departmental faculty and will be determined by departmental vote. The criteria include quality of the written thesis, quality of the oral presentation, and contribution to the field.

 

        When a thesis receives the honors designation, this designation is so noted on the student’s transcript and announced at graduation.

 

        Students who successfully complete CSCI 4399 with a grade of C or better, but fail to achieve honors status or fail to meet the thesis deadline, will satisfy the capstone requirement provided they complete the thesis publication and pay the binding fee so the thesis may be placed in the library.

 

COURSES

CSCI 1101         Laboratory for Great Ideas in Computer Science

Laboratory experiments in computer science. Techniques for constructing experiment software and analysis of experimental data. Must be taken concurrently with CSCI 1301.

 

CSCI 1120         Low-Level Computing

Seminar on concepts of computing that are close to the machine level. The course teaches skills such as command line processing and programming in a language that exposes more of the underlying machine. Internal data representations will also be explored. This course cannot be taken by students who already have credit for CSCI 1320.

Prerequisite: CSCI 1311 or consent of instructor.

 

CSCI 1194         A Survey of Computer Science

Introduction to a variety of computer science topics such as networking, computer architecture, operating systems, parallel processing, computer graphics, theory, simulation, modeling, database systems, language paradigms, gaming, robotics, web site design, and virtual reality. This course, team-taught by Computer Science department faculty, is typically offered in the Fall only, and is normally taken concurrently with CSCI 1320 or 1321.

 

CSCI 1300         Essential Computing Skills

Introduction to computer skills. Computing hardware, software, files, and formats. Text processing. Numbers and quantitative analysis. Information structure and retrieval. Graphics and visualization. Communication, networking, and the Internet. Computer ethics, privacy and legal use of software and data. Solution of several problems illustrating each of these skill areas. No credit after completion of CSCI 1321.

 

CSCI 1301         Great Ideas in Computer Science

Introduction to computer science topics for students majoring in disciplines other than computer science. Topics include computer organization, computer arithmetic, computer circuits, algorithms, data structures, programming methodology, software engineering, language translation, program execution time, computer networks, parallel computation, computability, and artificial intelligence. Impact of computer science on modern society. Must be taken concurrently with CSCI 1101.

 

CSCI 1302         Introduction to Computing: Business Applications

An introduction to computers and programming with special emphasis on applications for nonscientists, including business and data processing. Introduction to programming in BASIC. Applications packages including spreadsheet, database, and word processing. Computer solution of several business and data processing applications and interpretation of results. No credit after completion of CSCI 1304. Does not count toward the 42 hours required for a computer science major.

 

CSCI 1303         Essential Computer Skills in Education

Computer skills and the integration of technology into education. Computing hardware, software, files, and formats. Text processing. Numbers and quantitative analysis. Information structure and retrieval. Graphics and visualization. Communication, networking, and the World Wide Web. Computer ethics, privacy and legal use of software and data. Examples and solution of several problems applying each of the skills areas to K-12 teaching and learning.

 

CSCI 1304         Computers and Society

An examination of the impact of computer technology on issues of society and culture. The course will contain several components: an introduction to computing (software and hardware concepts); an introduction to problem-solving using one or more high-level languages/software applications to include information retrieval and processing (numeric, text, and graphics); computer communications; and discussions of the uses and ethical issues surrounding computers in our society. No credit after completion of CSCI 1300, 1302, 1320, or 1321.

 

CSCI 1311         Introduction to Programming Logic

Introduction to the basics of computer programming and logic as applied to problem solving for non-science majors. Use of a highly graphical environment will stress creativity in the application of the scientific method to problem solving. The course will cover the basic concepts of object-oriented programming including objects, methods, sequences of instructions, conditionals, loops, and simple collections.

 

CSCI 1320         Principles of Algorithm Design I

Introduction to the notion of an algorithm. Survey of algorithmic problem solving principles in relation to computer solutions: divide and conquer, searching and sorting strategies, recursion, and structured programming. Top-down design and analysis of algorithms. Computer organization. Computer programming solutions to several laboratory exercises. May be taken concurrently with CSCI 1323, 2322.

 

CSCI 1321         Principles of Algorithm Design II

Algorithm development, program logic, program design strategies, program implementation strategies. Program correctness and program verification, algorithm analysis, and computational complexity. User defined structures, data types, specification requirements, sequential and direct access files, sorting, searching, and computer organization. Abstract data types including stacks, queues, and linked lists. Computer programming solutions to several laboratory exercises. May be taken concurrently with CSCI 1323, 2322.

Prerequisite: CSCI 1311, 1320, or consent of instructor.

 

CSCI 1323         Discrete Structures

Algebra of sets including mappings, relations, and functions. Algebraic structures including semigroups, groups, and propositional logic. Boolean algebra. Elements of the theory of directed and undirected graphs. Application of these structures to various areas of computer science. May be taken concurrently with CSCI 1311, 1320, or 1321.

 

CSCI 2194         Professional/Ethical/Design Seminar

Emphasis changes each semester. Topics include professional concerns (legal issues including software licensing, warranties, patents, copyrights, etc.) and history of the field, ethical issues in computing, introduction to large-scale design through examples of good versus bad design.

Prerequisite: CSCI 1194 or consent of instructor.

 

CSCI 2318         Computers in Music

Software tools for music applications. Historical development of musical encoding systems, including DARMS, MUSTRAN, SML, and MIDI. Musical applications programming. Chronological survey of the uses of computers in music. Common themes in the development of music programming languages. Examples of the use of sophisticated software in the development of solutions to elementary musical analysis tasks.

Prerequisites: Sophomore standing, computer literacy, and music literacy.

 

CSCI 2320         Principles of Data Abstraction

Abstract data types and their implementation in an object-oriented environment. Axiomatic systems describing the classical computer science data structures: stacks, queues, lists, trees, graphs, and the like. Analysis of the computational complexity of alternative implementation strategies in the context of the typical algorithmic applications.

Prerequisites: CSCI 1321, and either CSCI 1320 or CSCI 1311 and 1120.

 

CSCI 2321         Principles of Computer Design

A study of computer organization and design including emphasis on logical design, the role of performance, the structure of instructions, computer arithmetic, processor control, and methods of performance enhancement. Some attention will also be given to assembly programming.

Prerequisites: CSCI 1321, and either CSCI 1320 or 1120.

 

CSCI 2322         Principles of Functional Languages

An introduction to functional programming. Functional composition, recursion, and iteration. Procedure and data abstraction using functions. Managing state, streams, delayed evaluation, and continuations. Using functional languages as an analytic notation for reasoning about programs. Solution of several laboratory problems. May be taken concurrently with CSCI 1320, 1321.

 

CSCI 2323         Scientific Computing

This course will cover both numerical and text processing methods with problems chosen from the sciences and mathematics. The course will also focus on the general idea of how computational science has expanded the realm of what is possible in the sciences. The course builds on basic programming knowledge to give students understanding and skills as to how computers are used in the sciences.

Prerequisites: CSCI 1320, MATH 1311 or 1307.

 

CSCI 2324         Numerical Calculus

Introduction to the numerical algorithms fundamental to scientific computer work. Elementary error analysis, interpolation, quadrature, linear systems of equations, and introduction to the numerical solution of ordinary differential equations. (Also listed as MATH 2324.)

Prerequisites: CSCI 1120 or 1320, MATH 1311.

 

CSCI 3194         Professional/Ethical/Design Seminar

Emphasis changes each semester. Topics include professional concerns (legal issues including software licensing, warranties, patents, copyrights, etc.) and history of the field, ethical issues in computing, introduction to large-scale design through examples of good versus bad design.

Prerequisite: CSCI 2194 or consent of instructor.

 

CSCI 3291         Current Topics in Computer Science

New developments in the field of computer science, beyond the scope of standard courses, of interest to faculty and students. May be taken more than once, as long as course content changes.

Prerequisites: CSCI 2320; others determined by course content.

 

CSCI 3311         Information Assurance and Security

A contemporary introduction to the broad area of security in computing systems, exploring issues that abound when attempting to secure information in an interconnected society. An information-based examination of risk modeling, assessment, and management; ethics; policies and behaviors; cryptography; code security; data security; operating system security; and network security. Approaches to assure information confidentiality, integrity, and availability (CIA).

Prerequisite: CSCI 2320.

 

CSCI 3320         Principles of Theoretical Computer Science

Core topics from finite automata, languages, and the theory of computation. The Chomsky hierarchy, abstract machines, and their associated grammars. Models of computation (e.g., Turing machines), Church’s thesis, unsolvability, and undecidability. Computational complexity, intractability, and NP-completeness.

Prerequisites: CSCI 2320, 1323, and Junior standing.

 

CSCI 3321         Principles of Software Engineering

Issues involved in developing large-scale software systems. Models for the software lifecycle; techniques and tools of analysis, design, programming, testing, debugging, and maintenance. May include formal methods, CASE, expert systems, case studies.

Prerequisites: CSCI 2320, 1323, and Junior standing.

 

CSCI 3342         Computer Networks

Local area networks, high-speed networks, and bridges. Wide area networks and internetworking. Network protocols including OSI protocols. Network security, reliability, and performance. Laboratory experience with one or more network protocols.

Prerequisite: CSCI 2320.

 

CSCI 3343         Database Systems

The goals of DBMS including data independence, relationships, logical and physical organizations, schema and subschema. Entity relationship diagrams. Hierarchical, network, and relations models. Data definition and data manipulation languages. Query languages, relational algebra, and relational calculus. Data normalization techniques, data security integrity, and recovery. Case studies of several existing systems.

Prerequisite: CSCI 2320.

 

CSCI 3344         Artificial Intelligence

The purpose of this course is to update the student on state-of-the-art artificial intelligence concepts, such as heuristic programming, state-space search techniques, and/or graphs for problem solving, game playing techniques, theorem proving procedures for propositions and first-order logic, knowledge representation, and examples of knowledge-based systems.

Prerequisites: CSCI 1323, 2320.

 

CSCI 3351         Numerical Analysis

Methods of solution of algebraic and transcendental equations, simultaneous linear algebraic equations, numerical integration and differentiation, initial and boundary value problems or ordinary differential equations. (Also listed as MATH 3351.)

Prerequisites: CSCI 1321, MATH 3336.

 

CSCI 3352         Simulation Theory

Introduction to simulation, discrete simulation models, queuing theory, and stochastic processes. Survey of simulation languages. Simulation methodology including generation of random numbers, design of simulation experiments, and validation of simulation models.

Prerequisites: CSCI 1120 or 1320, and knowledge of statistics.

 

CSCI 3353         Graphics

Survey of display devices, display data structures, graphics input, 2D transformations, windowing, clipping, viewing, 3D transformations, perspective, depth, hidden line removal. Graphics programming techniques and several laboratory problems using available graphics devices.

Prerequisites: MATH 1311, CSCI 2320.

 

CSCI 3361         Analysis of Algorithms

Complexity of algorithms, time and space requirements, and trade-offs. Searching and sorting, mathematical algorithms, graph and combinatorial algorithms. Divide and conquer, branch and bound, dynamic programming, exhaustive search. Limitations, intractability and NP-completeness, approximation algorithms.

Prerequisites: CSCI 1321, 1323.

 

CSCI 3366         Introduction to Parallel Processing

An introduction to parallel processing with particular emphasis on algorithm development. Comparison between sequential and parallel algorithm development. Survey of hardware and software for parallel processing. Comparison of symmetric multiprocessors and parallel processors. Discussion of architectures and mappings of virtual to physical machines. Models of parallel computation including parallel random access machines, circuits, and networks. Students will be expected to implement several projects in a suitable parallel programming environment.

Prerequisite: CSCI 2320.

 

CSCI 3368         Principles of Programming Languages

An introduction to the syntax and semantics of programming languages. This will include a study of data structures and control structures, proof of programs, a comparison of functional and imperative programming languages, parameter passing, storage allocation schemes, and concurrent language features.

Prerequisite: CSCI 2320.

 

CSCI 3-90         Directed Study

Credit will vary depending on work done.

Prerequisites: CSCI 1323, 2320, and Junior standing.

 

CSCI 3-94         Seminar

Topics will vary depending on student interest. May be taken for a maximum of six (6) semester hours of credit.

Prerequisites: CSCI 1323, 2320, and Junior standing.

 

CSCI 3398         Thesis Reading

Independent study in selected areas in preparation for Thesis. Spring.

Prerequisites: CSCI 1323, 2320, Junior standing, and consent of instructor.

 

CSCI 4194         Professional/Ethical/Design Seminar

Emphasis changes each semester. Topics include professional concerns (legal issues including software licensing, warranties, patents, copyrights, etc.) and history of the field, ethical issues in computing, introduction to large-scale design through examples of good versus bad design.

Prerequisite: CSCI 3194 or consent of instructor.

 

CSCI 4320         Principles of Operating Systems

Introduction to operating systems, batch systems, multiprogramming systems, multiprocessor systems, input-output systems, interrupt handling, language processors, file management systems, concurrency, teleprocessing systems.

Prerequisite: CSCI 2321.

 

CSCI 4353         Advanced Graphics

Geometric modeling, algorithms for hidden surface removal, shading models, rendering, texture mapping, reflectance mapping, ray tracing, and radiosity. Introduction to animation. Several laboratory programming problems using available graphics devices.

Prerequisite: CSCI 3353.

 

CSCI 4365         Advanced Theoretical Computer Science

Advanced topics in theory. Closure properties, ambiguity, contact-sensitive and recursively enumerable languages, alternate models of computation, non-determinism, decidability, Ackermann’s function, computational complexity speed-up.

Prerequisite: CSCI 3320.

 

CSCI 4385         Senior Software Project I

The analysis and design of an actual large-scale software system. Application of the analysis and design tools within the software life cycle presented in CSCI 3321 (Principles of Software Engineering). Students work in teams under direct supervision of the faculty.

Prerequisite: 21 hours of Computer Science, including CSCI 3321.

 

CSCI 4386         Senior Software Project II

The implementation, testing, and maintenance of the large-scale software systems designed in CSCI 4385. Students working in teams under direct supervision of faculty implement and demonstrate the deliverable software package. This course fulfills the Senior Experience requirement of the University’s Common Curriculum.

Prerequisite: CSCI 4385.

 

CSCI 4398         Thesis I

Individual research and scholarly investigation under faculty supervision leading to the preparation of a senior thesis. To be taken only by students committed to the preparation of a thesis and those who wish to earn the Honors in Computer Science designation. Serves as a part of the departmental capstone requirement. Fall.

Prerequisite: CSCI 3398 and consent of instructor.

 

CSCI 4399         Thesis II

Individual research and scholarly investigation under faculty supervision leading to the preparation of a senior thesis. Must be taken by students who desire honors in computer science. Serves as a part of the departmental capstone requirement. Thesis presentation to departmental faculty and students and a separate thesis defense is a requirement for the completion of this course.  Spring. This course fulfills the Senior Experience requirement of the University’s Common Curriculum.

Prerequisite: CSCI 4398 and consent of instructor.