Breadcrumb Navigation:

coe-med.jpg

Department of Computer Science

www.csc.ncsu.edu

Computers

Computer software is ubiquitous in modern life. In addition to high-tech machines like aircraft and medical imaging systems, everyday devices as diverse as automobiles, vending machines, refrigerators, and video-game consoles now contain some type of computer. Computers help design our highways, bridges, pharmaceuticals, electronic circuits, and buildings; handle banking, stock trading, and other financial transactions; assist in management decisions; control communications, utilities, and manufacturing processes; and analyze farm production. Computers watch over our health, security, and safety. Computers serve as vital research tools for scientists, from those exploring the farthest reaches of the cosmos to those searching for subtle patterns in the human genome. Explosive growth in computer gaming, digital entertainment, and multimedia-based education has spawned entirely new industries in recent years. Computers are linked together in worldwide networks that provide information and computing power to nearly anyone who wants it, anywhere in the world.

Opportunities

Designing computer systems, and the software that runs on them, is the job of computer scientists. Computer scientists can find demand for their innovation, design, analysis, and engineering skills in the full gamut of professions. As a direct consequence of the increasingly critical role of computers in society, the discipline of computer science has enjoyed rapid growth for many years, and the trend looks likely to continue.  The most credible employment projections indicate a serious and worsening nationwide shortfall in the supply of people skilled in information technology, and a resulting steady rise in demand and salaries, for decades to come. Computer Science graduates from NC State are in high demand, including by employers that are extremely selective in their national recruiting.

Anchoring one corner of the world-famous Research Triangle Park, and located in modern state-of-the-art teaching and research facilities on NC State’s Centennial Campus, the department and its students and faculty benefit from strong and active industry partnerships. NC State Computer Science is one of the top suppliers in the nation of new graduate hires to a number of high-tech companies, including several Fortune 500 companies, some with a substantial presence in the Research Triangle. Starting salaries for our undergraduates now average over $65,000 and show a steady increase. Opportunities are also plentiful for graduate study for those who wish to pursue the field in more depth.

Curriculum

Like all freshmen in the College of Engineering, Computer Science freshmen take a core of courses in the humanities, chemistry, mathematics, physics, and computing. After successfully completing the required courses, students may apply to join the Department of Computer Science as degree-seeking students.

The Computer Science curriculum teaches students the skills necessary to understand, design, implement, test, and deploy computer systems and software of all kinds, in addition to exposing students to the application of computers to problem solving in diverse fields, and the mathematical methods needed to analyze and compare both computation problems themselves and alternative approaches to solving them.

Core courses provide a foundation for all students in programming languages, data structures, software engineering, computer architectures, numerical analysis, theory of computation, and the social and ethical dimensions of the practice of computer science.

Computer science electives are chosen in consultation with advisers, usually starting during the junior year. These electives allow exploration of more advanced areas:  among them artificial intelligence, database management systems, computer graphics, human-computer interface design, multimedia technology, web technologies, networks, privacy and security, remote sensing, computer architecture, distributed computing, and operating systems. Electives can be chosen to provide coherent concentration in areas such as computer and network security, software engineering, and computer game design. A special focus is on skills that help our students be competitive in the global economy. These skills include technical communication, understanding of business principles in organizations that use information technology, an aptitude for innovation, an understanding of intellectual property issues, and an understanding of the latest technologies, such as web-services, security and sensors, as well as both closed and open source solutions and engineering issues.

All Computer Science majors must complete a team project, most often in an area such as networking, computer graphics, computer gaming, database technology, or web services. Projects under the auspices of the department’s Senior Design Center have industrial sponsors, so student teams gain experience working jointly with industry representatives to achieve project goals. The department’s location near the Research Triangle Park also means many opportunities for Co-ops and internships, part-time employment, and forging the industry contacts often vital in a successful job search.

The undergraduate curriculum leads to a Bachelor of Science in Computer Science. This program is nationally accredited by the Computing Accreditation Commission of ABET, http://www.abet.org.

Game Development Concentration

Computer games are some of the most complex software development projects and employ some of the most advanced technologies of any application area of computer science. The entertainment software sector is a multi-billion dollar industry with increasing demand for new employees trained in these technologies and methods. In addition to the more familiar entertainment sector, these technologies also have applications to such areas as training, education, visualization, and social interaction forums — so-called “serious games.” North Carolina is now among the top tier of US states with centers of game industry employment. As the game industry continues to grow, demand by North Carolina companies for new graduates with strong background in computer science with a focus on game development will also expand.

Many aspects of computer game development are unique to the game industry and the game development concentration provides specialized coursework in these areas. The game development concentration focuses on game development technologies while preserving the breadth and depth of the general computer science BS degree. The concentration requires that students take both the initial course on computer graphics (CSC 461) and the initial course on game development (CSC 481). They must choose as a concentration project either the graphics or game development advanced elective (CSC 462 or CSC 482, respectively). Two additional game restricted electives are chosen from a list of CSC courses with content highly relevant to game development. Of the nine credit hours required for other electives, students in the concentration must select three courses from a list that spans topics such as fiction writing, film, and music. These courses provide grounding in the creation of conventional media and provide the background in these disciplines needed to participate in the multidisciplinary aspects of the design of games.

Program Educational Objectives

The CSC undergraduate program at NCSU prepares its B.S. graduates to achieve the following career and professional goals:

  1. To apply their knowledge of computer science problems encountered in their professional careers or in pursuit of advanced degrees.
  2. To use evolving technologies, analytical thinking, and design to address contemporary issues.
  3. To communicate well orally and in writing, interact professionally, and work effectively on multidisciplinary teams to achieve project objectives.
  4. To uphold high ethical standards, including concern for the impact of computing on individuals, organizations, and society.
  5. To engage in lifelong learning to enhance their professional capabilities.

Specific curriculum requirements are available online.

Minor in Computer Programming

The Department of Computer Science offers a Minor in Computer Programming to undergraduate majors in any field except Computer Science and Computer Engineering. The objectives of this minor are to:

  1. Encourage students to combine computing with their own disciplines.
  2. Promote quality in programming techniques.
  3. Give graduating seniors with a minor in computer programming an added advantage in the job market.

The minor requires completion of 21 credit hours from the Computer Science core.

Scholarships and Financial Aid

The College of Engineering and the Department of Computer Science have a number of endowed and other scholarships available to students. There is also opportunity for financial aid sponsored by industry and for Co-op and internship positions. Interested students are invited to apply through the College of Engineering. In addition, the department organizes job-fairs and maintains a job matching service for our industrial partners (ePartners) and others who wish to hire our students for the summer or part-time during the academic year.

Facilities

