Brigham Young University
Back Computer Science


Tony R. Martinez, Chair
3361 TMCB, (801) 378-3027

College of Physical and Mathematical Sciences Advisement Center
N-179 ESC, (801) 378-6270

Admission to Degree Program

The degree programs in the Department of Computer Science carry special enrollment limitations. Please see the college advisement center for specific details.

The Discipline

Computer science, even though it is a relatively new field, touches virtually every area of human endeavor. It is the systematic study of the algorithmic processes—their theory, analysis, design, efficiency, implementation, and application. Fundamentally, computer science is a science of abstraction—creating the right model for a problem and devising the right computer manipulations to solve it.

The BS curriculum is accredited by the Computer Science Accreditation Commission of the Computing Sciences Accreditation Board (CSAB).

The degree programs in computer science concentrate on the fundamental techniques and knowledge used in designing and implementing information processing systems, with emphasis on systems software design and computer organization.

Career Opportunities

Graduates from the Computer Science Department find ready employment in almost any area of computer use.

Graduation Requirements

To receive a bachelor's degree a student must fill three groups of requirements: (1) general education requirements, (2) university requirements, and (3) major requirements.

General Education Requirements

Students should contact their college advisement center for information about general education courses that will also fill major requirements.

Languages of Learning

Precollege Math (zero to one course)
(or Math ACT score of at least 22)
0–3.0 hours
First-Year Writing (one course) 3.0
Advanced Writing (one course) 3.0
Advanced Languages/Math/Music
(one to four courses)

Liberal Arts Core

Biological Science (one to two courses) 3–6.0
Physical Science (one to two courses) 3–7.0
American Heritage (one to two courses) 3–6.0
Wellness (one to three courses) 1.5–2.0
Civilization (two courses) 6.0

Arts and Sciences Electives

Arts and Letters (one course) 3.0
Natural Sciences (one course) 3–4.0
Social and Behavioral Sciences (one course) 3.0

Note 1: For a complete list of courses that will fill each GE category, see the General Education section of the current class schedule.

Note 2: Additional information about general education requirements can be found in the General Education section of the current class schedule or this catalog.

Minimum University Requirements

Religion 14.0
Residency 30.0
Hours needed to graduate 120.0

Cumulative GPA must be at least 2.0.

Note: See the Graduation section of this catalog for more information.

Major Requirements

Complete the major requirements listed for one of the folowing undergraduate degree programs.

Undergraduate Programs and Degrees

BS Computer Science
Minor Computer Science Teaching

Students should see their college advisement center for help or information concerning the undergraduate programs.

Graduate Programs and Degrees

MS Computer Science
PhD Computer Science

For more information see the BYU 2001–2002 Graduate Catalog.

General Information

Majors are admitted on the basis of performance in the fundamental courses (CS 124, 142, 235, Math 112, 113, Phscs 121).

Personnel in the College of Physical and Mathematical Sciences Advisement Center will advise regarding the fundamental and core courses, major admittance, and suggested General Education. Questions regarding curriculum and career decisions should be directed to the undergraduate advisor in the Computer Science Department.

Note: All hours of credit applied toward a major in computer science must be of C– or better and must be taken within eight years of declaring the computer science fundamentals major. Any exceptions must be approved by the department. Students may choose to graduate under later requirements by updating their date of entry into the major at the college advisement center.

BS Computer Science (80-83 hours*)

This is a limited-enrollment program requiring departmental admissions approval. Please see the college advisement center for information regarding requirements for admission to this major. Premajor Program MAP

Major Requirements

  1. No D credit is allowed in major courses.

  2. Complete the following:
    CS 124, 142, 224, 235, 236, 240, 252, 312, 324, 330, 345, 404.

  3. Complete the following supporting courses:
    Engl 316.
    Math 112, 113, 343.
    Phscs 121, 220.
    Stat 321.

  4. Complete two courses (6 hours) from the following (If you choose to take Chem 106, you must also take Chem 107 concurrently. This will only count as one class to fill this section):
    Chem 105, 106 (must take 107 also).
    Geol 111.
    Phscs 123, 222.
    Zool 101, 102, 204.

  5. Complete four courses from 400-level computer science courses.

  6. Complete one additional course from 400- or 500-level computer science courses.
    Note: CS 598R requires senior or graduate status in computer science and departmental approval before registering.

