College of Engineering & Information Technology
Computer Science & Engineering


 Graduate Index


Duncan A. Buell, Chair of the Department


    J. Carter Bays, Ph.D., University of Oklahoma, 1974
    Ronald D. Bonnell, M.S., University of Kentucky, 1961
    Duncan A. Buell, Ph.D., University of Illinois, Chicago, 1976
    Robert L. Cannon, Ph.D., University of North Carolina, 1973
    Caroline Eastman, Ph.D., University of North Carolina, 1977
    Undergraduate Director
    Michael N. Huhns, Ph.D., University of Southern California, 1971
    Abhijit Sengupta, Ph.D., Calcutta University, 1976
    Larry M. Stephens, Ph.D., Johns Hopkins University, 1977

Associate Professors

    John B. Bowles, Ph.D., Rutgers University, 1982
    Valerie V. Cross, Ph.D., Wright State University, 1993
    Stephen Fenner, Ph.D., University of Chicago, 1991
    Manton M. Matthews, Ph.D., University of South Carolina, 1980
    Graduate Director
    John R. Rose, Ph.D., State University of New York, Stony Brook, 1991
    Marco Valtorta, Ph.D., Duke University, 1987
    Juan Eduardo Vargas, Ph.D., Vanderbilt University, 1988

Assistant Professors

    Duncan Clark, Ph.D., University of Pennsylvania, 1996
    Csilla Farkas, Ph.D., George Mason University, 2000
    Toshiro Kubota, Ph.D., Georgia Institute of Technology, 1995
    José M. Vidal, Ph.D., University of Michigan, 1998

Research Professor

    Hideaki Kobayashi, Ph.D., Waseda University, 1979

Adjunct Professors

    Arthur Chausmer, Ph.D., State University of New York, 1970
    Paul G. Huray, Ph.D., University of Tennessee, 1968
    John Montague, M.B.A., University of St. Thomas, St. Paul, Minn., 1984

Distinguished Professors Emeriti

    Karel Culik II, Ph.D., Czechoslovakian Academy of Science, 1966
    Robert Lee Oakman III, Ph.D., Indiana University, 1971


The Department of Computer Science and Engineering offers master’s and doctoral-level degrees in computer science and engineering. These programs emphasize student involvement in research programs and projects, many of which are supported by government agencies or are collaborative efforts with local industries. Current research emphasizes work in multiagent systems, forensic computing, artificial intelligence, networks, and database systems. The M.S. and M.E. degrees are designed to provide a strong foundation for pursuing careers in the computer and information systems industry. The Ph.D. degree prepares graduates for careers in industrial research and university-level teaching and research. Additional information on current research projects, detailed course outlines, and other aspects of the graduate program may be found on the departmental Web site,


The admissions requirements for the master’s and Ph.D. programs in computer science and engineering are essentially the same, although the Ph.D. program places greater emphasis on research potential. In addition to satisfying the admission requirements of The Graduate School, applicants are expected to have a baccalaureate degree in computer science, computer engineering, or a closely related field with at least a 3.00 GPA. Applicants should have completed courses in algorithmic design, data structures, computer organization, analysis of algorithms, operating systems, discrete mathematics, and calculus. Applicants not having courses in all of these subjects may be admitted conditionally while they take the remaining ones. Any required prerequisite courses are an integral part of the student’s degree program and must be completed before any graduate degree will be awarded.

In addition to satisfying the admission requirements of the Graduate School, applicants for the Master of Software Engineering program are expected to have a baccalaureate degree in computer science, computer engineering, computer information systems, management information systems, or a closely related field with at least a 3.00 GPA. Applicants should also have at least one year of experience in software development or maintenance. Students not having adequate experience in software development or maintenance will be required to take CSCE 793 Internship in Software Engineering, as a prerequisite which must be completed before the degree will be awarded.

Applicants to all degree programs should submit an official transcript from each school or college previously attended, at least two letters of recommendation, and scores on the GRE. The University also requires a TOEFL score for students whose native language is not English. The admissions committee will evaluate all aspects of each application and will make a recommendation on admission to The Graduate School. All application materials must be received by March 1 for fall and summer admission and by October 1 for spring admission.

Academic Standards

All students are expected to meet the academic standards of The Graduate School. In addition, students who accumulate grades less than B in 12 hours of required graduate courses or undergraduate courses will be suspended from enrollment in their degree program and not permitted to enroll in any further courses within the department.