North Carolina State University boasts one of the most extensive and sophisticated advanced high-performance communications infrastructures available for student use today. It ranges from a 10 Gbps research network, to wireless computing, to sensor networks. NC State University High-Performance Computing operations provide NC State students and faculty with entry and medium level high-performance research and education computing facilities and consulting support. Another service, called the Virtual Computing Laboratory (VCL), provides on-demand and reservation-based utility computing services from NC State’s extensive library of Engineering, Design, and Scientific software applications, as well as support for research projects. It is intended to address the increasing needs of local and distance students, faculty and researchers for virtualized resources by providing 24x7 access to advanced computing laboratory facilities through a variety of computer systems they own.

In addition, the Department of Computer Science has over 30 general purpose and specialized teaching and research laboratories, centers and other facilities that support its educational and research mission. These facilities are located in four buildings: Daniels Hall, Engineering Building II, Engineering Building III, and Montieth Research Center. Facilities range from introductory programming laboratories, to networking laboratories, to a games center, to an advanced visualization center, to a senior design center. At different stages of their education undergraduates will have the opportunity to use many of these facilities.

Interim Department Head

L.A. Williams
and Professor


Director of Graduate Programs

G.N.Rouskas


Director of Undergraduate Programs

D.R. Bahler


Director of Advising (Undergraduate)

B.J. Adams


Distinguished University Research Professor

D.L. Bitzer


Distinguished Professor

J.C. Lester
and Director of the Center for Educational Informatics

M.A. Vouk
and Associate Vice Chancellor for Research Development


Distinguished University Professor

M. Rappa


SAS Distinguished Professor

J. Doyle


Alumni Distinguished Graduate Professor

H. Perros

M.P. Singh


Professors

R. Dutta

C.G. Healey
and Goodnight Distinguished Professor Analytics, Institute for Advanced Analytics

T.J. Menzies

F. Mueller

D.S. Reeves
and Associate Dean for Graduate Programs, College of Engineering

G.N. Rouskas

N.F. Samatova

C.D. Savage

M.F. Stallmann

W.J. Stewart

D.J. Thuente

L.A. Williams


Associate Professors

K. Anyanwu Ogan

D.R. Bahler

T.M. Barnes

R.Y. Chirkova

W.H. Enck

V. Freeh

E.F. Gehringer

X. Gu

K. Harfoush

S. Heber

A. Jhala

E. Murphy-Hill

D.L. Roberts

X. Shen

R.A. St.Amant

J.N. Staddon

V.B. Sullivan

R. Vatsavai

B. Watson


Assistant Professors

M. Chi

G. Jin

A. Kapravelos

C. Lynch

C. Martens

C.J. Parnin

A. Scafuro

M. Shahzad

K.T. Stolee

H.W. Tseng


Teaching Associate Professor

S.S. Heckman
and Assistant Director of Undergraduate Programs


Teaching Assistant Professors

S.P. Balik

T. Battestilli

J. King

J.Y. Schmidt

D.B. Sturgill


Lecturers

B.J. Adams

M. Heil
and Director of Senior Design Center

D.A. Lasher
and Scheduling Officer

TA. Marini
and Assistant Director of Undergraduate Advising

J.P. Streck


Emeritus

W. Chou

E.W. Davis

R.J. Fornaro

T.L. Honeycutt

D.F. McAllister

W.E. Robbins

A.L. Tharp


Visiting Research Professor

F. Brglez


Adjuncts

S. Ahalt

A.I. Anton

K.E. Boyer

A. Dagnino

N. Diakum-Thibault

G. Howell

S.W. Hunter

S.P. Iyer

X. Jiang

J. Kang

L. Layman

X. Ma

P. Ning

I. Rhee

A. Rindos

A. Rivers

T. Xie

Y. Xin

H. Yi

R.M. Young

T. Yu


Associate Vice Chancellor for the Office of Partnerships

D.H. Kekas


Director of Development & External Relations

K. Tate


Director of Graduate Career Services

L. Rand-Pickett


Managing Director of ITng

M. Kowolenko
and Principal Research Scholar


Director of ITng Services

J.C. Bass


Research Professor

P.A. Dreher


Research and Development Staff

A. Brown

K.S. Culbertson

Ferry

M. Frankosky

J.L. Hall

H. Hess Von Ludewig

D. Kremer

B.W. Mott

J.P. Rowe

J. Streck

R.G. Taylor

D.R. Wright


Associate Members of the Department

For a list of Associate Members of the Department, please see the Computer Science Department's webpage

CSC - Computer Science Courses

CSC 111 Intro to Computing: Python 3.
C: (E 115 or COS 100) and MA 141; R: Civil, Construction, and Environmental Engineering Majors Only.

Computation problem solving through writing Python programs. Particular elements include: careful development of Python programs from specifications; documentation and style; appropriate use of control structures, data types and subprograms; abstractions and verification; engineering applications.

CSC 112 Introduction to Computing-FORTRAN 3.
Corequisite: (E115 or PAMS 100) and (MA 121 or MA 131 or MA 141).

Problem solving through writing FORTRAN programs. Particular elements include: careful development of FORTRAN programs from specifications; documentation and style; appropriate use of control structures, data types and subprograms; abstractions and verification; engineering applications.

CSC 113 Introduction to Computing - MATLAB 3.
Corequisite: (E 115 or COS 100) and (MA 121 or MA 131 or MA 141).

Problem solving through writing MATLAB programs. Particular elements include: careful development of MATLAB programs from specifications; documentation and style; appropriate use of control structures, data types and subprograms; abstractions and verification; engineering applications.

CSC 116 Introduction to Computing - Java 3.
Corequisite: (E115 or PAMS 100) and (MA 121 or MA 131 or MA 141).

An introductory course in computing in Java. Emphasis on algorithm development and problem solving. Careful and methodical development of Java applications and applets from specifications; documentation and style; appropriate use of control structures; classes and methods; data types and data abstraction; object-oriented programming and design; graphical user interface design.

CSC 200 Introduction to Computers and Their Uses 3.

Survey of basic principles of computer hardware, communications, operating systems, microcomputer issues, security, impact on society, system development, and use in organizations. Hands-on use of software, including operating system commands, wordprocessing, spreadsheets, and database managers. Demonstration and application of current end-user applications. May not be used by CSC major as a restricted elective.

CSC 216 Programming Concepts - Java 4.
Prerequisite: CSC 116 with a grade of C or better.

The second course in computing, intended for majors. Emphasis is placed on software system design and testing; encapsulation; polymorphism; composition; inheritance; linear data structures; specification and implementation of finite-state machines; interpretation of inductive definitions (functions and data types); and resource management.

CSC 226 Discrete Mathematics for Computer Scientists 3.
Prerequisite: MA 101 or equivalent completed in high school ; CSC,CSU Majors and minors;CPE,CPU Majors.

Propositional logic and the predicate calculus. Logic gates and circuits. Methods of proof. Elementary set theory. Mathematical induction. Recursive definitions and algorithms. Solving recurrences. The analysis of algorithms and asymptotic growth of functions. Elementary combinatorics. Introduction to graph theory. Ordered sets, including posets and equivalence relations. Introduction to formal languages and automata.