*Hours include courses that may fulfill GE or university requirements.

Minor Computer Science Teaching (20 hours)

Minor Requirements

  1. Complete the following:
    CS 124, 142, 235, 236, 240.

  2. Complete one additional computer science course with the approval of the Computer Science Department undergraduate coordinator.

Computer Science (C S)

Class Schedule Major Academic Plan (MAP)

Undergraduate Courses

100. (CS–CpIn) Fundamentals of Computing and Information. (3:3:0) F, W, Sp

Computing, information structures, programming principles, Internet, World Wide Web, text, spreadsheets, data representations for images, sound and video. For nonmajors.

103. Elementary Computer Applications. (2:2:0) F, W, Sp, Su

Computer organization, problem solving, and information systems, emphasizing use of the computer for problem solving and developing programming skills.

124. (CS-ECEn as of Winter 2002) Introduction to Computer Systems. (3:3:2) F, W, Su

How a computer works, from hardware to high-level programming. Logic circuits, computer instructions, assembly language, binary arithmetic, C programming, program translation, data structures, and algorithm analysis.

130. Scientific Computing—C. (2:2:2) F, Su

Computer programming for engineering and science students using C.

142. Introduction to Computer Programming. (3:3:0) F, W, Sp, Su Prerequisite: knowledge of algebra.

Introduction to object-oriented program design and development. Principles of algorithm formulation and implementation.

199R. Academic Internship. (1–3:0:0 ea.) F, W, Sp, Su

Internships or cooperative education experiences with organizations outside BYU.

224. (CS-ECEn as of Winter 2002) Fundamentals of Digital Systems. (3:3:2) F, W Prerequisite: CS 124.

Digital logic: theory, design, and implementation of combinational and sequential logic. Laboratory experience in construction of digital logic circuits.

235. Foundations of Computer Science 1. (4:4:1) F, W, Sp, Su Prerequisite: CS 142.

Iteration, induction, recursion, lists, trees, sets, relations, functions; mathematical analysis of algorithms and data models; object-oriented implementation of abstract data types.

236. Foundations of Computer Science 2. (4:4:1) F, W, Sp, Su Prerequisite: CS 235.

Continuation of CS 235; relations, graphs, automata, grammars, propositional and predicate logic. Implementation of object-oriented algorithms.

240. Advanced Programming Concepts. (3:3:0) F, W, alt. terms Prerequisite: CS 235.

Advanced software development with an object-oriented focus. Development and testing of several 1500 to 2000 line modules from formal specifications. UNIX and C++ environment.

252. Introduction to Computational Theory. (3:3:0) F, W, Alt. term Prerequisite: CS 236.

Finite automata, regular expressions, grammars, languages, Turing machines, computability, complexity, NP.

312. Algorithm Analysis. (3:3:0) F, W, Alt. term Prerequisite: CS 240, 252.

Analysis of algorithms including searching, sorting, graphs, and trees.

324. (CS-ECEn as of Winter 2002) Computer Architecture. (4:3:3) F, W, Alt. term Prerequisite: CS 224.

Performance-directed design principles, advanced pipelining, instruction-level parallelism (super scalar and VLIW CDUS), compiler optimizations, memory hierarchy design, etc.

330. Concepts of Programming Languages. (3:3:0) F, W, Sp Prerequisite: CS 240, 252.

Principles and concepts characterizing high-level computer programming languages, process and data abstraction, encapsulation, inheritance, functional programming, logic programming, scanners, and parsers.

345. Operating Systems Design. (3:3:0) F, W, Sp, Su Prerequisite: CS 324 or ECEn 428.

Principles and concepts of operating systems design and the implementation of an operating system.

404. Ethics and Computers in Society. (2:2:0) F, W, Alt. term Prerequisite: Engl 316; junior standing.

Societal impact of computer technology, the computer scientist's place in society, ethical issues. Reading, discussion, and writing seminar.

428. Software System Design and Implementation. (3:3:0) Alt. sem., Alt. term Prerequisite: CS 312, 330.

Analysis, design, implementation, and testing of significant software systems.

