MAURICE L. EGGEN, Ph.D., Associate Professor

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

JOHN E. HOWLAND, Ph.D., Professor

AARON H. KONSTAM, Ph.D., Professor

J. PAUL MYERS, JR., Ph.D., Associate Professor

GERALD N. PITTS, Ph.D., Professor; Chair

RONALD E. PRATHER, Ph.D., Caruth Distinguished Professor of Computer Science

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 of computer science including:

A. The undergraduate core:

CSCI 311, CSCI 312, CSCI 314, CSCI 316, CSCI 320, CSCI 324,

CSCI 325, CSCI 364, CSCI 374

B. One course chosen from each of the following areas:

SYSTEMS: CSCI 341, CSCI 342, CSCI 346, CSCI 349


THEORY: CSCI 361, CSCI 363, CSCI 365, CSCI 367, CSCI 368

C. Senior Thesis (CSCI 378) or Senior Software Project (CSCI 376).

D. Sufficient computer science electives to total 42 semester hours.

III. Additional requirements include MATH 411 and two of the following courses: MATH 312, MATH 320, MATH 323, PHIL 310.


Minor In Computer Science

For the liberal arts student, the department offers a minor in Computer Science. This minor is designed to provide students with entry level career skills in computer science, as well as prerequisite preparation for graduate study in applied areas of computing science.

This minor consists of at least 21 hours of Computer Science and at least 7 hours of Mathematics. The Computer Science requirements are: CSCI 311, CSCI 312, CSCI 314, CSCI 316, CSCI 320, and CSCI 325, plus at least one additional upper division Computer Science elective. The Mathematics requirements are MATH 411 and at least one of MATH 312, MATH 320, MATH 323, or PHIL 310.

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 305, CSCI 311, CSCI 312, CSCI 314, CSCI 325, and one of CSCI 353, CSCI 357, or CSCI 346.

Guidelines for Acceptance of Majors

FULL ACCEPTANCE is granted if the following requirements are met at the time of application:

1. Completion of CSCI 311, CSCI 312, CSCI 314 and CSCI 316 with grades of C or better.

2. Completion of MATH 411 with a grade of C or better.

3. Good academic standing at the university.

PROVISIONAL ACCEPTANCE may be granted if it is apparent that the applicant can meet the requirements for full acceptance by the end of the semester in which application is made. If provisional acceptance is not removed in the semester following application, the application will be cancelled. The student may reapply in a future semester.

TRANSFER STUDENTS will be accepted provisionally pending completion at Trinity of at least one upper division Computer Science course with a grade of C or better, and transfer hours equivalent to CSCI 311, CSCI 312, CSCI 314, and CSCI 316.



1. Overall grade point average of at least 3.3.

2. Grade point average of at least 3.3 in Computer Science.

3. Two faculty letters of recommendation.

4. Application for admission to the honors program in the fall semester of the junior year. Application is made to the chair of the Computer Science department.

5. Applications must be approved by majority vote of the faculty of the Computer Science department.

6. Identification of the faculty committee and submission of the thesis proposal during the spring semester of the junior year. The thesis committee consists of three Trinity faculty members, two of which must be from Computer Science. (The third may also be from Computer Science.)

7. Register for CSCI 366H, Honors Reading, during the spring semester of the junior year.

8. Register for CSCI 379H, Honors Thesis, during the fall semester of the senior year.

9. Register for CSCI 379H, Honors Thesis, during the spring semester of the senior year.

10. The requirement of CSCI 376 or CSCI 378 is met for those students successfully completing the Honors Thesis, CSCI 379H.

11. Students must make formal presentation and defense of the Honors Thesis during the spring semester of the senior year.

12. If the student successfully completes each of the above requirements, then the student is a candidate for Honors in Computer Science, and is recommended to the Vice President for Academic Affairs for graduation with Honors.

13. Successful thesis will be bound and placed in the library. Binding costs will be paid by the student.

Lower Division

301 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.

Prerequisite: None. Must be taken concurrently with CSCI 101L.

305 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.

Prerequisite: None.

306 Introduction to Computing for Scientists

An introduction to computers and programming with special emphasis on applications in the sciences and mathematics. Programming in a high level programming language. Computer solution of several science and mathematics applications and interpretation of results. No credit after completion of CSCI 305 or 307.

Prerequisite: None.

307 Computers and Society

An examination of the impact of computer technology on issues of society and culture. The course will contain three components: an introduction to software and hardware concepts, an introduction to programming in a high level programming language, and discussions of the various uses of computers in our society. The discussions will focus on how these uses have impacted our society and its values. No credit after completion of CSCI 305 or 306.

Prerequisite: None.

311 Problem Solving and 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 314 or CSCI 316.

Prerequisite: None.

312 Problem Solving and 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 314 or CSCI 316.

Prerequisite: CSCI 311 or consent of instructor.

314 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 311 and CSCI 312.

Prerequisite: None.

316 Functional Language Programming

An introduction to functional language programming. Functions and function composition in a programming language used to solve problems in computer science. Special emphasis on the use of functional language as a notation. Laboratory solution of several computational problems in computing science. May be taken concurrently with CSCI 311 and CSCI 312.