CSC 230 C and Software Tools 3.
Prerequisite: CSC 216 with a C or better and CSC or CSU Majors and Minors..

Details of C programming as compared with Java; Lexical structure, syntax, semantics, and pragmatics (idioms, common uses) of C; Stages of compliation, linking and execution; Strings, arrays, structures, pointers, and memory management; C libraries;Tools for design, maintenance, and debugging of programs; Separate compliation, modular programming; Integrated development environments.

CSC 236 Computer Organization and Assembly Language for Computer Scientists 3.
Prerequisite: CSC 216 with a C or better and CSC or CSU Majors and Minors..

Computer architecture topics required by professional software developers, including binary and hexadecimal numbers, hardware component organization, machine instruction sets, assembler language programming, linking assembler language with high-level languages, program testing, computer hardware design issues, computer software design issues, and trends in current computer design.

CSC 246 Concepts and Facilities of Operating Systems for Computer Scientists 3.
Prerequisite: CSC 230; Corequisite: CSC 236; CSC and CSU Majors and Minors.

Fundamental concepts of computer operating systems for computer scientists, including memory management, file systems, process management, distributed systems, deadlocks, and basic security and system accounting.

CSC 251 Web Page Development 1.
Prerequisite: E 115 or equivalent knowledge of EOS/Unity system.

Syntax and semantics of HTML (HyperText Markup Language). Students will learn necessary skills to develop web pages on their EOS/Unity account. In addition to mechanics, design aspects and bandwidth conservancy are covered. Several pages will be created including a final project.

CSC 255 String Processing Languages 1.
Prerequisite: Programming knowledge.

Syntax and semantics of a string manipulation language, currently SNOBOL 4. Application of the language to programming problems in non-numeric areas. Discussion of other string processing languages such as PERL.

CSC 281 Foundations of Interactive Game Design 3.

Surveys history, technology, narrative, ethics, and design of interactive computer games. Work in teams to develop novel game designs and computer games. Introduction to the interplay of narrative, technology, rule systems, play and culture in the creation of interactive games. Programming experience not required. Enrollment restricted to students with at least sophomore status.

CSC 295 Special Topics in Computer Science 1-3.

Special topics in CSC at the early undergraduate level.

CSC 302 Introduction to Numerical Methods 3.
Prerequisite: CSC 116 and MA 305, CSC Majors or 2.75 GPA.

Numerical computations with digital computers; floating point arithmetic and implications of round-off error. Algorithms and computer techniques for the numerical solution of problems in: function evaluation; zeros of functions; interpolation; numerical differentiation and integration; linear systems of equations; curve fitting; solutions of non-linear equations; numerical solutions of ordinary differential equations.

CSC 316 Data Structures for Computer Scientists 3.
Prerequisite: CSC 216 and CSC 226 with a grade of C or better; CSC, CSU Majors and Minors and CPE Majors.

Abstract data types; abstract and implementation-level views of data types. Linear and branching data structures, including stacks, queues, trees, heaps, hash tables, graphs, and others at discretion of instructor. Best, worst, and average case asymptotic time and space complexity as a means of formal analysis of iterative and recursive algorithms.

CSC 326 Software Engineering 4.
Prerequisite: CSC 230 and CSC 316.

Application of software engineering methods to develop complex products, including the following skills: quality assurance, project management, requirements analysis, specifications, design, development, testing, production, maintenance, security, privacy, configuration management, build systems, communication, and teaming.

CSC 333 Automata, Grammars, and Computability 3.
Prerequisite: Grade of C or better in CSC 226, CSC Majors or 2.75 GPA.

Study of three classical formal models of computation--finite state machines, context-free grammars, and Turing machines--and the corresponding families of formal languages. Power and limitations of each model. Parsing. Non-determinism. The Halting Problem and undecidability. The classes P and NP, and NP-completeness.

CSC 342 Applied Web-based Client-Server Computing 3.
Prerequisite: CSC 216 with a grade of C- or better.

This course explores client-server computing on the World Wide Web. The course focuses on the architecture of web-based client-server applications and accepted industry practices. Students work in teams to develop web applications with dynamic content delivery.

CSC 379 Ethics in Computing 1.
Prerequisite: Junior standing, CSC Majors or 2.7 minimum GPA.

Discussion of the concern for the way in which computers pose new ethical questions or pose new versions of standard moral problems and dilemmas. Study of ethical concepts to guide the computer professional. Computer professional codes of ethics. Use of case studies to relate to ethical theory. Ethical and legal use of software. Conflicts of interest.

CSC 401 Data and Computer Communications Networks 3.
Prerequisite: ST 370 and CSC 246.

Basic concepts of data communication networking and computer communications architectures, including packet/circuit/virtual-circuit switching, layered communication architecture and OSI layers, general description of DLC, network and transport layers, some detailed protocol study of Ethernet, ATM and TCP/IP. Credit is not allowed for both CSC 401 and ECE 407.

CSC 402 Networking Projects 3.
Prerequisite: CSC 401.

Through a series of hands-on networking labs, students will gain experience in practical topics such as network configuration, troubleshooting, and static and dynamic routing. The course prepares students sufficiently for an industry certification.

CSC 405 Introduction to Computer Security 3.
Prerequisite: CSC 246.

Basic concepts and techniques in information security and management such as risks and vulnerabilities, applied cryptography, program security, malicious software, authentication, access control, operating systems security, multilevel security, trusted operating systems, database security, inference control, physical security, and system assurance and evaluation. Coverage of high-level concepts such as confidentiality, integrity, and availability applied to hardware, software, and data.

CSC 406 Architecture Of Parallel Computers 3.

The need for parallel and massively parallel computers. Taxonomy of parallel computer architecture, and programming models for parallel architectures. Example parallel algorithms. Shared-memory vs. distributed-memory architectures. Correctness and performance issues. Cache coherence and memory consistency. Bus-based and scalable directory-based multiprocessors. Interconnection-network topologies and switch design. Brief overview of advanced topics such as multiprocessor prefetching and speculative parallel execution. Credit is not allowed for more than one course in this set: ECE 406, ECE 506, CSC 406.

CSC 411 Introduction to Artificial Intelligence 3.
Prerequisite: CSC 316.

Overview and definitions of Artificial Intelligence (AI). Search, including depth-first and breadth-first techniques with backtracking. Knowledge representation with emphasis on logical methods, Horn databases, resolution, quantification, unification, skolemization and control issues; non-monotonic reasoning; frames; semantic nets. AI systems, including planning, learning, natural language and expert systems. An AI programming language may be taught at the instructor's discretion.

CSC 416 Introduction to Combinatorics 3.
Prerequisite: MA 225 or CSC 226.

Basic principles of counting: addition and multiplication principles, generating functions, recursive methods, inclusion-exclusion, pigeonhole principle; basic concepts of graph theory: graphs, digraphs, connectedness, trees; additional topics from:Polya theory of counting, Ramsey theory; combinatorial optimization - matching and covering, minimum spanning trees, minimum distance, maximum flow; sieves; mobius inversion; partitions; Gaussian numbers and q-analogues; bijections and involutions; partially ordered sets.