Degree Requirements

Master of Engineering in Computer Science and Engineering

The professional Master of Engineering degree in computer science and engineering requires 30 hours of course work beyond the B.S. This course work must include CSCE 513, CSCE 531, CSCE 750, and an additional 12 hours in CSCE courses numbered 700 and above. A maximum of six hours in non-CSCE courses and at most three hours of CSCE 798 may be applied toward the degree. CSCE 797 may not be applied toward the degree.

Master of Science in Computer Science and Engineering

The Master of Science degree in computer science and engineering requires 24 hours of course work beyond the B.S., six hours of thesis preparation (CSCE 799), and a thesis. This course work must include CSCE 513, CSCE 531, CSCE 750, and an additional 12 hours in CSCE courses numbered 700 or above. A maximum of six hours in non-CSCE courses and at most three hours of CSCE 798 may be applied toward the degree. CSCE 797 may not be applied toward the degree. The student must defend the thesis in a public presentation.

Master of Software Engineering

For students having adequate experience in software development or maintenance, the M.S.E. degree requires 30 hours of course work consisting of 15 hours in required software engineering courses, 15 hours of elective courses from an approved list, and satisfactory completion of a comprehensive software engineering exam. Students must also submit a report on some aspect of software engineering that demonstrates mastery of the subject and a high level of communication skills. The required core courses for the M.S.E. program are CSCE 740, CSCE 741, CSCE 742, CSCE 743, and CSCE 747. See the department for the list of approved elective courses.

Doctor of Philosophy in Computer Science and Engineering

Requirements for the Ph.D. degree in computer science and engineering fall into four categories: course requirements, the qualifying examination, the comprehensive examination, and the dissertation. Students who enter the program with a bachelor’s degree must complete a minimum of 48 credit hours or graduate course work (excluding CSCE 799 and 899). Of the 48 hours, at least 24 must be in CSCE courses numbered 700 or above. The student’s dissertation committee must approve the program of study, so this committee should be formed as early in a student’s course of study as possible. Each student is required to register for a minimum of 12 hours of dissertation preparation (CSCE 899).

Prior to admission to candidacy, the student is required to pass a written qualifying examination. This examination is designed to test fundamental knowledge and conceptual understanding of the mainstream areas of computer science and engineering.

The Ph.D. comprehensive examination combines a written and an oral examination and seeks to discover whether the student has a sufficiently deep understanding of topics in the area of interest to carry out the proposed research. After completing the research and writing the dissertation, the student must defend the work in a public presentation.

Bachelor’s/Master’s Accelerated Program

A combined B.S./M.S. or B.S./M.E. degree program is available to undergraduate students in computer science and engineering with 90 or more hours earned toward their baccalaureate degrees. Students accepted into this program must have a minimum overall GPA of 3.40 and at least 3.40 in the course work taken in computer science and engineering. Up to nine credit hours above the 500 level may be applied toward both the B.S. and M.S. or M.E. degree requirements. The approval of the student’s advisor and the graduate director is required. Questions about this program should be directed to the graduate director.