429. Software Testing. (3:3:0) F Prerequisite: CS 312, 330.

Strategies for testing large systems compared and critiqued, with opportunities to test actual systems.

431. Algorithmic Languages and Compilers. (3:3:0) Alt. sem., Alt. term Prerequisite: CS 312, 330.

Formal description of algorithmic languages and techniques used in their compilation: semantics, ambiguities, procedures, replication, iteration, recursion.

450. Introduction to Digital Signal and Image Processing. (3:3:0) On dem. Prerequisite: CS 312, Math 113, 343, or equivalent.

One- and two-dimensional signal-processing fundamentals, including sampling, noise, transforms, filtering, enhancement, and compression. Hands-on experimentation with speech, music, still images, and full-motion video.

452. Database Modeling Concepts. (3:3:0) F, W, Prerequisite: CS 312, 330.

Database models: relational, deductive, object-oriented. Integrity constraints, query languages, database design.

453. Database Implementation. (3:3:0) F, W, Sp, Su Prerequisite: CS 312, 330.

File organization and management, external data structures, database implementation, including concurrency control, transaction processing, and distributed databases.

455. Computer Graphics. (3:3:0) Alt. sem., Alt. term Prerequisite: CS 312, 330.

Interactive computer graphics systems programming and architecture.

456. Introduction to User Interface Software. (3:3:0) Prerequisite: CS 312, 330.

Introduction to software architectures and techniques for graphical user interfaces. Input devices, windowing systems, event-driven programming, interactive geometry.

460. Computer Communications and Networking. (3:3:0) F, W Prerequisite: CS 312, 324.

Introduction to data communications and computer networking. Communications fundamentals, computer networks, software, architecture, telecommunications, regulation, standards.

462. Large-Scale Distributed System Design. (3:3:0) F Prerequisite: CS 330, 345.

Designing and implementing client-server enterprise applications. Web servers, application servers, database connectivity, remote procedure calls, transactions, messaging, directory, naming services, threads, security, data formats.

470. Introduction to Artificial Intelligence. (3:3:0) F Prerequisite: CS 312, 330.

Introduction to core areas of artificial intelligence; intelligent agents, problem solving and search, knowledge-based systems and inference, planning, uncertainty, learning, and perception.

500-Level Graduate Courses (available to advanced undergraduates)

501R. Special Topics in Computer Science. (1–3:Arr.:0 ea.) F, W, Sp, Su Prerequisite: instructor's consent.

Special subjects as announced before each semester.

510. Formal Languages and Syntactic Analysis. (3:3:0) F, Alt. term Prerequisite: CS 431 or instructor's consent.

Definition of formal grammars and algorithms for syntactic analysis.

512. Analysis of Algorithms. (3:3:0) W Prerequisite: CS 252, 312, or instructor's consent.

Survey of important algorithms. Connections to theoretical computer science and the analysis of algorithms.

521. Pattern Recognition. (3:3:0) W Prerequisite: CS 450, or equivalent.

Design and use of pattern classifiers for recognition and classification of one- and two-dimensional signals such as voice, images, and handwriting. Emphasis on images.

525. Software Creation. (3:3:0) F Prerequisite: CS 428.

Concepts of object-oriented software development and their incorporation into various object-oriented analysis and design techniques.

531. Compiler Theory and Design. (3:3:0) Alt. yr. Prerequisite: CS 431.

Theory and design of compilers and interpreters, including syntax-directed compilers and metacompilers.

532. Advanced Programming Languages and Models. (3:3:0) Alt. yr. Prerequisite: CS 330.

Formal specification of program syntax and semantics. Operational, demotational, axiomatic semantics, and lambda calculus. Fixpoint theory and mathematics of recursion.

535. (CS-Psych 577) Human-Computer Interaction. (3:3:0) F Prerequisite: graduate or senior standing.

Human/machine interfaces for hardware/ software integration. Psychological principles of computer interfacing. Human engineering, ergonomics, and software design principles for user-friendly applications.

550. Computer Vision 1. (3:3:0) F Prerequisite: CS 450 or equivalent.

Machine vision, image segmentation, mathematical morphology, image enhancement and filtering, edge detection, feature extraction, neighborhood operators, region growing, boundary detection, scene segmentation, and matching.

