Computer Science

Courses of Instruction


Computer Science is available as a major on the B.S. degree and as a minor on the B.A. and B.S. degrees.

This program in computer science is accredited by the Computer Science Accreditation Commission of the Computing Sciences Accreditation Board, a specialized accrediting body recognized by the Council on Postsecondary Accreditation (COPA) and the U.S. Department of Education.

Requirements for the B.S. degree with a major in Computer Science. Major: 42 semester hours of Computer Science, of which 36 hours must be COSC 10403, 20203, 20803, 30203, 30253, 30353, 30403, 30603, 40203, 40603, 40943, and 40993; and six hours of approved Computer Science electives shall be selected from courses at the 30000 level or above. Mathematics and science: 32 hours which must include (1) 17 hours of Mathematics (MATH 10123, 10143, 10524, 30224, and 30803), and (2) a two-semester science sequence (including laboratories) plus two additional one-semester science courses. All science courses must be selected from Biology, Chemistry, Geology, or Physics. Courses for non-science majors may not be counted in this category. A minimum of 132 semester hours is required. A Computer Science major must have a minimum 2.2 GPA in all Computer Science course work to graduate.

Requirements for a minor in Computer Science: 18 hours of Computer Science including: 10403, 20203, 20803, 30203, and an additional 6 hours selected from 30000 and 40000 level courses.

Secondary Teaching Certification. Students seeking certification for teaching Computer Science at the secondary school level should be advised by the departmental secondary certification advisor. Specific requirements for Computer Science as a teaching field are: 24 semester hours of Computer Science of which 12 hours must be COSC 10403, 20203, 20803, and 30203; and 12 hours selected from 30000 level or above courses.

Honors Program. Computer Science and Computer Information Science majors who are members of the Honors Program and who have a minimum 3.5 GPA in the major may pursue Departmental Honors by enrolling in COSC 50970 during the fall of their senior year and preparing a Senior Honors Project.

Pass/No Credit. Students declaring a major in Computer Science may not elect the Pass/No Credit option in any Computer Science course. There are no restrictions on the minor.

Association for Computing Machinery. The department sponsors a student chapter of the Association for Computing Machinery (ACM), an international organization for computer scientists.

IEEE/CS. The department sponsors a student chapter of the Institute of Electrical and Electronics Engineers/Computer Society, an international organization for computer scientists.

Upsilon Pi Epsilon. The department sponsors a chapter of Upsilon Pi Epsilon, the International Honor Society for the Computing Sciences.

Sigma Xi. The department is a sponsor of the TCU chapter of Sigma Xi, the Honor Society for Research in the Natural Sciences.

The following is a complete list of courses offered by this department. Go to Class Search on Registrar's Page to see which courses are being taught this semester.

Courses of Instruction

10052 APPLIED PROGRAMMING. (ENGR 10052) Prerequisites: MATH 10524. Elements of structured programming with emphasis on scientific computing. Application to numerical computation and simulation in engineering.

10203 COMPUTER LITERACY. Two hours lecture and one and a half hours of laboratory per week. Introduction to the history of computers, computer organization, and principles of operation. Hands-on experience utilizing a variety of computer software tools including word processing, database management, graphics, spreadsheet, and internet applications.

10403 INTRODUCTION TO PROGRAMMING. Prerequisite: Two years of high school algebra or Math 10023. Introduction to computers, problem solving, algorithm design, and programming techniques. Includes what a computer is (and is not), problem organization, data representation, and how to utilize the computer to solve problems. Numerical and non-numerical problems are solved in a high-level programming language.

20101 ASSEMBLER FUNDAMENTALS. Prerequisite: COSC 10403. Computer structure, machine language, instruction execution, addressing modes, and internal representation of data. Several assembler language programming assignments are required.

20203 TECHNIQUES IN PROGRAMMING. Prerequisites: COSC 10403 or equivalent. A study of program design, development and programming techniques. Structured programming with problems selected from list processing, string processing, and file manipulation.

