Go to USC home page USC Logo College of Engineering and Information Technology
UNIVERSITY OF SOUTH CAROLINA
undergraduate bulletin index

updated 8/15/2006

Computer Science and Engineering

Duncan A. Buell, Chair

Professors
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, 1975
Larry M. Stephens, Ph.D., Johns Hopkins University, 1977

Associate Professors
John B. Bowles, Ph.D., Rutgers University, 1982
Csilla Farkas, Ph.D., George Mason University, 2000
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
José M. Vidal, Ph.D., University of Michigan, 1998

Assistant Professors
Jason D. Bakos, Ph.D., University of Pittsburgh, 2005
Chin-Tser Huang, Ph.D., University of Texas at Austin, 2003
Teicheng Liu, Ph.D., Columbia University, 2003
Srihari Nelakuditi, Ph.D., University of Minnesota, 2001
Gang Quan, Ph.D., University of Notre Dame, 2001
Jujun Tang, Ph.D., University of New Mexico, 2004
Homayoun Valafar, Ph.D., Purdue University, 1995
Song Wang, Ph.D., University of Illinois, 2002

Adjunct Associate Professor
William J. Kettinger, Ph.D., University of South Carolina, 1992

Instructors
Clint Fuchs, M.S., University of South Carolina, 2002
Catherine Matthews, M.S., University of South Carolina, 1988

Distinguished Professors Emeriti
J. Carter Bays, Ph.D., University of Oklahoma, 1974
Ronald D. Bonnell, M.S., University of Kentucky, 1961
Robert L. Cannon, Ph.D., University of North Carolina, 1973
Karel Culik II, Ph.D., Czechoslovakian Academy of Science, 1966
Robert Lee Oakman III, Ph.D., Indiana University, 1971


Overview

The Department of Computer Science and Engineering offers baccalaureate degrees with majors in computer engineering, computer information systems, and computer science. All three degrees provide students with the knowledge and skills to work as practitioners in all aspects of the computing and information processing industries. The major in computer science allows students to focus primarily on the software aspects of computing and applications in the humanities and sciences; the major in computer engineering includes courses in electronics and computer hardware as well as software; the major in computer information systems is designed for persons who are primarily interested in business and data processing applications. Students expecting to pursue graduate study in either computer science or engineering are advised to follow the computer science or computer engineering programs. The department also serves many disciplines within the University through course offerings that provide basic computing skills necessary for the pursuit of studies in other fields. A minor in computer science is available.

Degree Requirements

In addition to the general education and progression requirements of the College of Engineering and Information Technology, a grade of C or better is required in MATH 374 and all CSCE courses applied to the degree.

All required CSCE courses and courses taken as major electives are major courses and may not be counted toward a minor or application area. All other required courses and electives may be used for a minor or application area as appropriate. CSCE 101 and 102 are not major courses and are not used in computing the major GPA.

Educational Objectives for the Computer Engineering Program

Five years after graduation, computer engineering graduates should be:
  • contributing to their communities and society with innovations in computer technology and applications and an understanding of contemporary technological issues
  • advancing in their careers through their knowledge of computer engineering, by communicating and working effectively as team members, and by interacting responsibly with others in society
  • continuing their professional development through professional study and research.

Bachelor of Science in Engineering--Major in Computer Engineering

(122 hours)

ENGL 101, 102, and either 462 or 463 (9 hours)
SPCH 140 (3 hours)
Liberal Arts (9 hours)
MATH 141, 142, 241, 242, 374 (17 hours)
Mathematics elective (3 hours)
STAT 509 (3 hours)
CHEM 111 (4 hours)
PHYS 211, 211L, 212, 212L (8 hours)
CSCE 145, 146, 211, 212, 240, 245, 311, 313, 317, 350, 355, 390, 416, 491, 492 (45 hours)
ELCT 102, 221, 222, 371 (12 hours)
Major Electives (9 hours)

Notes:
1. The liberal arts courses must include at least one history course, one fine arts course, and one social science course. The department maintains a list of approved humanities and social science electives.

2. The math elective is satisfied with MATH 526 or 527 or 544 or CSCE 561. Other courses in linear algebra or numerical analysis may be substituted with permission of the department.

3. The department maintains a list of approved major electives for the computer engineering degree. Currently, CSCE 330, ELCT 321, ELCT 331, and most CSCE courses numbered 510 and higher are approved. CSCE 561 satisfies the requirement as either a major elective or as a mathematics elective.

Educational Objectives for the Computer Information Systems Program

Five years after graduation, computer information systems graduates should be:
  • contributing to economic development and society through the development and management of computer information systems for business and research
  • advancing in their careers through knowledge of computer information systems, communication skills, and understanding of business and cointemporary technological issues
  • continuing their professional development through professional study and research.

Bachelor of Science--Major in Computer Information Systems