553. Information Retrieval. (3:3:0) F Prerequisite: CS 236 or equivalent.

IR modeling, IR query languages, text indexing and searching, retrieval evaluation, query and text operations, parallel and distributed IR, Web searching.

555. Advanced Computer Graphics. (3:3:0) W Prerequisite: CS 455 or instructor's consent.

Advanced computer graphics systems programming and architecture, including ray tracing, radiosity, animation, and physically based modeling.

556. Interactive Software Systems. (3:3:0) W Prerequisite: CS 330, 456; or instructor's consent.

Advanced techniques for interacting with humans using pen-based, speech-based, hand-held, wall-sized, and room-sized devices. Embedding computing in everyday objects.

557. (CS-CEEn 572-MeEn 572) Computer-Aided Geometric Design. (3:3:0) Prerequisite: FORTRAN or C, or similar computer language background.

Mathematical theory of free-form curves and surfaces and solid geometric modeling. Bezier and B-spline curve and surface theory, parametric and implicit forms, intersection algorithms, topics in computer algebra, free-form deformation. Several programming projects.

558. Theoretical Foundations of Object-Oriented Data Engineering. (3:3:0) Prerequisite: CS 452 or instructor's consent.

Applying model and proof theory to object-oriented database development and data engineering; constructing theory-based tools; conceptual model formalization; topics of current interest.

559. Introduction to Digital Library Issues. (3:3:0) Su Prerequisite: CS 312 or equivalent.

Information creation, acquisition, access, distribution, evaluation, processing, indexing, searching, extraction, and applications.

560. Computer Networks. (3:3:0) W Prerequisite: CS 460, Stat 321.

Computer networking, software architecture, organization, protocols, routing, global networks, local networks, internetworking, standards, and applications.

565. Data Security. (3:3:0) W Prerequisite: CS 404. Recommended: CS 453, 560.

Data security problems and solutions. Protection of stored or transported data. Data security principles. Hardware and software systems; mathematical, technical, and legal considerations.

572. Machine Learning. (3:3:0) Prerequisite: CS 252, 470; or instructor's consent.

Algorithms; approaches and philosophy of machine learning emphasizing symbolic/AI approaches.

575. Expert Systems Design. (3:3:0) W Prerequisite: CS 470 or instructor's consent.

Knowledge-based systems, fundamentals of knowledge engineering, rule-based systems, tools for expert system development.

576. Intelligent Tutoring. (3:3:0) Alt. term Prerequisite: CS 252 or 470 or equivalent.

Taxonomy of knowledge-based computer-assisted instruction; design and evaluation of intelligent tutoring models.

578. Neural Networks and Connectionist Computing. (3:3:0) F Prerequisite: CS 252, 380, Math 343; or equivalent.

Neurally inspired computer architectures and methods of computation and learning using massively parallel networks.

580. High-Performance Computer Architecture. (3:3:0) Prerequisite: CS 324, ECEn 425, or equivalent.

Advanced topics in computer architecture, including pipelining, superpipelining, VLIW, superscalar, branch prediction, and speculative execution.

584. Parallel Processing. (3:3:0) Prerequisite: CS 324, 345, or equivalent.

Theoretical and practical study of parallel processing, including a discussion of parallel architectures, parallel programming languages, and parallel algorithms.

586. Formal Methods in Computer System Design. (3:3:0) Prerequisite: CS 236, 324, or equivalent.

Use of specification and verification in the design of computer systems. Introduction to mechanical theorem-proving environments.

598R. Special Projects. (1–3:0:0 ea.) Prerequisite: instructor's consent.

Graduate Courses

For 600- and 700-level courses, see the BYU 2001–2002 Graduate Catalog.

Computer Science Faculty


Barrett, William A. (1987) BA, PhD, U. of Utah, 1974, 1978.

Burton, Robert Preece (1974) PhD, U. of Utah, 1973.

Campbell, Douglas M. (1971) BA, Harvard U., 1967; PhD, U. of North Carolina, 1971.

Christensen, Larry C. (1983) BA, Brigham Young U., 1963; MA, Central Michigan U., 1968; EdD, Brigham Young U., 1981.