20533 COMPUTERS, TECHNOLOGY, AND SOCIETY. Prerequisite: none. In addition to the benefits from the introduction of new technologies, the costs and risks of such changes should be considered. Class discussions will examine the social, political, legal, and ethical aspects of technology, with an emphasis on computer technology. Experimental activities and selected readings will provide a basis for the discussion. Credit will not be given for both COSC 10433 (Freshman Seminar) and COSC 20533.

20803 DATA STRUCTURES. Prerequisites: COSC 20203 and MATH 10123. Basic concepts of data. Linear lists, strings, and arrays. Representation of trees and graphs. Storage systems and structures. Symbol tables and searching techniques, sorting techniques. Formal specification of data structures and data structures in programming languages.

20970 Topical Studies in Computer Science. Prerequisites: COSC 20203. Courses dealing with a particular area of investigation in computer science. The topics will be changed from semester to semester and the course may be repeated when the topic is different. (1 - 3 sem. hrs.)

30203 Computer Systems Fundamentals. Prerequisite: COSC 20803 or CISC 20703. Introduction to assembly language and the corresponding machine representation, assemblers, linkers, and loaders. Study of the design and implementation of 2-pass assemblers with special attention to symbol tables and the problems of resolving forward and external references.

30253 COMPUTER ORGANIZATION. (ENGR 30573) Prerequisites: COSC 30203 (may be concurrent) and MATH 10123. Treatment of sequential and combinatorial circuits including flip-flops, multiplexers, decoders, adders, registers, counters. Design of functional components of a computer including memory, ALU, control unit, busses. The tradeoffs of alternative architectural features such as word size, instruction sets, addressing modes.

30353 MICROPROCESSOR BASED DIGITAL SYSTEMS. (ENGR 30583) Prerequisite: COSC 30253. Introduction to the design of microprocessor based digital systems including the study of processor control signals, address decoding and memory interfacing, interfacing to serial and parallel ports, A/D conversion, and interrupt processing. Features of state-of-the-art microprocessors will be discussed. Both hardware and software assignments will be required.

30403 PROGRAMMING LANGUAGE CONCEPTS. Prerequisite: COSC 20803. A study and comparison of the concepts and constructs of major programming language paradigms. Topics include evolution of programming languages, formal definition (syntax and semantics), data types, scope, subprograms, data abstraction. Students will review a published paper in the area of programming languages. Lab assignments are given in languages selected to illustrate paradigms.

30453 COMPUTER ARCHITECTURE. (ENGR 30593) Prerequisite: COSC 30253. The logical organization and functional behavior of digital computers are studied. Fundamental principles in the design of the CPU, memory, I/O devices, and bus structures are presented. Performance enhancement topics such as caching, memory interleaving, interconnection schemes, pipelining, memory management, reduced instruction sets (RISC), and multiprocessing are discussed.

30503 ADVANCED SYSTEMS PROGRAMMING. Prerequisite: COSC 30203. Introduction to the systems software features provided by a modern operating system. The techniques and problems associated with the use of concurrent execution of multiple tasks (spawning new tasks from within a task; intertask communications, synchronization, and termination; the use of low-level I/O primitives; and methods for dealing with mutual exclusion, race conditions, and deadlock). Students will be required to develop command language procedures and write programs which invoke operating system services.

30603 DATABASE SYSTEMS. Prerequisite: COSC 20803 or CISC 20703. Introduction to the design, implementation, and use of relational database systems. Topics include entity-relationship modeling, dataflow modeling, relational algebra and tuple calculus, normalization, SQL, external data structures, query optimization, and transaction processing.

30703 ADA SOFTWARE DEVELOPMENT AND PROGRAMMING. Prerequisite: COSC 20803. Introduction to the problems associated with the development of large software systems and the features of the Ada programming language that can be used to attack many of these problems. Emphasis will be on those features of Ada that distinguish it from most other programming languages including the use of packages, formal specifications of interfaces, use of private types, operator overloading, tasking, representation clauses, exception handlers, and generics.

30803 SYSTEM SIMULATION. Prerequisites: COSC 20803 or CISC 20703. Discrete event simulation programming and analysis techniques for simulation experiments. Includes experimental sampling and model development in a special purpose simulation language.