Course Descriptions (CSCE)

  • 500–Computer Programming and Applications. (3) Concepts and properties of algorithms; programming exercises with emphasis on good programming habits. Credit may not be received for both CSCE 500 and CSCE 145. Open to all majors. May not be used for major credit by computer science and engineering majors.
  • 510–System Programming. (3) (Prereq: CSCE 245) System software such as command language interpreters, client-server applications, debuggers; mail systems, browsers, macroprocessors, and revision control systems; file systems, processes, threads, and interprocess communication.
  • 512–System Performance Evaluation. (3) (Prereq: CSCE 311, STAT 509) Measuring, modeling, analyzing, and predicting performance of computer systems and networks; bottleneck analysis; Markovian queuing systems and networks; use of operational and probabilistic models.
  • 513–Computer Architecture. (3) (Prereq: CSCE 211, 212) Design methodology; processor design; computer arithmetic: algorithms for addition, multiplication, floating point arithmetic; microprogrammed control; memory organization; introduction to parallel architectures.
  • 515–Computer Network Programming. (3) (Prereq: CSCE 311) Computer networks and communication protocols; socket programming; interprocess communication; development of network software; case studies.
  • 516–Computer Networks. (3) (Prereq: STAT 509) Structure, design, and analysis of computer networks; ISO/OSI network architecture.
  • 520–Database System Design. (3) (Prereq: CSCE 245 or GEOG 563) Database management systems; database design and implementation; security, integrity, and privacy.
  • 531–Compiler Construction. (3) (Prereq: CSCE 330 or 355, CSCE 245) Techniques for design and implementation of compilers, including lexical analysis, parsing, syntax-directed translation, and symbol table management.
  • 547–Windows Programming. (3) (Prereq: CSCE 245) Object-oriented methods and tools for application programming with graphically interactive operating systems.
  • 551–Theory of Computation. {=MATH 562} (3) (Prereq: CSCE 350 or MATH 526 or 544 or 574) Basic theoretical principles of computing as modeled by formal languages and automata; computability and computational complexity. Major credit may not be received for both CSCE 355 and CSCE 551.
  • 561–Numerical Analysis. {=MATH 527} (3) (Prereq: MATH 242 or 520) Interpolation and approximation of functions; solution of algebraic equations; numerical differentiation and integration; numerical solutions of ordinary differential equations and boundary value problems; computer implementation of algorithms.
  • 563–Systems Simulation. (3) (Prereq: CSCE 245, STAT 509) Computer simulation of real systems; principles of system organization; random number generation; programming exercises in a simulation language.
  • 564–Computational Science. (3) (Prereq: MATH 526, CSCE 146 or 207 or 500) Parallel algorithms; scientific visualization; techniques for solving scientific problems.
  • 565–Introduction to Computer Graphics. (3) (Prereq: CSCE 245, MATH 526) Graphics hardware; graphics primitives; two-dimensional and three-dimensional viewing; basic modeling.
  • 567–Visualization Tools. (3) (Prereq: CSCE 145 or 206 or 207) Scientific visualization tools as applied to sampled and generated data; methods for data manipulation and representation; investigation of visualization techniques.
  • 574–Robotics. (3) (Prereq: CSCE 211, 212, 245) Design and application of robotic systems; emphasis on mobile robots and intelligent machines.
  • 578–Text Processing. (3) (Prereq: CSCE 330, 355) Text and natural language processing; formal models and data structures appropriate for text processing; selected topics in computational linguistics, stylistics, and content analysis.
  • 580–Artificial Intelligence. (3) (Prereq: CSCE 350) Heuristic problem solving, theorem proving, and knowledge representation, including the use of appropriate programming languages and tools.
  • 590–Topics in Information Technology. (3) Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by suffix and title. May be repeated for credit as topics vary.
  • 611–Conceptual Modeling Tools for CAD. (3) (Prereq: CSCE 211, 245) Design techniques for logic systems; emphasis on higher-level CAD tools such as hardware description languages and conceptual modeling.
  • 612–VLSI System Design. (3) (Prereq: CSCE 211, 245) VLSI design process models, introduction to EDA tools, HDL modeling and simulation, logic synthesis and simulation, benchmark design projects.
  • 613–Fundamentals of VLSI Chip Design. (3) (Prereq: ELEC 371) Design of VLSI circuits, including standard processes, circuit design, layout, and CAD tools. Lecture and guided design projects.
  • 711–Advanced Operating Systems. (3) (Prereq: CSCE 311) Operating system organization and interactive processing systems, multiprogramming systems, process management, task scheduling, resource control, deadlocks.
  • 713–Advanced Computer Architecture. (3) (Prereq: CSCE 311 and 513) Architecture of high-performance computers, including array processors, multiprocessor systems, data flow computers, and distributed processing systems.
  • 716–Design for Reliability. (3) (Prereq: STAT 509 or 511, or MATH 511) Design of more reliable systems through the application of reliability theory and models; reliability modeling; design techniques; testing; and requirement specifications.
  • 717–Computer System Performance and Reliability Analysis. (3) (Prereq: STAT 509 or 511) Evaluation of computer system performance and reliability using reliability block diagrams, fault trees, reliability graphics, queuing networks, Markov models, and Markov reward models.
  • 718–Real-Time Computer Applications. (3) (Prereq: CSCE 245, 311) Problems of real-time computer applications in process control or similar areas; task scheduling; real-time operating systems; advanced interrupt structures; memory management techniques.
  • 721–Physical Database Design. (3) (Prereq: CSCE 520) Components of a database management system; implementation issues; query optimization; file organization; file organizations’ transaction management; fault recovery; security; system performance.
  • 723–Advanced Database Design. (3) (Prereq: CSCE 520) Database design methodologies and tools; data models; implementation languages; user interfaces.
  • 725–Information Retrieval: Algorithms and Models. (3) Structure, design, evaluation, and use of information retrieval systems; algorithms and mathematical models for information retrieval; storage and retrieval of textual data in information systems.
  • 730–Programming Language Semantics. (3) (Prereq: CSCE 531) Approaches for specifying programming language semantics, including operational, axiomatic, and denotational specification.
  • 740–Software Engineering. (3) (Prereq: CSCE 240) Current practices and research in software development, requirements definition, design, program testing and reliability, maintenance, and management.
  • 741–Software Process. (3) Personal, team, and organizational software processes; personal and organizational maturity; application of software process and management concepts during software development, primatrily at the individual level. Not auditable.
  • 742–Software Architectures. (3) Structural organizations for software systems as collections of interconnected components; formal models and languages; design tools and guidelines. Not auditable.
  • 743–Software Requirements. (3) (Prereq: CSCE 740) Elicitation, analysis, and validation of software requirements, specification of software systems including formal specification methods; CASE tools. Not auditable.
  • 744–Object-Oriented Analysis and Design. (3) (Prereq: CSCE 350) Fundamentals of object-oriented technology; object modeling of structure, function, and time-dependent behavior; system analysis and design.
  • 745–Object-Oriented Programming Methods. (3) (Prereq: CSCE 245) Object-oriented programming paradigm, including encapsulation, inheritance, reusable classes, object classification, specialization, and message passing; case studies and applications.
  • 747–Software Testing and Quality Assurance. (3) (Prereq: CSCE 740) Structural and functional techniques for testing software; code inspection, peer review, test verification and validation; statistical testing methods; preventing and detecting errors; testing metrics; test plans; formal models of testing. Not auditable.
  • 750–Analysis of Algorithms. (3) (Prereq: CSCE 350) Algorithm design techniques; algorithms and data structures for sets and graphs; time and space complexity; sorting and searching; NP-complete problems.
  • 755–Computability, Automata, and Formal Languages. (3) (Prereq: CSCE 355 or 551) Formal models of computation, including finite state automata, Turing machines, recursive functions, formal grammars, and abstract complexity theory.
  • 758–Probabilistic System Analysis. (3) (Prereq: STAT 509 or 511) Application of probability theory and stochastic processes to analyze the dynamic behavior of engineering systems.
  • 760–Numerical Analysis I. {=MATH 726} (3) (Prereq: MATH 526 or 544) Numerical solution of equations and systems of linear equations, polynomial approximation, difference calculus, solution of ordinary and partial differential equations, least squares and sets of orthogonal polynomials, Gaussian quadrature.
  • 761–Numerical Analysis II. {=MATH 727} (3) (Prereq: CSCE 760) Continuation of CSCE 760.
  • 763–Digital Image Processing. (3) Concepts and techniques for digital image processing; emphasis on low-level processes that analyze discrete images at the pixel level.
  • 765–Computer Graphics System Design. (3) (Prereq: CSCE 565) Graphics data structures, graphics languages, modeling, raster displays, 3-D shading, hidden surface algorithms.
  • 766–Scientific Visualization. (3) (Prereq: CSCE 565) Visualization techniques for scientific computing; interactive steering of calculations; animation and rendering techniques for multivariate data analysis.
  • 767–Interactive Computer Systems. (3) Principles for the design of systems supporting effective human-computer interaction; interaction styles; displays and interactive devices; user assistance; system design and evaluation.
  • 768–Pattern Recognition and Classification. (3) (Prereq: STAT 509 or 510 or 511) Bayesian classifiers; optimal risk schemes; error rates; numerical methods; implementation; architectures.
  • 771–Computer Processing of Natural Language. (3) (Prereq: CSCE 580) Computational models for the analysis and synthesis of natural language; representations for syntax and semantics; applications to text-to-speech conversion, speech recognition, and language understanding.
  • 772–Computer Speech Processing. (3) (Prereq: CSCE 580) A/D conversion, digital filters, discrete Fourier transform and FFT, acoustics of speech, and synthesis and recognition of speech.
  • 774–Robotics Systems. (3) (Prereq: CSCE 574) Design and operation of robot systems; dynamics, control, and motion trajectories of manipulators; visual, auditory, and tactile sensing systems; planning and learning.
  • 780–Knowledge Representation. (3) (Prereq: CSCE 580) Representation techniques and languages for symbolic knowledge, including predicate calculus, frame-based systems, and terminological systems; computer reasoning using these systems.
  • 781–Knowledge Systems. (3) (Prereq: CSCE 580) Expert system domains, knowledge representation techniques, inference engines, and knowledge acquisition methods.
  • 782–Multiagent systems. (3) (Prereq: CSCE 580) Coordinated problem solving by multiple knowledge systems.
  • 784–Neural Information Processing. (3) (Prereq: MATH 526 or 544) Mathematical foundations of biological and artificial neural networks, supervised and unsupervised systems, applications.
  • 787–Introduction to Fuzzy Logic. (3) (Prereq: MATH 174) Principles of fuzzy set theory, fuzzy relations, and fuzzy logic; fuzzy "if-then" rules, approximate reasoning, and fuzzy expert systems; problems of diagnosis and system control.
  • 790–Topics in Information Technology. (1—3) Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by suffix and title. May be repeated for credit as topics vary.
  • 791–Seminar in Computer Science Research. (1) Major computing research areas technical writing and presentations; ethics in research and writing; support tools, including text formatting systems, text analysis tools, and softward development tools.
  • 793–Internship in Software Engineering. (1) Work. Written report required. Not auditable. Pass-Fail Grading.
  • 797–Individual Study and Research. (1—12) Individual research to be arranged with the instructor. Pass/Fail grading.
  • 798–Directed Study and Research. (1—12) Individual research to be arranged with the instructor.
  • 799–Thesis Preparation. (1—12)
  • 815–Computer Communications. (3) (Prereq: CSCE 515 or 516) Contemporary computer communication protocols and network architectures.
  • 818–Top-Down VLSI Design. (3) (Prereq: CSCE 611 or CSCE 612) VLSI system design automation, hardware description language-based design, multi-methodology design, and introduction to HDL support tools.
  • 819–Custom VLSI Design. (3) (Prereq: CSCE 611 or 612) Custom design methodology design rules, stick notation, logic synthesis, and circuit layout; sympbolic layout languages; introduction to CAD tools.
  • 821–Distributed Database Design. (3) (Prereq: CSCE 520) Architecture, design, and implementation of distributed database managements systems; data fragmentation, replication, and allocation; query processing and transaction management; distributed object database management systems.
  • 822–Data Mining and Warehousing. (3) (Prereq: CSCE 520) Information processing techniques and mathematical tools to assemble, access, and analyze data for decision support and knowledge discovery.
  • 826–Cooperative Information Systems. (3) (Prereq: CSCE 520, 580) Strategies for achieving coordinated behavior among a heterogeneous group of information system components; world-wide information networks and applications in health care, logistics, telecommunications, and manufacturing automation.
  • 846–Software Reliability and Safety. (3) (Prereq: STAT 509 or 510 or 511) Reliability and safety of computer-intensive systems; software reliability models and analysis; operational profiles; hazard analysis using fault trees and event trees; formal verification of safety-critical systems. Not auditable.
  • 850–Advanced Analysis of Algorithms. (3) (Prereq: CSCE 750) Definitions of algorithms and formal models of computation; concepts of space and time; synthesis and analysis of algorithms for sorting, search graphs, set manipulation and pattern matching; NP-complete, and intractable problem.
  • 865–Advanced Computer Graphics. (3) (Prereq: CSCE 765) Input and display devices, data structures, architectures, primitives, and geometrical transformations appropriate to computer graphics, parametric surfaces.
  • 867–Computer Vision. (3) (Prereq: CSCE 763) Scene segmentation using texture, color, motion; representation of 2-D or 3-D structures; knowledge-based vision systems.
  • 868–Advanced Pattern Recognition. (3) (Prereq: CSCE 768) Feature nomination, selection, extraction, and evaluation; deterministic, stochastic, and fuzzy models for classifier design; parameter estimation; error rate estimation; clustering and sequential learning.
  • 883–Machine Learning. (3) (Prereq: CSCE 580) Fundamentals of machine learning including rote learning, learning from examples, learning from observations, and learning by analogy; knowledge acquisition for expert systems.
  • 895–Ph.D. Seminar. (1—3)

[Bulletin Home Page] [Graduate Bulletin Contents] [Disclaimer] [The Graduate School]

This web site updated September 2001 by Thom Harman, and copyright © 2001-2002 by the Board of Trustees of the University of South Carolina. All Rights Reserved.