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

COMPUTER SCIENCE AND ENGINEERING

Duncan A. Buell, Chair of the Department

Professors
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, 1975
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
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
Teicheng 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

Instructors
Clint Fuchs, M.S., University of South Carolina, 2002
Catherine Matthews, M.S., University of South Carolina, 1988
Steven Weingartner, M.B.A., University of Texas at Dallas, 1989

Distinguished Professors Emeriti
J. Carter Bays, Ph.D., University of Oklahoma, 1974
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 science, computer engineering, and computer information systems. 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 also 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.

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, 350, 355, 390, 491, 492 (39 hours)
ELCT 102, 221, 222, 321, 371 (15 hours)
Major Electives (12 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 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.

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)
MGSC 390, 490, 590, and two of 494, 591, 594 (15 hours)
ACCT 222 (3 hours)
ECON 224 (3 hours)
CSCE 145, 146, 205, 212, 240, 245, 311, 330, 350, 390, 492, 520 (36 hours)
Major elective (CSCE course numbered above 500) (3 hours)
Free electives (8 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.

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, 492 (36 hours)
Major electives (CSCE courses numbered above 500) (12 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 laboratory science course must be selected from the following list: BIOL 101, CHEM 111, GEOL 201, GEOl 202, MSCI 111.

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 111 or MATH 115) Introduction to computer applications in the natural and social sciences. Programming exercises in FORTRAN. 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.
  • 211 -- Digital Logic Design. (3) (Prereq: MATH 141) Number systems, Boolean algebra, logic design, sequential machines.
  • 212 -- Introduction to Computer Architecture. (3) (Prereq: either CSCE 146 or both CSCE 145 and 211) 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 212 and 245 and 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 Laboratory. (3) (Prereq: CSCE 211, 212) Design and implementation of microprocessor-based systems; assembly-language programming.
  • 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.
  • 491 -- Capstone Computer System Project. (3) (Prereq: CSCE 240, 311) 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 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 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.
  • 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 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