CSC 417 Theory of Programming Languages 3.
Prerequisite: CSC 316.

Theory of programming languages with emphasis on programming language semantics and implementation issues. Formal models of syntax and semantics. Static versus dynamic scoping. Parameter passing mechanisms. Garbage collection. Programming in alternate paradigms such as applicative, functional, logic, and object-oriented programming languages.

CSC 422 Automated Learning and Data Analysis 3.
Prerequisite: ST 370 and MA 305, and a grade of C- or better in either CSC 226 or LOG 201.

Introduction to the problems and techniques for automated discovery of knowledge in databases. Topics include representation, evaluation, and formalization of knowledge for discovery; classification, prediction, clustering, and association methods.Selected applications in commerce, security, and bioinformatics. Students cannot get credit for both CSC 422 and CSC 522.

CSC 427 Introduction to Numerical Analysis I 3.
Prerequisite: MA 301 and programming language proficiency.

Theory and practice of computational procedures including approximation of functions by interpolating polynomials, numerical differentiation and integration, and solution of ordinary differential equations including both initial value and boundary value problems. Computer applications and techniques.

CSC 428 Introduction to Numerical Analysis II 3.
Prerequisite: MA 405 and programming language proficiency; MA (CSC) 427 is not a prerequisite.

Computational procedures including direct and iterative solution of linear and nonlinear equations, matrices and eigenvalue calculations, function approximation by least squares, smoothing functions, and minimax approximations.

CSC 431 File Organization and Processing 3.
Prerequisite: CSC 230 and CSC 316.

Hardware characteristics of storage devices. Basic file organizations including sequential, direct, and indexed sequential; hashing and collision resolution; perfect hashing; signatures; bloom filters; sorting and other bit level structures. Tree structures including binary search trees, B-trees, and trees. Dynamic hashing techniques. Structures including grid files. Applying file structures to practical problems.

CSC 440 Database Management Systems 3.
Prerequisite: CSC 316, CSC Majors.

Introduction to database concepts. This course examines the logical organization of databases: the entity-relationship model; the relational data model and its languages. Functional dependencies and normal forms. Design, implementation, and optimization of query languages; security and integrity, concurrency control, transaction processing, and distributed database systems.

CSC 442 Introduction to Data Science 3.
P: (MA 305 or MA 405) and (ST 305 or ST 312 or ST 370 or ST 372) and (CSC 111 or CSC 112 or CSC 113 or CSC 116 or ST 114 or ST 445).

Overview of data structures, data lifecycle, statistical inference. Data management, queries, data cleaning, data wrangling. Classification and prediction methods to include linear regression, logistic regression, k-nearest neighbors, classification and regression trees. Association analysis. Clustering methods. Emphasis on analyzing data, use and development of software tools, and comparing methods.

CSC 450 Web Services 3.
Prerequisite: CSC 316.

Concepts, theories, and techniques for Web services. This course examines architectures for Web applications based on the classical publish, find, and bind triangle. It considers the description, discovery, and engagement of Web services. It emphasizes Web service composition. Key topics include semantics, transactions, processes, agents, quality of service, and compliance.

CSC 453 Software for Wireless Sensor Systems 3.
Prerequisite: (CSC 246 or ECE 306) and CSC 230 and CSC 316.

Development of software for wireless computer systems. Software designs for applications and networking in this environment, including algorithms for ad hoc discovery, routing, and secure data transfer. Software interface to related sensors and subsystems including global positioning system. Algorithms for power management. Programming required.

CSC 454 Human-Computer Interaction 3.
Prerequisite: CSC 316.

A survey of concepts and techniques for user interface design and human computer interaction. Emphasizes user-centered design, interface development techniques, and usability evaluation.

CSC 455 Social Computing 3.
Prerequisite: Junior or senior standing.

This course surveys the field of social computing, introducing its key concepts, paradigms, and techniques. Specific topics are selected from the following list: social media and social network analytics, sociological underpinnings, crowdsourcing and surveys, human computation, social mobilization, human decision making, voting theory, judgment aggregation, prediction markets, economic mechanisms, incentives, organizational modeling, argumentation, contracts, norms, mobility and social context, sociotechnical systems, and software engineering with and for social computing. This course incorporates ideas from diverse disciplines (including sociology, psychology, law, economics, political science, logic, statistics, philosophy, business) to provide essential background for future computer science careers in industry and research.

CSC 456 Computer Architecture and Multiprocessors 3.
Prerequisite: CSC 236 and CSC 316.

Major components of digital computers and the organization of these components into systems. Begins with single processor systems and extends to parallel systems for multiprocessing. Topics include computer organization, instruction set design, cache memory, pipelined processors, and multiprocessors. Recent developments in PC and desktop architectures are also studied.

CSC 461 Computer Graphics 3.
Prerequisite: MA 305, CSC 230 and CSC 316.

Principles of computer graphics with emphasis on two-dimensional and aspects of three-dimensional raster graphics. Topics include: graphics hardware devices, lines and polygons, clipping lines and polygons to windows, graphical user interface, vectors, projections, transformations, polygon fill. Programming projects in C or C++.

CSC 462 Advanced Computer Graphics Projects 3.
Prerequisite: CSC 461, CSC Majors.

Principles of computer graphics with emphasis on three-dimensional graphics. Topics include: 3-D projections and transformations, curves and surfaces, color and texture, animation, visualization, and global illumination techniques. Programming project required.

CSC 467 Multimedia Technology 3.
Prerequisite: CSC 246.

Methods of creating, recording, compressing, parsing, editing and playing back on a computer the following media: sound, music, voice, graphics, images, video, and motion. Introduction to basic principles: signal processing, information theory, real-time scheduling. Also includes discussion of standards, programming tools and languages, storage and I/O devices, networking support, legal issues, user interfaces, and applications. Includes significant hands-on experience.

CSC 474 Network Security 3.
Prerequisite: CSC 230.

Basic concepts and techniques in information security and management such as risks and vulnerabilities, applied cryptography, authentication, access control, multilevel security, multilateral security, network attacks and defense, intrusion detection, physical security, copyright protection, privacy mechanisms, security management, system assurance and evaluation, and information warfare. Coverage of high-level concepts such as confidentiality, integrity, and availability applied to hardware, software, and data. Credit not allowed for both CSC 474 and CSC 574.

CSC 481 Game Engine Foundations 3.
Prerequisite: CSC 316.

An introduction to game engines, the technologies underlying computer and console game development. This course will cover engine components, architectures, and designs. Topics include asset management, resource management, event management, memory management, timelines, multithreading, network architectures, and game object models. A sequence of programming assignments will lead students through the implementation of their own game engine, which they will use to design their own game.