(120 hours)

ENGL 101, 102, and either 462 or 463 (9 hours)
SPCH 140 (3 hours)
Liberal Arts (18 hours)
MATH 141, 142, 374 (11 hours)
STAT 509 (3 hours)
Laboratory sciences (8 hours including two labs)
Minor in Business Information Management including MGSC 390, 490, 590, ACCT 222, ECON 224, MKTG 350, MGMT 371, FINA 301 (24 hours)
CSCE 145, 146, 205, 210, 240, 245, 311, 350, 390, 416, 492, 520, 522 (39 hours)
Major elective (CSCE course numbered above 500) (3 hours)
Free electives (2 hours)

Notes:
1. The liberal arts courses must include at least one history course, one fine arts course, and one social science course.

2. Demonstration of proficiency in one foreign language equivalent to the minimum passing grade on the exit examination in the 122 course is required. Up to 6 hours of foreign language courses may be counted toward the liberal arts requirement.

Educational Objectives for the Computer Science Program

Five years after graduation, computer science graduates should be:
  • contributing to economic development and society through the development and management of computer systems for industry and research
  • advancing in their careers through knowledge of computer science, communication skills, and understanding of business and contemporary technological issues
  • continuing their professional development through professional study and research.

Bachelor of Science in Computer Science

(120 hours)

ENGL 101, 102, and either 462 or 463 (9 hours)
SPCH 140 (3 hours)
Liberal Arts (18 hours)
MATH 141, 142, 241, 374, 526 (18 hours)
STAT 509 (3 hours)
PHYS 211, 211L, 212, 212L (8 hours)
Laboratory science (4 hours)
CSCE 145, 146, 211, 212, 240, 245, 311, 330, 350, 355, 390, 416, 492 (39 hours)
Major electives (CSCE 317 or CSCE courses numbered above 500) (9 hours)
Application area (9 hours)

Notes:
1. The liberal arts courses must include at least one history course, one fine arts course, and one social science course.

2. Demonstration of proficiency in one foreign language equivalent to the minimum passing grade on the exit examination in the 122 course is required. Up to 6 hours of foreign language courses may be counted toward the liberal arts requirement.

3. The department maintains a list of approved laboratory science courses.

Bachelor's/Master's Accelerated Programs

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 at the 500 level or above 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.

A combined B.S./I.M.B.A. degree program is available to undergraduate students in computer science and engineering with 90 or more hours earned toward their baccalaureate degrees. Students must be approved by the Department of Computer Science and Engineering and accepted by the Moore School of Business for the I.M.B.A. program. Students must have a minimum overall GPA of 3.40, one year or equivalent of appropriate professional work experience, and satisfactory scores on the GMAT examination. Up to 9 credit hours of graduate courses may be used for dual credit in both programs with the approval of both programs. Questions about this program should be directed to the undergraduate director.


