Go to USC home page USC Logo College of Engineering and Information Technology
graduate bulletin index

Computer Science and Engineering

Duncan A. Buell, Chair of the Department

Ronald D. Bonnell, M.S., University of Kentucky, 1961
Duncan A. Buell, Ph.D., University of Illinois, Chicago, 1976
Caroline M. Eastman, Ph.D., University of North Carolina, 1977
Undergraduate Director
Michael N. Huhns, Ph.D., University of Southern California, 1971
Larry M. Stephens, Ph.D., Johns Hopkins University, 1977

Associate Professors
John B. Bowles, Ph.D., Rutgers University, 1982
James P. Davis, Ph.D., University of South Carolina, 1989
Stephen Fenner, Ph.D., University of Chicago, 1991
Manton M. Matthews, Ph.D., University of South Carolina, 1980
Graduate Director and Assistant Chair
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
Kirk William Cameron, Ph.D., Louisiana State University, 2000
Csilla Farkas, Ph.D., George Mason University, 2000
Chin-Tser Huang, Ph.D., University of Texas at Austin, 2003
Toshiro Kubota, Ph.D., Georgia Institute of Technology, 1995
Tiecheng Liu, Ph.D., Columbia University, 2003
Srihari Nelakuditi, Ph.D., University of Minnesota, 2001
Gang Quan, Ph.D., University of Notre Dame, 2001
José M. Vidal, Ph.D., University of Michigan, 1998
Song Wang, Ph.D., University of Illinois, 2002
John Zachary, Ph.D., Louisiana State University, 2000


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, www.cse.sc.edu. While the department regularly offers courses through the college's distance education program, APOGEE, prospective students should not expect to be able to earn any degree solely using APOGEE courses.


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 that 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 average GRE scores of the accepted applicants for fall 2002 were: verbal 539, quantitative 720, and analytical 668. Applicants whose native language is not English are also required to submit a satisfactory score on the TOEFL or the University of Cambridge's IELTS Academic Course Type 2 exam. The minimum acceptable score on the TOEFL is 230 (computer-based) or 570 (paper-based). The minimum acceptable overall band score on the IELTS Academic Course Type 2 exam is 6.5. 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., 6 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 6 hours in non-CSCE courses and at most 3 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, 741, 742, 743, and 747. The approved list of electives is: CSCE 510, 512, 515, 516, 520, 522, 547, 721, 723, 725, 744, 745, 767, 782, 821, 822, 826, and 846 and MGSC 872. Students not having one year of experience in software development or maintenance will be required to take CSCE 793 Internship in Software Engineering as a prerequisite that must be completed before the degree will be awarded.

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) and 12 hours of dissertation preparation (CSCE 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.

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. The written examination consists of two portions: the core, including architecture, algorithms, and compiler construction; and the research area of the student. The core portion is constructed and graded by the faculty as a whole. The dissertation committee, which also will make the final decision on whether the student has passed, constructs the research component. The oral examination is an in-depth test on the subject matter related to the student's dissertation topic and written exam. The committee may also examine the student on any other material it deems relevant. 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 9 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.
  • 517 -- Computer Crime and Forensics. (3) (Prereq: CSCE 311) Methodical approaches for collecting and preserving evidence of computer crimes. Foundational concepts such as file system structures, MAC times, and network protocols; tools for extracting evidence; general legal issues.
  • 520 -- Database System Design. (3) (Prereq: CSCE 245 or GEOG 563) Database management systems; database design and implementation; security, integrity, and privacy.
  • 522 -- Information Security Principles. (3) (Prereq: CSCE 520 or MGSC 596) Threats to information resources and appropriate countermeasures. Cryptography, identification and authentication, access control models and mechanisms, multilevel database security, steganography, Internet security, and intrusion detection and prevention.
  • 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.
  • 548 -- Building Secure Software. (3) (Prereq: CSCE 510 or consent of instructor) Construction of software systems resistant to vulnerabilities and attacks. Cryptographic tools. Language, operating systems, and network security. Case studies. Development of best practices through programming assignments.
  • 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.
  • 557 -- Introduction to Cryptography. {=MATH 587} (3) (Prereq: CSCE 145, MATH 241, and either CSCE 355 or MATH 574) Design of secret codes for secure communication, including encryption and integrity verification: ciphers, cryptographic hashing, and public key cryptosystems such as RSA. Mathematical principles underlying encryption. Code-breaking techniques. Cryptographic protocols.
  • 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, and 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.
  • 582 -- Bayesian Networks and Desicion Graphs. {=STAT 582} (3) (Prereq: CSCE 350 and STAT 509) Normative approaches to uncertainty in artificial intelligence. Probabilistic and causal modeling with Bayesian networks and influence diagrams. Applications in decision analysis and support. Algorithms for probability update in graphical models.
  • 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, primarily at the individual level. Not auditable.
  • 742 -- Software Architectures. (3) Structural organizations for software systems as collections of onterconnected components: formal models and languages; design tools and guidelines. Not auditable.
  • 743 -- Software Requirements. (3) (Prereq/coreq: 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 methods 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. (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
  • 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 software 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; symbolic 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)
  • 899 -- Dissertation Preparation. (1-12)