CSC 482 Advanced Computer Game Projects 3.
Prerequisite: CSC 481.

Principles of computer game development with emphasis on 3D first-person game engines. Topics include: advanced character behavior control, procedural content generation, large scale mulit-player game design and infrastructure, serious games for education, training and other applications, the game production pipeline and project built on top of a commercial game engine. Consideration of the game production pipeline, including project pitches, requirements and design detail. Programming project with written and oral reporting is required. Enrollment open to CSC majors only.

CSC 484 Building Game AI 3.
Prerequisite: CSC 316.

In this course we will examine Artificial Intelligence (AI) techniques that are used in the design of computer games. We will look at techniques for game playing as well as the design of AI opponents tasked with creating "good experiences" for players. The course will begin with a discussion of general AI, common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning. In a sequence of programming assignments students will create increasingly sophisticated AI implementations. Students will also critically review the projects conducted by graduate students enrolled in CSC584. CSC majors only. Students cannot get credit for both CSC 484 and CSC 584.

CSC 492 Senior Design Project 3.
Prerequisite: CSC 326 ; CSC Majors.

Application of software engineering principles and basic computer science to the total development of a software system. Consideration of the software system design process, including requirements and design detail. Development and evaluation of a prototype accomplished through design team activity. Comprehensive written and oral project report is required. Open to CSC majors.Restricted to students with 6 hours of Computer Science Restricted Elective.

CSC 495 Special Topics in Computer Science 1-6.

Used for the following types of study: readings in the literature of computer science, introductory research projects, major computer programming projects, seminars, or new course development. Work may be done in any CSC area such as software, hardware utilization, programming languages, numerical methods or telecommunications. Departmental Approval Required.

CSC 499 Independent Research in Computer Science 1-6.

Independent investigation of a research problem under faculty supervision. Departmental Approval Required. Individualized/Independent Study and Research courses require a Course Agreement for Students Enrolled in Non-Standard Courses be completed by the student and faculty member prior to registration by the department.

CSC 501 Operating Systems Principles 3.
Prerequisite: CSC 246, CSC 316 and MA 421.

Fundamental issues related to the design of operating systems. Process scheduling and coordination, deadlock, memory management and elements of distributed systems.

CSC 503 Computational Applied Logic 3.
Prerequisite: CSC 333 of LOG 335 or LOG 435.

Introduction to the conceptual and formal apparatus of mathematical logic, to mathematical concepts underlying the process of logical formalization, and to the applications of various logics across a broad spectrum of problems in computer science and artificial intelligence.

CSC 505 Design and Analysis Of Algorithms 3.
Prerequisite: CSC 316 and CSC 226.

Algorithm design techniques: use of data structures, divide and conquer, dynamic programming, greedy techniques, local and global search. Complexity and analysis of algorithms: asymptotic analysis, worst case and average case, recurrences, lower bounds, NP-completeness. Algorithms for classical problems including sorting, searching and graph problems (connectivity, shortest paths, minimum spanning trees).

CSC 506 Architecture Of Parallel Computers 3.

The need for parallel and massively parallel computers. Taxonomy of parallel computer architecture, and programming models for parallel architectures. Example parallel algorithms. Shared-memory vs. distributed-memory architectures. Correctness and performance issues. Cache coherence and memory consistency. Bus-based and scalable directory-based multiprocessors. Interconnection-network topologies and switch design. Brief overview of advanced topics such as multiprocessor prefetching and speculative parallel execution. Credit is not allowed for more than one course in this set: ECE 406, ECE 506, CSC 406.

CSC 510 Software Engineering 3.
Prerequisite: CSC 316 and CSC 226.

An introduction to software life cycle models; size estimation; cost and schedule estimation; project management; risk management; formal technical reviews; analysis, design, coding and testing methods; configuration management and change control; and software reliability estimation. Emphasis on large development projects. An individual project required following good software engineering practices throughout the semester.

CSC 512 Compiler Construction 3.
Prerequisite: CSC 316 and 333.

Theory and practice of compiler writing. Lexical analysis, table driven LL(1), LR(1) and LALR(1) parsers, code generation, flow analysis, run-time storage organization and optimization. Writing a compiler using software tools a significant part of course.

CSC 513 Electronic Commerce Technology 3.
Prerequisite: CSC 501.

Exploration of technological issues and challenges underlying electronic commerce. Distributed systems; network infrastructures; security, trust, and payment solutions; transaction and database systems; and presentation issues. Project required. No Audits.

CSC 515 Software Security 3.
Prerequisite: CSC 510.

Introduces students to the discipline of designing, developing, and testing secure and dependable software-based systems. Students will learn about risks and vulnerabilities, and effective software security techniques. Topics include common vulnerabilities, access control, information leakage, logging, usability, risk analysis, testing, design principles, security policies, and privacy. Project required.

CSC 517 Object-Oriented Design and Development 3.
Prerequisite: CSC 326 or ECE 309.

The design of object-oriented systems, using principles such as the GRASP principles, and methodologies such as CRC cards and the Unified Modeling Language (ULM). Requirements analysis. Design patterns Agile Methods. Static vs. dynamic typing. Metaprogramming. Open-source development practices and tools. Test-first development. Project required, involving contributions to an open-source software project.

CSC 519 DevOps: Modern Software Engineering Practices 3.
Prerequisite: CSC 510 or (graduate or senior standing with at least a 3.0 GPA) and good knowledge of at least one high level programming language.

Modern software development organizations require entire teams of DevOps to automate and maintain software engineering processes and infrastructure vital to the organization. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure. Students will have the chance to build new or extend existing software engineering tools and design a DevOps pipeline.

CSC 520 Artificial Intelligence I 3.
Prerequisite: CSC 316 and either CSC 226 or LOG 201 or LOG 335 or background in symbolic logic.

Introduction to and overview of artificial intelligence. Study of AI programming language such as LISP or PROLOG. Elements of AI problem-solving technique. State spaces and search techniques. Logic, theorem proving and associative databases. Introduction to knowledge representation, expert systems and selected topics including natural language processing, vision and robotics.

CSC 522 Automated Learning and Data Analysis 3.
Prerequisite: CSC 226 or LOG 201, ST 370, MA 305.

Introduction to the problems and techniques for automated discovery of knowledge in databases. Topics include representation, evaluation, and formalization of knowledge for discovery; classification, prediction, clustering, and association methods.Selected applications in commerce, security, and bioinformatics. Students cannot get credit for both CSC 422 and CSC 522.

CSC 530 Computational Methods for Molecular Biology 3.
Prerequisite: CSC 316, Corequisite: CSC 505.

Computer algorithms supporting genomic research: DNA sequence comparison and assembly, hybridization mapping, phylogenetic reconstruction, genome rearrangement, protein folding and threading.

CSC 540 Database Management concepts and Systems 3.
Prerequisite: CSC 316.