Cornell, Aurel (1980) MS, PhD, Polytechnic Inst. of Timisoara, Rumania, 1960, 1971.

Embley, David W. (1982) BA, MS, U. of Utah, 1970, 1972; PhD, U. of Illinois, 1976.

Hays, Bill (1970) BS, East Texas State U., 1963; MS, U. of Iowa, 1967; PhD, Northwestern U., 1970.

Higgins, John C. (1961) BA, MA, Brigham Young U., 1958, 1960; PhD, U. of California, Berkeley, 1966.

Martinez, Tony R. (1987) BS, Brigham Young U., 1982, MS, PhD, U. of California, Los Angeles, 1983, 1986.

Norman, Theodore A. (1970) BS, U. of Utah, 1962; MS, PhD, Washington State U., 1968, 1970.

Olsen, Dan R. (1985) BS, MS, Brigham Young U., 1976, 1978; PhD, U. of Pennsylvania, 1981.

Sederberg, Thomas W. (1978) BS, MS, Brigham Young U., 1975, 1977; PhD, Purdue U., 1983.

Woodfield, Scott N. (1985) BS, MS, Brigham Young U., 1975, 1978; PhD, Purdue U., 1980.

Associate Professors

Clement, Mark J. (1994) BS, MS, Brigham Young U., 1985, 1989; PhD, Oregon State U., 1994.

Egbert, Parris (1992) BS, Utah State U., 1986; MS, PhD, U. of Illinois, 1990, 1992.

Flanagan, Kelly J. (1993) BS, MS, PhD, Brigham Young U., 1988, 1989, 1993.

Morse, Bryan S. (1994) BS, MS, Brigham Young U., 1986, 1990; PhD, U. of North Carolina, 1994.

Ng, Yiu Kai (Dennis) (1991) BS, Brigham Young U., 1982; MS, Brigham Young U., 1984; PhD, Kansas State U., 1991.

Assistant Professors

Goodrich, Michael A. (1999) BS, MS, PhD, Brigham Young U., 1992, 1995, 1996.

Knutson, Charles D. (2000) BS, MS, Brigham Young U., 1988, 1994; PhD, Oregon State U., 1998.

Peterson, Todd (1999) BS, Brigham Young U., 1993; MS, PhD, U. of Alabama, 1996, 1999.

Seamons, Kent (2000) BS, Brigham Young U., 1986; PhD, U. of Illinois, 1996.

Snell, Quinn (1997) BS, MS, Utah State U., 1992, 1993; PhD, Iowa State U., 1997.


Beus, H. Lynn (1971) BA, Brigham Young U., 1961; MS, Case Inst. of Technology, 1964; PhD, Case Western Reserve U., 1967.

Burton, Robert C. (1964) BS, Brigham Young U., 1956; PhD, U. of North Carolina, 1963.

Dean, C. Edwin (1949) BS, MS, Brigham Young U., 1948, 1952; MS, U. of Michigan, 1955.

Ivie, Evan Leon (1979) BS, BES, Brigham Young U., 1956, 1956; MS, Stanford U., 1957; PhD, Massachusetts Inst. of Technology, 1966.

McClurg, Lynn E. (1972) BGE, U. of Nebraska, 1966; MS, U. of Southern California, 1972; EdD, Brigham Young U., 1978.

Robison, Parley P. (1967) BS, U. of Utah, 1958.

Stokes, Gordon E. (1969) BS, Brigham Young U., 1961; MS, U. of Idaho, 1969; EdD, Brigham Young U., 1981.

Todd, Henry S. (1982) BES, MS, Brigham Young U., 1960, 1965; MS, U. of Rochester, 1968; PhD, U. of Arizona, 1973.

Wright, Norman Edward (1963) BS, Brigham Young U., 1951.

Adjunct Professors

Ashton, Alan C. (1972) BA, PhD, U. of Utah, 1966, 1970.

Urie, Paul McKay (1989) BS, Brigham Young U., 1971; PhD, MD, U of Utah, 1975, 1979.

Windley, Phillip J. (1993) BS, U. of Idaho, 1982; MS, PhD, U. of California, Davis, 1988, 1990.


Catalog Homepage

BYU Homepage

Please report any errors. Updated 20 March 2001 by web_ugrad_cat@byu.edu