Course Descriptions (CSCE)

  • 101 -- Introduction to Computer Concepts. (3) (Prereq: two years of college preparatory mathematics or equivalent) History, application, and social impact of computers; problem-solving, algorithm development, applications software, and programming in a procedural language. Open to all majors.
  • 102 -- General Applications Programming. (3) (Prereq: two years of college preparatory mathematics) Introduction to systematic computer problem-solving and programming for a variety of applications. Open to all majors.
  • 145 -- Algorithmic Design I. (4) (Prereq: Placement in MATH 141 or grade of C or better in MATH 115) Problem-solving, algorithmic design, and programming. Three lectures and two laboratory hours per week. Open to all majors.
  • 146 -- Algorithmic Design II. (4) (Prereq: Grade of C or better in both CSCE 145 and MATH 141) Continuation of CSCE 145. Rigorous development of algorithms and computer programs; elementary data structures. Three lecture hours and two laboratory hours per week. Open to all majors.
  • 204 -- Program Design and Development. {=MGSC 298} (3) (Prereq: CSCE 101 or MGSC 290) Fundamental algorithms and processes used in business information systems. Development and representation of programming logic. Introduction to implementation using a high-level programming language.
  • 205 -- Business Applications Programming. (3) (Prereq: MGSC 290 or CSCE 101 or above) Introduction to computer applications in business. Programming exercises in COBOL.
  • 206 -- Scientific Applications Programming. (3) (Prereq: MATH 122 or 141) Introduction to computer applications in science and engineering. Programming exercises in a high-level language. Open to all majors.
  • 207 -- Programming and the Unix Environment. (3) (Prereq: CSCE 145 or 206) The Unix programming environment: I/O programming, Unix processes, fork, exec, pipes and signals, and tools. Open to all majors.
  • 209 -- Special Topics in Computer Programming. (1-3) Programming and application development using selected programming languages. Course content varies and will be announced in the schedule of classes by suffix and title.
  • 210 -- Computer Hardware Foundations. (3) (Prereq: CSCE 145, 204, 205, 206, or 207) Number representation, data formats, CPU and memory organization, assembly language, I/O and peripherals, computer networks.
  • 211 -- Digital Logic Design. (3) (Prereq: MATH 141) Number systems, Boolean algebra, logic design, sequential machines.
  • 212 -- Introduction to Computer Architecture. (3) (Prereq: CSCE 211 and either 145 or 206) Computer architecture, components. and organization; memory addressing; Input/Output; instruction sets; interrupts; assembly-language programming.
  • 240 -- Introduction to Software Engineering. (3) (Prereq: grade of C or better in CSCE 146) Fundamentals of software design and development; software implementation strategies; object-oriented design techniques; ethics in software development.
  • 245 -- Object-Oriented Programming Techniques. (3) (Prereq: grade of C or better in CSCE 146) Advanced object-oriented concepts and techniques; multiple inheritance; memory management; operator overloading; polymorphism; performance issues.
  • 304 -- Applied Problem Solving and Programming. {=MGSC 398} (3) (Prereq: CSCE 204 or MGSC 298) Systematic problem definition, solution formulation, and computer implementation for business and related areas. Internet and database applications. Programming exercises in a high-level programming language.
  • 311 -- Operating Systems. (3) (Prereq:CSCE 245, CSCE 210 or 212, MATH 374) Operating system structure and function; process implementation, scheduling, and synchronization; memory management; security; naming protection; resource allocation; network file systems.
  • 313 -- Embedded Systems. (3) (Prereq: CSCE 211, 212) Fundamentals of embedded systems: hardware components, software components, hardware/software interface design, and hardware/software co-design.
  • 317 -- Computer Systems Engineering. (3) (Prereq: CSCE 240, MATH 242, STAT 509) System-level modeling and evaluation of computer systems: requirements elicitation and specification, architectural design, reliability and performance evaluation, Markov modeling, life-cycle cost analysis, project management.
  • 330 -- Programming Language Structures. (3) (Prereq: CSCE 212 and 245 and MATH 374) Formal specification of syntax and semantics; structure of algorithms; list processing and string manipulation languages; statement types, control structures, and interfacing procedures.
  • 350 -- Data Structures and Algorithms. (3) (Prereq: CSCE 245, MATH 374) Techniques for representing and processing information, including the use of lists, trees, and graphs; analysis of algorithms; sorting, searching, and hashing techniques.
  • 355 -- Foundations of Computation. (3) (Prereq: CSCE 211, 212, 350) Basic theoretical principles of computing as modeled by formal languages, grammars, and machines; computablility and computational complexity. Major credit may not be received for both CSCE 355 and CSCE 551.
  • 390 -- Professional Issues in Computer Science and Engineering. (1) (Prereq: CSCE 240, SPCH 140) Professional issues in the information technology professions; history and social context of computing; professional responsibilities; privacy; intellectual property; risks and liabilities of computer-based systems.
  • 416 -- Introduction to Computer Networks. (3) (Prereq: CSCE 311) Concepts and components of computer networks and the Internet; network applications; network protocol stack.
  • 491 -- Capstone Computer System Project. (3) (Prereq: CSCE 311, 317) Advanced computer systems engineering. Team projects.
  • 492 -- Capstone Software Engineering Project. (3) (Prereq: CSCE 240, 311, either ENGL 462 or 463) Advanced software engineering.
  • 498 -- Independent Study. (1-3) (Prereq: Approval of project proposal by instructor and department advisor) Individual investigation or study of special topics. At most three credits may be applied toward a degree.
  • 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 311 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.
  • 526 -- Service Oriented Computing. (3) (Prereq: CSCE 311) Cooperative information systems and service-oriented computing. Techniques for achieving coordinated behavior among a decentralized group of information system components. Distributed databases, multiagent systems, conceptual modeling, Web services, and applications.
  • 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 system, 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.
  • 555 -- Algorithms in Bioinformatics. (3) (Prereq: CSCE 350) Concepts, algorithms and tools for important problems in Bioinformatics, including nucleotide and amino acid sequence alignment, DNA fragment assembly, phylogenetic reconstruction, and protein structure visualization and assessment.
  • 557 -- Introduction to Cryptography. {=MATH 587} (3) (Prereq: CSCE 145, MATH 241 or 250, 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.
  • 569 -- Parallel Computing. (3) (Prereq: knowledge of programming in a high-level language; MATH 526 or 544) Architecture and interconnection of parallel computers; parallel programming models and applications; issues in high-performance computing; programming of parallel computers.
  • 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 Decision 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.

Return to College of Engineering and Information Technology

RETURN TO TOP
USC LINKS: DIRECTORY MAP EVENTS VIP
SITE INFORMATION