Advanced database concepts. Logical organization of databases: the entity-relationship model; the relational data model and its languages. Functional dependencies and normal forms. Design, implementation, and optimization of query languages; security and integrity, consurrency control, transaction processing, and distributed database systems.

CSC 541 Advanced Data Structures 3.
Prerequisite: CSC 316.

Complex and specialized data structures relevant to design and development of effective and efficient software. Hardware characteristics of storage media. Primary file organizations. Hashing functions and collision resolution techniques. Low level and bit level structures including signatures, superimposed coding, disjoint coding and Bloom filters. Tree and related structures including AVL trees, B*trees, tries and dynamic hashing techniques.

CSC 546 Management Decision and Control Systems 3.
Prerequisite: CSC 423 or BUS 541.

Planning, design, and development and implementation of comprehensive computer-based information systems to support management decisions. Formal information systems principles; information requirements analysis; knowledge acquisition techniques; information modeling. Information resource management for quality operational control and decision support; system evaluation, process improvement and cost effectiveness.

CSC 547 Cloud Computing Technology 3.
Prerequisites: CSC 501 and ECE/CSC 570.

Study of cloud computing principles, architectures, and actual implementations. Students will learn how to critically evaluate cloud solutions, how to construct and secure a private cloud computing environment based on open source solutions, and how to federate it with external clouds. Performance, security, cost, usability, and utility of cloud computing solutions will be studied both theoretically and in hands-on exercises. Hardware-, infrastructure-, platform-, software-, security-, and high-performance computing - "as-a-service".

CSC 548 Parallel Systems 3.
Prerequisite: CSC 246 or CSC 451 or CSC 501.

Basic concepts of parallel computation; parallel programming models and algorithm design; load balancing and performance optimization; parallel I/0 and high-end storage systems; high performance parallel applications.

CSC 554 Human-Computer Interaction 3.
Prerequisite: CSC 316.

Basic theory and concepts of human-computer interaction. Human and computational aspects. Cognitive engineering. Practical HCI skills. Significant historical case studies. Current technology and future directions in user interface development.

CSC 555 Social Computing 3.

This course surveys the field of social computing, introducing its key concepts, paradigms, and techniques. Specific topics are selected from the following list: social media and social network analytics, sociological underpinnings, crowdsourcing and surveys, human computation, social mobilization, human decision making, voting theory, judgment aggregation, prediction markets, economic mechanisms, incentives, organizational modeling, argumentation, contracts, norms, mobility and social context, sociotechnical systems, and software engineering with and for social computing. This course incorporates ideas from diverse disciplines (including sociology, psychology, law, economics, political science, logic, statistics, philosophy, business) to provide essential background for future computer science careers in industry and research.

CSC 561 Principles of Computer Graphics 3.
Prerequisite: CSC Majors.

Fundamentals of the OpenGL API. 2D and 3D transformations, perspective and orthographic projection, and the mathematical foundations that underlie these concepts. Geometric primitives, clipping, depth buffering, scan conversion, and rasterization. Lighting, shadows, and texture mapping. Curves and surfaces.

CSC 562 Introduction to Game Engine Design 3.
Prerequisites: CSC 561 or CSC 461 or equivalent course from a previous university.

This course offers an advanced discussion of topics in computer graphics, with an emphasis on rendering techniques and GPU shader programming used in computer game engine design. Students are required to implement a medium-size game program that includes modeling and rendering, 2D physics, and animation of dynamic objects. Students will learn about GPU basics, mathematics of transformations, visual appearance properties, texturing, global illumination, and toon shading in computer games.

CSC 563 Visual Interfaces for Mobile Devices 3.
Prerequisite: CSC 554 or CSC 561.

The conception and creation of effective visual interfaces for mobile devices, including ideation and prototyping for useful mobile applications, the industry and architecture of mobile devices, mobile usage context, computer graphics and interfaces for mobiles, and mobile programming.

CSC 565 Graph Theory 3.
Prerequisite: CSC 226 or MA 351..

Basic concepts of graph theory. Trees and forests. Vector spaces associated with a graph. Representation of graphs by binary matrices and list structures. Traversability. Connectivity. Matchings and assignment problems. Planar graphs. Colorability. Directed graphs. Applications of graph theory with emphasis on organizing problems in a form suitable for computer solution.

CSC 568 Enterprise Storage Architecture 3.
Prerequisite: CSC 246 and CSC 401 and CSC 316.

An introduction to storage systems architecture in an enterprise. Begins with a review of the individual components of a system (eg, hard disk drives, network interfaces), and shows how to aggregate those into storage systems. Tradeoffs involving factors such as cost, complexity, availability, power and performance. Discussion of information management strategies, including data migration. Guest lectures by representatives from local industry. Students work in teams on a semester-long project.

CSC 570 Computer Networks 3.
Prerequisite: ECE 206 or CSC 312, ST 371, CSC 258 and Senior standing or Graduate standing.

General introduction to computer networks. Discussion of protocol principles, local area and wide area networking, OSI stack, TCP/IP and quality of service principles. Detailed discussion of topics in medium access control, error control coding, and flow control mechanisms. Introduction to networking simulation, security, wireless and optical networking.

CSC 573 Internet Protocols 3.
Prerequisite: CSC/ECE 570.

Principles and issues underlying provision of wide area connectivity through interconnection of autonomous networks. Internet architecture and protocols today and likely evolution in future. Case studies of particular protocols to demonstrate how fundamental principles applied in practice. Selected examples of networked clinet/server applications to motivate the functional requirements of internetworking. Project required.

CSC 574 Computer and Network Security 3.
Prerequisite: (CSC 316) and (CSC 401 or CSC/ECE 570).

Security policies, models, and mechanisms for secrecy, integrity, and availability. Basic cryptography and its applications; operating system models and mechanisms for mandatory and discretionary controls; introduction to database security; securityin distributed systems; network security (firewalls, IPsec, and SSL); and control and prevention of viruses and other rogue programs.

CSC 575 Introduction to Wireless Networking 3.
Prerequisite: ECE/CSC 570.

Introduction to cellular communications, wireless local area networks, ad-hoc and IP infrastructures. Topics include: cellular networks, mobility mannagement, connection admission control algorithms, mobility models, wireless IP networks, ad-hoc routing, sensor networks, quality of service, and wireless security.

CSC 576 Networking Services: QoS, Signaling, Processes 3.
Prerequisite: CSC/ECE 570.

Topics related to networking services, signaling for setting up networking services, such as SIP and IMS, networking architectures for providing QoS for networking services, such as MPLS, DiffServ and RAC, signaling protocols for setting up QoS connections in the transport stratum, such as LDP and RSVP-TE, video-based communications, and capacity planning models for dimensioning services.

CSC 577 Switched Network Management 3.

Topics related to design and management of campus enterprise networks, including VLAN design; virtualization and automation methodologies for management; laboratory use of open space source and commercial tools for managing such networks.

CSC 579 Introduction to Computer Performance Modeling 3.
Prerequisite: CSC 312 or ECE 206 and MA 421.