40003 COMPUTER NETWORKS. Prerequisite: COSC 30253. Introduction to basic data communications concepts, including hardware and software aspects of protocols, asynchronous and synchronous communication, network configurations, and error detection. This course includes the study of both local area networks and long haul networks, the 7 layer ISO network model, the architecture of networks, and network communication protocols. Local and wide area networks including the internet and world wide web will be discussed.

40103 GRAPHICS. Prerequisites: COSC 30253 and a knowledge of linear algebra (MATH 30224). A basic course in graphics systems. Considers the equations of lines, planes, and surfaces; hidden line algorithms; rotations, scaling, and cutaway transformations; 3-D images and the use of shading and perspective; animation; and color graphics.

40203 OPERATING SYSTEMS. Prerequisites: COSC 30253 and MATH 10143. Introduction to operating systems principles. Includes management of CPU, memory, peripherals, and information; the problems associated with communications and controlling concurrent processes; and the differences in batch, time-sharing, and real-time operating systems.

40403 ANALYSIS OF ALGORITHMS. Prerequisites: COSC 20803, MATH 10143, and a knowledge of probability and statistics. Topics concerning what can and cannot be proven about computational complexity, including algorithm design methodologies, techniques for analysis of space and time requirements, and P and NP completeness.

40503 ARTIFICIAL INTELLIGENCE. Prerequisite: COSC 30603. Introduction to knowledge representation and methods for intelligent search. Fundamental topics include state space search, logic, and inference engines. AI languages Prolog, Lisp, and Clips will be used to explore additional topics selected from two-person games, expert systems, automated theorem proving, planning, and machine learning.

40603 COMPILER DESIGN AND CONSTRUCTION. Prerequisites: COSC 30203, COSC 30403, and MATH 10143. Formal description of algorithmic languages, such as Pascal, and the techniques used in writing compilers for such. Topics include syntax, semantics, storage allocation, code generation, error handling and diagnostics, code optimization, etc. Includes the definition and writing of a compiler for a simple programming language.

40703 PROGRAMMING LANGUAGE DESIGN. Prerequisite: COSC 40603. Concentration on the issues of programming language design and implementation. Topics will include language constructs, data representation, sequence control structures, data control structures, storage management.

40803 ADVANCED TOPICS IN COMPUTER HARDWARE. Prerequisite: Permission of instructor. Advanced topics of current interest in computer hardware, such as computer design, computer networks, advanced computer graphics. Students will study current literature. May be repeated for credit when topic changes.

40903 ADVANCED TOPICS IN COMPUTER SOFTWARE. Prerequisite: Permission of instructor. Advanced topics of current interest in computer software, such as natural language programming, advanced operating systems, advanced compiler design, file structures, advanced database. Students will study current literature. May be repeated for credit when topic changes.

40943 SOFTWARE ENGINEERING. Prerequisite: Senior standing. Stages of the software development lifecycle (requirements analysis, specification, design, implementation, testing), evolution, and quality assurance. Classical and alternative process models and techniques are described and discussed. Management issues, professional responsibilities, and ethics of the profession are covered. Includes team projects and individual requirements analysis effort.

40993 SENIOR DESIGN PROJECT. Prerequisite: COSC 40943. Senior computer science and computer information science majors are required to demonstrate their mastery of COSC and CISC topics. Students will identify, analyze and implement an appropriate solution to a real world problem. They will communicate the results of their efforts through technical documentation and presentations.

50123 OBJECT-ORIENTED DESIGN AND PROGRAMMING. Prerequisite: COSC 30403 or permission of instructor. Introduction to object-oriented techniques including design methodologies and programming language support. Survey of new languages and extensions to existing languages which provide support for encapsulation, inheritance, and polymorphism.

50133 FORMAL LANGUAGES. Prerequisites: COSC 40603. Languages and grammars which can be characterized in formal terms, for the purpose of constructing models for artificial (computer) languages. Topics will include finite automata, push down automata, Turing machines, solvable and unsolvable problems, etc.

50970 SPECIAL TOPICS IN COMPUTER SCIENCE. Prerequisite: Permission of instructor. (1-6 semester hours).