Prerequisite: None.

101L Laboratory for Great Ideas in Computer Science

Laboratory experiments in computer science. Techniques for constructing experiment software and analysis of experimental data.

Prerequisite: None. Must be taken concurrently with CSCI 301.

318 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.

Upper Division

320 Assembly Language Programming

Computer System Organization. Machine language, symbolic assembly language, program linkage, segmentation, linkers and loaders. Addressing modes and instruction formats. Integer arithmetic, character manipulation, bit manipulation, floating point arithmetic and decimal arithmetic. Macros. Input/output, virtual memory, interrupts and operating systems. Several laboratory programming problems.

Prerequisites: CSCI 312, CSCI 316.

324 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 Mathematics 324.

Prerequisites: CSCI 311, MATH 411.

325 Data Structures

Survey of advanced abstract data types, dynamic memory management, lists, trees, advanced sorting, key tables, graphs and object- oriented data types. May be taken concurrently with CSCI 314 or CSCI 316.

Prerequisites: CSCI 312.

330 Introduction to Cognitive Science

Fundamental issues concerning knowledge representation and cognitive processes, studied by considering the intellectual connections among cognitive psychology, artificial intelligence, philosophy of mind, linguistics, and neuroscience.

Prerequisite: Sophomore standing.

337 Logic Programming

First- order predicate logic and its relationship to the programming process, and how logic programs can be written and executed. Issues of knowledge representation and resolution- based inference leading to the use of logic programming for the design of expert systems. Introduction to programming in Prolog.

Prerequisite: A course in logic or consent of instructor.

341 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 320.

342 Data Communications and Networks

Topics and application laboratories shall be taken from standards, equipment, interfaces, architectures, transmission alternatives, communications environment, regulatory issues involved in the design and use of data communications systems, developments involving the design and use of data communications systems and networking computers including local area networks, and major national/international protocols.

Prerequisite: CSCI 320.

346 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 325.

349 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 320, CSCI 325.

351 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 351.)

Prerequisites: CSCI 312, MATH 336.

353 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 311 or CSCI 306 and Knowledge of Statistics.

357 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 411, CSCI 325.

358 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 357.

361 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 312 and CSCI 314.

363 Finite Automata and Languages

Abstract finite machines and their associated grammars. Emphasis on finite- state machines and push- down automata: non- determinism, minimization. Formal languages with emphasis on regular and context- free grammars: Chomsky hierarchy, closure properties, parsing, ambiguity, recursion, decidability.

Prerequisites: CSCI 314 and Junior standing.

364 Computer Architecture

Computer organization. Storage elements, switching elements, addressing operation formats, data representation and computer arithmetic. Adders, multipliers, and dividers. Data path and system control. Microprogramming. Input/output devices. Several laboratory programming problems which illustrate hardware.

Prerequisite: CSCI 320.

365 Computation Theory

Models of computation including Turing machines, recursive functions, r.e. grammars, foundational languages. Godel encoding, universal machines, Church's thesis, unsolvability and undecidability. Computational complexity speed- up, intractability and NP- completeness.

Prerequisites: CSCI 314 and Junior standing.

367 Theory of Compiler Construction

Introduction to the theory of construction of programming language translators and compilers. Topics include the structure of compilers, grammars and their representations, lexical scanners, symbol tables, alternative parsing techniques, code generation and code optimization.

Prerequisites: CSCI 325 and Junior standing.

368 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 320.

373 Compiler Construction: Implementation

The construction of a compiler for a non- trivial programming language using the theoretical principles learned in CSCI 367.

Prerequisite: CSCI 367.

374 Senior Software Analysis and Design

Problems involved in development of large software systems. The software life cycle. Techniques and tools of structured analysis and design. Coupling, cohesion, morphology and other design guidelines. Design and management of the software project.

Prerequisite: 21 hours of Computer Science.

376 Senior Software Project Implementation

Systems design, software testing, software maintenance, legal issues, and implementation of a significant software project.

Prerequisite: CSCI 374.

378 Senior Thesis

A significant research project chosen by the student and completed under the direction of a thesis advisor (a Computer Science department faculty member). The purpose of a research project is to introduce the student to research methods and investigative techniques sufficient to produce research results which are a recognized contribution to the body of knowledge encompassing a Computer Science area. Each thesis will be bound with copies being placed in both the university library and the department.

Prerequisites: Senior level status and acceptance by a thesis advisor.

- 66 Directed Study

Credit will vary depending on work done.

Prerequisites: Consent of department chair and instructor.

- 79 Seminar

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

Prerequisite: Consent of instructor.

- 66H Honors Reading

Independent study in selected areas in preparation for Honors Thesis. May be taken up to three hours of credit.

Prerequisites: Consent of instructor and Commission on Honors Studies.

379HHonors Thesis

Individual research and scholarly investigation under faculty supervision leading to the preparation of an Honors Thesis. To be taken only by Senior Honors students in both terms of their Senior year. Includes participation in Senior Colloquium where students present reports on their Thesis work.