Workload characterization, collection and analysis of performance data, instrumentation, tuning, analytic models including queuing network models and operational analysis, economic considerations.

CSC 580 Numerical Analysis I 3.
Prerequisite: MA 405; MA 425 or MA 511; high-level computer language.

Algorithm behavior and applicability. Effect of roundoff errors, systems of linear equations and direct methods, least squares via Givens and Householder transformations, stationary and Krylov iterative methods, the conjugate gradient and GMRES methods, convergence of method.

CSC 582 Computer Models of Interactive Narrative 3.

A theoretical and practical study of the computational models supporting the creation of interactive narrative systems. Topics include basic introductions to cognitive, linguistic and film theoretic models of narrative; representations and reasoning techniques from artificial intelligence related to the creation of storylines, dialog, camera control and other features of narrative in text-based and/or 3D virtual worlds; mechanisms for controlling character behavior in multi-agent multi-user stories; and applications of these techniques ranging from interactive entertainment to educational software to training simulations.

CSC 583 Introduction to Parallel Computing 3.
Prerequisite: CSC 302 or MA 402 or MA/CSC 428 or MA/CSC 580.

Introduction to basic parallel architectures, algorithms and programming paradigms; message passing collectives and communicators; parallel matrix products, domain decomposition with direct and iterative methods for linear systems; analysis of efficiency, complexity and errors; applications such as 2D heat and mass transfer.

CSC 584 Building Game AI 3.
Prerequisite: CSC 316.

In this course we will examine Artificial Intelligence (AI) techniques that are used in the design of computer games. We will look at techniques for game playing as well as the design of AI opponents tasked with creating "good experiences" for players. The course will begin with a discussion of general AI, common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning. In a sequence of programming assignments students will create increasingly sophisticated AI implementations. Students will also critically review the projects conducted by graduate students enrolled in CSC584. CSC majors only. Students cannot get credit for both CSC 484 and CSC 584.

CSC 591 Special Topics In Computer Science 1-6.
Prerequisite: B average in technical subjects.

Topics of current interest in computer science not covered in existing courses.

CSC 600 Computer Science Graduate Orientation 1.

Introduction for new graduate students to (a) information about graduate program, department, and university resources, and (b) research projects conducted by CSC faculty.

CSC 630 Master's Independent Study 1-3.

Individual investigation of topics under the direction of member(s) of the graduate faculty.

CSC 685 Master's Supervised Teaching 1-3.
Prerequisite: Master's student.

Teaching experience under the mentorship of faculty who assist the student in planning for the teaching assignment, observe and provide feedback to the student during the teaching assignment, and evaluate the student upon completion of the assignment.

CSC 688 Non-Thesis Masters Continuous Registration - Half Time Registration 1.
Prerequisite: Master's student.

For students in non-thesis master's programs who have completed all credit hour requirements for their degree but need to maintain half-time continuous registration to complete incomplete grades, projects, final master's exam, etc.

CSC 689 Non-Thesis Master Continuous Registration - Full Time Registration 3.
Prerequisite: Master's student.

For students in non-thesis master's programs who have completed all credit hour requirements for their degree but need to maintain full-time continuous registration to complete incomplete grades, projects, final master's exam, etc. Students may register for this course a maximum of one semester.

CSC 690 Master's Examination 1-9.
Prerequisite: Master's student.

For students in non thesis master's programs who have completed all other requirements of the degree except preparing for and taking the final master's exam.

CSC 693 Master's Supervised Research 1-9.
Prerequisite: Master's student.

Instruction in research and research under the mentorship of a member of the Graduate Faculty.

CSC 695 Master's Thesis Research 1-9.
Prerequisite: Master's student.

Thesis research.

CSC 696 Summer Thesis Research 1.
Prerequisite: Master's student.

For graduate students whose programs of work specify no formal course work during a summer session and who will be devoting full time to thesis research.

CSC 699 Master's Thesis Preparation 1-9.
Prerequisite: Master's student.

For students who have completed all credit hour requirements and full-time enrollment for the master's degree and are writing and defending their thesis.

CSC 705 Operating Systems Security 3.
Prerequisite: CSC 501.

Fundamentals and advanced topics in operating system (OS) security. Study OS level mechanisms and policies in investigating and defending against real-world attacks on computer systems, such as self-propagating worms, stealthy rootkits and large-scale botnets. OS security techniques such as authentication, system call monitoring, as well as memory protection. Introduce recent advanced techniques such as system-level randomization and hardware virtualization.

CSC 707 Automata, Languages and Computability Theory 3.
Prerequisite: CSC 226 required, CSC 333 recommended.

Formal models of language and computation; finite automata and regular languages, pushdown automata and context-free languages, Turing machines. Relative power of models, Chomsky hierarchy. Inherent complexity of problems: undecidability, computational complexity, intractable problems.

CSC 710 Software Engineering as a Human Activity 3.
Prerequisite: CSC 510.

This course addresses the human aspect of software engineering, by studying the people who practice it. Students will explore software engineering as traditionally defined, and also consider techniques that transform how we understand software engineering, such as methods from psychology and sociology. Students will study the usability of software engineering tools, the psychology of programming, performance of software developers, experimental methods in observing software engineers, distributed development and coordination, and cultural differences between software developers.

CSC 712 Software Testing and Reliability 3.
Prerequisite: CSC 510.

An advanced introduction to software testing and reliability. The course is a balanced mixture of theory, practice, and application. Methods, techniques, and tools for testing software and producing reliable and secure software are used and analyzed. Software reliability growth models and techniques for improving and predicting software reliability are examined, and their practical use is demonstrated. Good knowledge of C++ or Java. Knowledge of the basics of statistics, calculus, and linear algebra.

CSC 714 Real Time Computer Systems 3.
Prerequisite: CSC 451 or CSC 501.

Design and implementation of computer systems required to provide specific response times. Structure of a real-time kernel, fixed and dynamic priority scheduling algorithms, rate monotonic scheduling theory, priority inheritance protocols, real-timebenchmarks, case study of a real-time kernel.

CSC 720 Artificial Intelligence II 3.
Prerequisite: CSC 520.

A second course in artificial intelligence emphasizing advanced concepts of AI including logic programming, automatic programming, natural language understanding, visual perception by machine, learning and inference, intelligent computer-aided instruction, knowledge representation, robotics and other topics to be chosen by instructor. Students asked to write programs in AI programming language such as LISP and PROLOG.

CSC 722 Advanced Topics in Machine Learning 3.
Prerequisite: CSC 520.

A broad range of advanced topics in machine learning, the building of computer-based systems that can adapt to their environment and learn from their own experience. Theory of learnability, technical details of various learning methods, combination of multiple methods, evaluation of methods, and related topics (at the discretion of the instructor).

CSC 724 Advanced Distributed Systems 3.
Prerequisite: CSC 501 or equivalent. Programming in C++ or Java in Unix environments.

