Computer Science and Engineering
Matt Thatcher, Chair
The Department of Computer Science and Engineering offers master’s and doctoral-level degrees in computer science and engineering. In addition, a graduate certificate program in information assurance and security is offered. 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 agent-based computing and artificial intelligence, bioinformatics, computer security and information assurance, computer vision and image processing, embedded and reconfigurable computing, quantum computing, robotics, software quality assurance, and wireless networks.
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. The graduate certificate program in information assurance and security is designed to provide information professionals with the background and knowledge needed for management of computer security and information assurance. Additional information on current research projects, detailed course outlines, and other aspects of the graduate program may be found on the departmental Web site, http://www.cse.sc.edu.
Academic Standards
All students are expected to meet the academic standards of The Graduate School.
Admissions
Requirements for admission to all graduate degree programs in computer science and engineering include the general admission requirements of The Graduate School as well as more stringent departmental requirements, as described below. In general, the admission process is highly competitive. Admissions decisions are based on the quality of the applicant’s previous university-level academic work, letters of recommendation, GRE scores, and other evidence of past accomplishments.
For admission to the M.E., M.S., or Ph.D. program, applicants normally hold the B.S. degree in computer science and engineering from an ABET-accredited program. 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.
For admission to the Certificate of Graduate Study in Information Assurance and Security program, applicants normally hold the B.S. degree in computer science, computer engineering, or a related field. In addition, they must have completed courses in data structures and algorithms, operating systems, database management systems, discrete mathematics, linear algebra, and probability and statistics. Students enrolled in other graduate degree programs at USC are automatically eligible to pursue the certificate as long as they have taken the prerequisite courses.
For admission to the Master of Software Engineering program, applicants normally hold the B.S.degree in computer science, computer engineering, computer information systems, management information systems, or a closely related field. 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 must be completed before the degree will be awarded.
All applicants must submit GRE scores. International applicants must also submit TOEFL (IBT) or IELTS Intl. Academic Course Type 2 exam scores. The average GRE scores of the accepted applicants for fall 2008 were: verbal 545, quantitative 768, and analytical writing 4.3 (on a 1 to 6 scale).
In addition, all applicants should submit an official transcript from each school or college previously attended, and at least two letters of recommendation.
The admission 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 February 1 for fall and summer admission and by October 1 for spring admission.
Courses
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.
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.
Design methodology; processor design; computer arithmetic: algorithms for addition, multiplication, floating point arithmetic; microprogrammed control; memory organization; introduction to parallel architectures.
Computer networks and communication protocols; socket programming; interprocess communication; development of network software; case studies.
Structure, design, and analysis of computer networks; ISO/OSI network architecture.
Fundamental principles and techniques of ethical hacking, including penetration testing life cycle, planning and scoping, identifying targets and goals, active and passive reconnaissance, enumeration and scanning, exploitation, post-exploitation, and results reporting.
Database management systems; database design and implementation; security, integrity, and privacy.
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.
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.
Techniques for design and implementation of compilers, including lexical analysis, parsing, syntax-directed translation, and symbol table management.
Development of mobile applications, including user interface design for mobile, local and cloud data storage techniques, and application architectures.
Object-oriented methods and tools for application programming with graphically interactive operating systems.
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.
Basic theoretical principles of computing as modeled by formal languages and automata; computability and computational complexity
Cross-listed course: MATH 562
Design and development of computer games, with emphasis on the technologies used. Hands-on development of computer games.
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.
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.
Cross-listed course: MATH 587
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.
Cross-listed course: MATH 527
Scientific visualization tools as applied to sampled and generated data; methods for data manipulation and representation; investigation of visualization techniques.
Foundational techniques in multidisciplinary software development, specifically of applications designed to present sensitive, sometimes controversial, materials in ways to engender empathic awareness of the interactor.
Cross-listed course: FAMS 581
Interdisciplinary approach to interaction design, user-centered design, human abilities, survey development, experimental study methodology, heuristic evaluations, usability testing, universal design, and accessibility.
Design and application of robotic systems; emphasis on mobile robots and intelligent machines.
Text and natural language processing; formal models and data structures appropriate for text processing; selected topics in computational linguistics, stylistics, and content analysis.
Heuristic problem solving, theorem proving, and knowledge representation, including the use of appropriate programming languages and tools.
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.
Cross-listed course: STAT 582
Design and implementation of machine learning systems, Deep learning systems stack, machine learning platforms, scalable and distributed machine learning.
Foundational techniques and tools required for data science and big data analytics. Concepts, principles, and techniques applicable to any technology and industry for establishing a baseline that can be enhanced by future study.
Cross-listed course: STAT 587
Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by title. May be repeated for credit as topics vary.
Strategic management and use of information systems in organizations.
Cross-listed course: MGSC 594
Design techniques for logic systems; emphasis on higher-level CAD tools such as hardware description languages and functional modeling.
VLSI design process models, introduction to EDA tools, HDL modeling and simulation, logic synthesis and simulation, benchmark design projects.
Design of VLSI circuits, including standard processes, circuit design, layout, and CAD tools. Lecture and guided design projects.
Operating system organization and interactive processing systems, multiprogramming systems, process management, task scheduling, resource control, deadlocks.
Architecture of high-performance computers, including array processors, multiprocessor systems, data flow computers, and distributed processing systems.
Problems of real-time computer applications in process control or similar areas; task scheduling; real-time operating systems; advanced interrupt structures; memory management techniques.
This course focuses on the security and privacy issues associated with wireless networks. Various attacks against wireless networks and their defense strategies will be analyzed. Students are able to embark in research of wireless network security.
Components of a database management system; implementation issues; query optimization; file organization; file organizations’ transaction management; fault recovery; security; system performance.
Database design methodologies and tools; data models; implementation languages; user interfaces.
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.
Current trends and challenges in information warfare. High-level analysis of information warfare threats, like cyber terrorism, espionage, Internet fraud, intelligence activities, cyber ethics, and law enforcement.
Approaches for specifying programming language semantics, including operational, axiomatic, and denotational specification.
Current practices and research in software development, requirements definition, design, program testing and reliability, maintenance, and management.
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.
Structural organizations for software systems as collections of interconnected components: formal models and languages; design tools and guidelines.
Elicitation, analysis, and validation of software requirements, specification of software systems including formal specification methods; CASE tools.
Fundamentals of object-oriented technology; object modeling of structure, function, and time-dependent behavior; system analysis and design.
Object-oriented programming paradigm, including encapsulation, inheritance, reusable classes, object classification, specialization, and message passing; case studies and applications.
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.
Algorithm design techniques; algorithms and data structures for sets and graphs; time and space complexity; sorting and searching; NP-complete problems.
Formal models of computation, including finite state automata, Turing machines, recursive functions, formal grammars, and abstract complexity theory.
Concepts and techniques for digital image processing; emphasis on low-level processes that analyze discrete images at the pixel level.
Graphics data structures, graphics languages, modeling, raster displays, 3-D shading, hidden surface algorithms.
Visualization techniques for scientific computing; interactive steering of calculations; animation and rendering techniques for multivariate data analysis.
Principles for the design of systems supporting effective human-computer interaction; interaction styles; displays and interactive devices; user assistance; system design and evaluation.
Theoretical concepts and algorithmic tools currently utilized in the field of protein folding such as Xplor-NIH and ROSETTA are presented. Participants are enabled to embark in research of protein folding.
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.
A/D conversion, digital filters, discrete Fourier transform and FFT, acoustics of speech, and synthesis and recognition of speech.
Design and operation of robot systems; dynamics, control, and motion trajectories of manipulators; visual, auditory, and tactile sensing systems; planning and learning.
Theory and practical implementation of reinforcement learning methods with deep neural networks. Markov decision processes, policy iteration, value iteration, q-learning, SARSA, deep neural networks, approximate value iteration, deep q-networks, policy gradients, model-based reinforcement learning, multi-armed bandits, partial observability.
Representation techniques and languages for symbolic knowledge, including predicate calculus, frame-based systems, and terminological systems; computer reasoning using these systems.
Expert system domains, knowledge representation techniques, inference engines, and knowledge acquisition methods.
Coordinated problem solving by multiple knowledge systems.
Principles of fuzzy set theory, fuzzy relations, and fuzzy logic; fuzzy “if-then” rules.
Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by title. May be repeated for credit as topics vary.
Technical writing and presentations in major computing research areas; ethics in research and writing.
Work. Written report required. Not auditable.
Individual research to be arranged with the instructor.
Individual research to be arranged with the instructor.
Security mechanisms of distributed software systems, including cryptographic applications. Secure multiparty computation, group-based cryptography, and security mechanisms for emerging distributed architectures.
Architecture, design, and implementation of distributed database managements systems; data fragmentation, replication, and allocation; query processing and transaction management; distributed object database management systems.
Information processing techniques and mathematical tools to assemble, access, and analyze data for decision support and knowledge discovery.
Security threats to database systems. Access control models, multilevel security, integrity, Web-based databases, and data inference problem. Formal models of multilevel security, confidentiality versus availability and integrity.
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.
Input and display devices, data structures, architectures, primitives, and geometrical transformations appropriate to computer graphics, parametric surfaces.
Scene segmentation using texture, color, motion; representation of 2-D or 3-D structures; knowledge-based vision systems.
Feature nomination, selection, extraction, and evaluation; deterministic, stochastic, and fuzzy models for classifier design; parameter estimation; error rate estimation; clustering and sequential learning.
Fundamentals of machine learning including rote learning, learning from examples, learning from observations, and learning by analogy; knowledge acquisition for expert systems.