Principles in the design and implementation of modern distributed systems; recent techniques used by real-world distributed systems such as peer-to-peer file sharing, enterprise data center, and internet search engines; state-of-the-art architectures, algorithms, and performance evaluation methodologies in distributed systems.

CSC 742 Database Management Systems 3.
Prerequisite: CSC 431 or 541.

Database concepts. Database design. Data models: entity-relationship and relational. Data manipulation languages including SQL. Data Dictionaries. Query processing. Concurrency. Software development environments using a database system. Expert, object-oriented, multimedia and distributed database systems. Database systems architecture. Use of a commercial database management system.

CSC 743 Secure Data Management 3.
Prerequisite: CSC/ECE 574 and (CSC 440 or CSC 540). Background in databases and basic security concepts required..

Advanced topics in secure data management with techniques in traditional database management systems as well as in recent advances in emerging areas. Emphasis on new security issues and challenges imposed by the Internet and the Web on cross-organization data sharing and management. Example topics include XML, data management in P2P, trust management, data authorship, and the integration of security and privacy policies with information systems.

CSC 750 Service-Oriented Computing 3.
Prerequisite: CSC 540: Database Management Concepts and Systems.

Concepts, theories, and techniques for computing with services. This course examines architectures for Web applications based on the classical publish, find, and bind triangle, but formulates it at a higher level. It considers sophisticated approaches for the description, discovery, and engagement of services, especially over the Web and the Grid. This course emphasizes service composition. Key topics include semantics, transactions, processes, agents, quality of service, compliance, and trust.

CSC 761 Advanced Topics in Computer Graphics 3.
Prerequisite: Graduate standing in Computer Science.

Understanding and discussing current advances and research topics in computer graphics. Possible topics include nonphotorealistic rendering, modeling natural phenomena, illumination and rendering techniques, model simplification, animation, visualization, graphics hardware. Learning to critique research papers from important venues in the computer graphics field. Learning to read, interpret, and present computer graphics research papers in a conference-type environment.

CSC 762 Computer Simulation Techniques 3.
Prerequisite: ST 512 and a scientific programming language.

Basic discrete event simulation methodology: random number generators, simulation designs, validation, analysis of simulation output. Applications to various areas of scientific modeling. Simulation language such as SLAM and GPSS. Computer assignments and projects.

CSC 766 Code Optimization for Scalar and Parallel Programs 3.
Prerequisite: CSC 512, or CSC 548, or CSC 501.

Advanced research issues in code optimization for scalar and parallel programs; program analysis, scalar and parallel optimizations as well as various related advanced topics.

CSC 772 Survivable Networks 3.

Principles of network and service continuity and related metrics; the theory of network availability, survivability, and restoration; a comprehensive coverage of network architectures, protocols, algorithms, and related technology for survivability; advanced topics in network survivability; hands-on experience in the implementation of protocols and software for survivable systems and the operation of survivable networks.

CSC 773 Advanced Topics in Internet Protocols 3.
Prerequisite: CSC/ECE 573.

Cutting-edge concepts and technologies to support internetworking in general and to optimize the performance of the TCP/IP protocol suite in particular. Challenges facing and likely evolution for next generation intenetworking technologies. This course investigates topics that include, but may be not limited to: Internet traffic measurement, characteriztion and modeling, traffic engineering, network-aware applications, quality of service, peer-to-peer systems, content-distribution networks, sensor networks, reliable multicast, and congestion control.

CSC 774 Advanced Network Security 3.
Prerequisite: CSC/ECE 570, CSC/ECE 574.

A study of network security policies, models, and mechanisms. Topics include: network security models; review of cryptographic techniques; internet key management protocols; electronic payments protocols and systems; intrusion detection and correlation; broadcast authentication; group key management; security in mobile ad-hoc networks; security in sensor networks.

CSC 775 Advanced Topics in Wireless Networking 3.
Prerequisite: ECE/CSC 575.

Reviews the current state of research in wireless networks, network architectures, and applications of wireless technologies; students will design, organize, and implement or simulate systems in a full-semester research project. For students with background in networking and communications who wish to explore research and development topics.

CSC 776 Design and Performance Evaluation of Network Systems and Services 3.
Prerequisite: CSC(ECE) 570 and CSC(ECE) 579.

Introduction to the design and performance evaluation of network services. Topics include top-down network design based on requirements, end-to-end services and network system architecture, service level agreements, quantitative performance evaluation techniques. Provides quantitative skills on network service traffic and workload modeling, as well as, service applications such as triple play, internet (IPTV), Peer-to-peer (P2P), voice over IP (VoIP), storage, network management, and access services.

CSC 777 Telecommunications Network Design 3.
Prerequisite: CSC(ECE) 570.

Analytic modeling and topological design of telecommunications networks, including centralized polling networks, packet switched networks, T1 networks, concentrator location problems, routing strategies, teletraffic engineering and network reliability.

CSC 780 Numerical Analysis II 3.
Prerequisite: MA 580.

Approximation and interpolation, Fast Fourier Transform, numerical differentiation and integration, numerical solution of initial value problems for ordinary differential equations.

CSC 791 Advanced Topics In Computer Science 1-6.

Advanced topics of current interest in computer science not covered by existing courses.

CSC 801 Seminar in Computer Science 1-3.
Prerequisite: Graduate standing.

Faculty and graduate student research presentations and discussions centered around current research problems in Computer Science and advanced theories in these areas. Students are expected to make presentations of published works and, depending onthe course credit received and their academic degree progress, present their own research results. Critical discussions of the various research approaches and results and their relationships based on the presentations and additional readings and research. Departmental Approval Required.

CSC 830 Doctoral Independent Study 1-3.

Individual investigation of advanced topics under the direction of member(s) of the graduate faculty.

CSC 885 Doctoral Supervised Teaching 1-3.
Prerequisite: Doctoral student.

Teaching experience under the mentorship of faculty who assist the student in planning for the teaching assignment, observe and provide feedback to the student during the teaching assignment, and evaluate the student upon completion of the assignment.

CSC 890 Doctoral Preliminary Exam 1-9.
Prerequisite: Doctoral student.

For students who are preparing for and taking written and/or oral preliminary exams.

CSC 893 Doctoral Supervised Research 1-9.
Prerequisite: Doctoral student.

Instruction in research and research under the mentorship of a member of the Graduate Faculty.

CSC 895 Doctoral Dissertation Research 1-9.
Prerequisite: Doctoral student.

Dissertation research.

CSC 896 Summer Dissertation Research 1.
Prerequisite: Doctoral student.

For graduate students whose programs of work specify no formal course work during a summer session and who will be devoting full time to thesis research.

CSC 899 Doctoral Dissertation Preparation 1-9.
Prerequisite: Doctoral student.

For students who have completed all credit hour, full-time enrollment, preliminary examination, and residency requirements for the doctoral degree, and are writing and defending their dissertations.