Computer Science (CSC)
This course explores the principles of computer science while emphasizing the relevance of computing to students and to society. Students will learn about beautiful computing applications that have changed the world and how computing empowers discovery and innovation. Students will learn the joy of programming a computer using a friendly, graphical language, capable of creating apps, simulations, and games. Students who complete the course will be able to solve meaningful problems with computers, apply design processes to take an idea from concept to implementation, develop a computer program, and analyze computing artifacts from both design and computing perspectives. Students will complete a substantial team programming project related to their interests. 20% of seats will be restricted to Computer Science or CS-Intended students. Enrolling students must not have received credit for or a grade in CSC 116 or CSC 200.
GEP Interdisciplinary Perspectives
Typically offered in Fall and Spring
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. Most seats reserved for Civil, Construction, and Environmental Engineering majors.
Typically offered in Fall and Spring
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.
Typically offered in Fall, Spring, and Summer
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. Most seats reserved for Aerospace, Mechanical, and Biomedical Engineering majors.
Typically offered in Fall and Spring
An introductory course in computing in Java. Emphasis on algorithm development and problem solving. Careful and methodical development of Java applications from specifications; documentation and style; appropriate use of control structures; classes and methods; data types and data abstraction; object-oriented programming and design; software testing. Most seats reserved for Computer Science majors.
Typically offered in Fall, Spring, and Summer
The second course in computing, intended for majors and minors. Emphasis is on exploring encapsulation; polymorphism; composition; inheritance; finite state machines; linear data structures (including array lists, linked lists, stacks, queues, and the tradeoffs in implementation); and recursion (including recursive linked lists) in the context of the software development lifecycle including the processes and practices for designing, implementing, and testing high quality software.
Typically offered in Fall, Spring, and Summer
Laboratory course to accompany CSC 216 lecture course. Application of the software processes and practices to design, implement, and test the development of software solutions requiring composition; inheritance; finite state machines; and linear data structures, including recursive linked lists.
Typically offered in Fall, Spring, and Summer
Emphasis on counting (combinatorics), formal proofs, and applications of discrete mathematics. Topics will include (but are not limited to): permutations, combinations, probability, propositional logic, predicate calculus, proof approaches, induction, modular arithmetic, recurrence relations, asymptotic growth of functions, and introduction to graph theory. This course assumes knowledge of topics covered in high-school Algebra I and II.
Typically offered in Fall, Spring, and Summer
In this course, students will develop skills in several important areas. First, we'll get some experience working in C, a language that lets us think like procedural rather than object-oriented developers. Also, being a fairly low-level language, C lets us see and control more of what's going on in the hardware. This can help us think about using the hardware more effectively, whether we're actually programming in C or in a higher-level language. While we learn C, we'll also learn about tools and techniques that help us build, manage, debug and analyze software projects.
Prerequisite: CSC 216 with a C or better.
Typically offered in Fall, Spring, and Summer
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.
Typically offered in Fall, Spring, and Summer
This course prepares students to understand fundamental issues in operating systems. Students will be introduced to multi-threading, synchronization, scheduling, virtual memory, security and communication/networking. The material will be covered in terms of operating systems services exported by the operating systems interface. Current trends will be discussed to give a better understanding of future developments likely to be included in operating systems.
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: E 115 or equivalent knowledge of EOS/Unity system
Typically offered in Spring only
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.
Prerequisite: Programming knowledge
Typically offered in Fall only
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.
GEP Interdisciplinary Perspectives
Typically offered in Spring only
This course is for teaching assistants (TA) and graders of undergraduate computer science service courses. This survey course will cover effective communication skills, working with diverse students, and educational psychology. Students will be expected to complete weekly assignments and a presentation based final. Departmental Approval Required; students who enroll in the course must be employed as a TA/grader during the semester of instruction. Student must be a recently hired Teaching Assistant/Grader in the CSC department.
Typically offered in Fall and Spring
Special topics in CSC at the early undergraduate level.
Introductory cybersecurity topics that may cover areas like cybersecurity policy, law, attacks and defenses, ethics, forensics, social engineering, usability, or privacy. Topics will vary by section and semester. Course may be taken multiple times only if topic is different.
Typically offered in Fall and Spring
Introduction to computer science research methods for first or second year Computer Science undergraduate students. Topics include creating research problems, reading research papers, conducting a literature review, designing research studies, qualitative and quantitative data analysis, communication of research findings, teamwork, and research directions. Students will work on teams to complete a mentored research proposal.
Typically offered in Fall only
Mentored research experience in Computer Science. The experience must be arranged in advance by the student and approved by the Department of Computer Science prior to enrollment. A minimum of 45 hours must be completed for each credit hour earned. A final report approved by the faculty mentor and the department are required. Individualized/Independent Research courses require a "Course Agreement for Students Enrolled in Non-Standard Courses" to be completed by the student and faculty member prior to registration by the department. CSC 299 may not be repeated.
Typically offered in Spring only
Numerical computations with digital computers; floating point arithmetic and implications of round-off error; Monte Carlo methods. 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; optimization.
Typically offered in Fall only
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.
Prerequisite: CSC 216 with a grade of C or better and (CSC 226 or MA 225) with a grade of C or better
Typically offered in Fall, Spring, and Summer
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.
Typically offered in Fall and Spring
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.
Typically offered in Fall and Spring
This course explores client-server computing on the World Wide Web. The course focuses on the architecture of web-based full-stack applications as well as currently accepted industry's best practices. Students gain practical exposure to concepts, tools, and technology associated with web development through hands-on projects.
Prerequisite: Grade of C or better in CSC 216
Typically offered in Fall and Spring
Computers have become ubiquitous and advances in computing power and accessibility have enabled applications that were speculation a generation ago. Computing professionals, as the gatekeepers of this technology, have significant responsibilities to society. This course examines the role of the computing professional in modern society, focusing on the ethical and moral responsibilities of the profession. Additional topics will include moral/ethical decision-making, whistle-blowing, global organizations, licensure, and emerging technologies.
Requirement: Junior Standing
Typically offered in Fall and Spring
This course provides an introduction to fundamental concepts in the design and implementation of computer networks, their protocols, and applications with a particular emphasis on the Internet's TCP/IP, OSPF/BGP, Ethernet, IEEE 802.11 protocol suite. Topics to be covered include: network architectures, packet/circuit switching, network applications, sockets, reliable data transport, flow control, congestion control, routing, link protocols, addressing, local area networks, wireless networks, mobility, management, network security, software defined networking and the design of network services. Credit is not allowed for both CSC 401 and ECE 407.
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: CSC 401
Typically offered in Spring only
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.
Corequisite: CSC 246
Typically offered in Spring only
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.
Typically offered in Fall and Spring
This course focuses on software product management from the software engineering perspective, as well as how those principles apply to management at the individual, team, and organizational levels. Topics include challenges in product management, road mapping, understanding and asserting business value, Objectives and Key Results (OKRs), risk management and task prioritization. This course includes substantial reading expectations and in-class exercises. Active and consistent participation throughout the semester is required.
Prerequisite: CSC 326
Typically offered in Fall and Spring
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.
Typically offered in Fall and Spring
The course will concentrate on the theory and practice of compiler-writing. Topics to be covered will include techniques for parsing, code generation, and optimization. Furthermore, the theoretical underpinnings of compilers such as LR parsing will be covered. Finally, the students will be exposed to compiler construction tools, and will obtain hands-on experience in building a compiler for a small programming language. Besides the listed prerequisite courses, other helpful courses include CSC 253, CSC 224, CSC 234, and MA 121.
Typically offered in Fall only
Cryptography is the study of mathematical techniques for securing digital information, systems and distributed computation against adversarial attacks. In this class you will learn the concepts and the algorithms behind the most used cryptographic protocols: you will learn how to formally define security properties and how to formally prove/disprove that a cryptographic protocol achieves a certain security property. You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret (zero-knowledge proof), or computing the output of a function without ever knowing the input of the function (secure computation). Finally, we will look closely at one of the recent popular application of cryptography: the blockchain technology. Additionally, graduate students will study some of the topics in greater depth.
Typically offered in Spring only
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.
Corequisite: CSC 326
Typically offered in Fall only
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.
Typically offered in Spring only
This course is offered alternate years
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.
Typically offered in Fall and Spring
This course provides an introduction to concepts and methods for extracting knowledge or other useful forms of information from data. This activity, also known under names including data mining, knowledge discovery, and exploratory data analysis, plays an important role in modern science, engineering, medicine, business, and government. Students will apply supervised and unsupervised automated learning methods to extract patterns, make predictions and identify groups from data. Students will also learn about the overall process of data collection and analysis that provides the setting for knowledge discovery, and concomitant issues of privacy and security. Examples and projects introduce the students to application areas including electronic commerce, information security, biology, and medicine. Students cannot get credit for both CSC 422 and CSC 522.
Typically offered in Fall and Spring
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.
Prerequisite: (MA 341 or MA 301) and ( CSC 111 or CSC 112 or CSC 113 or CSC 114 or CSC 116 or MA 116 or PY 251 or ST 114 or ECE 209)
Typically offered in Fall only
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.
Prerequisite: (MA 305 or MA 405) and (CSC 111 or CSC 112 or CSC 113 or CSC 114 or CSC 116 or MA 116 or PY 251 or ST 114 or ECE 209)
Typically offered in Spring only
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.
Typically offered in Fall and Spring
Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy. This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. ST 370 is recommended.
P: CSC 316
Typically offered in Spring only
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.
Typically offered in Fall only
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.
Prerequisite: (MA 305 or MA 405) and (ST 305 or ST 312 or ST 370 or ST 372 or ST 380) and (CSC 111 or CSC 112 or CSC 113 or CSC 114 or CSC 116 or ST 114 or ST 445)
Typically offered in Fall only
The course will provide an introduction and overview to cloud computing principles and architectures at the undergraduate level. The course will start by reviewing the history of centralized and distributed computing and trace how developments over the years have resulted in today's current cloud computing technology. The course will provide an in-depth overview of cloud types and services, virtualization, cloud architectures for both private and public cloud offerings, computer networking topics of relevance to cloud computing, cloud computing security and both the economic and legal aspects of cloud computing systems along with advanced topics such as cloud storage and cloud hosted databases. The course will also include hands-on installation and operation of the NC State VCL private cloud computing system on a dedicated compute node assigned to each student and an individual account on the Amazon AWS public cloud service for gaining practical experience with cloud computing instances.
Prerequisite: CSC 246
Typically offered in Fall only
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.
Typically offered in Fall only
CSC 453: Introduction to Internet of Things (IoT) Systems is a senior-level CSC restricted undergraduate elective on the concepts, protocols, techniques and design methodology underlying current and emerging networked wireless sensor/actuator systems coming to be known as IoT systems, at the intersection of physical computing, semantics and analytics, wireless communications, and networked distributed systems. Design considerations of such systems include diverse metrics such as delay, stability, privacy, expandability. The course includes (i) descriptive material on basic concepts and techniques appropriate to sensor networks, and analytics and semantics concepts appropriate to IoT systems, and (ii) hands-on work with a sampling of representative sensors and actuators, small format computers, networked application programming, and validation in real physical environments. The course includes a term project with assigned teams and project areas to design and implement a complete small IoT system. Students will be expected to purchase equipment for the course, costing about $70-$130.
Typically offered in Spring only
A survey of concepts and techniques for user interface design and human computer interaction. Emphasizes user-centered design, interface development techniques, and usability evaluation.
Typically offered in Spring only
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.
Typically offered in Fall only
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.
Typically offered in Fall only
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++.
Typically offered in Fall only
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.
Prerequisite: CSC 461
Typically offered in Spring only
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.
Prerequisite: CSC 246
Typically offered in Spring only
Introduction to programming for quantum computers. Introduction to the gate-level model of quantum computing, including quantum bits (qubits) and quantum information. Manipulation of quantum states using gates, circuits, and algorithms. Exploration of problems for which quantum computing provides an advantage over classical computing.
Typically offered in Spring only
Exploration of three modern or emerging topics in Cybersecurity beyond the core cybersecurity curriculum. These topics may vary by semester. Enrollment is open to CSC majors only.
Typically offered in Fall only
Application of cybersecurity principles and basic computer science to solve a cybersecurity problem. Project with comprehensive written and oral project report is required. Enrollment is open to CSC majors only.
Prerequisite: CSC 471 and Senior Status
Typically offered in Spring only
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.
Typically offered in Fall only
In this course we will examine some of the components of a commercial strength game engine. We will survey different genres of games, using some of the unique design challenges each genre provides as a motivation for an in-depth examination of the affordances games engines provide for designing games of that genre. We will cover topics ranging from data structures, resource management, game loops and logical timing systems, scripting, error logging, and networking. 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.
Typically offered in Fall only
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.
Prerequisite: CSC 481
Typically offered in Spring only
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.
Prerequisite: CSC 316
Typically offered in Spring only
Computational Visual Narrative is a project-based course for developing computational media with visual computing tools such as game engines. Within this course we will gain familiarity with the repertoire and practice of individuals involved in the design and development of digital interactive experiences. In the process, you will gain an understanding of the underlying concepts, techniques and technologies of computational and digital systems, software development and its role and potential in narrative practice.
Typically offered in Spring only
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.
Prerequisite: CSC 326
Typically offered in Fall and Spring
Topics of current interest in computer science not covered in existing courses. Each special topics course will have one or more prerequisites from the Computer Science core courses. CSC 495 may be repeated for credit if a different topic is chosen.
Typically offered in Fall, Spring, and Summer
Detailed investigation of computing topics of particular interest to advanced undergraduate computer science majors under faculty direction. Appropriate topics may include software development projects, tutorial work on new or emerging technologies, or exploration of an emerging computing topic. The experience must be arranged in advance by the student and approved by the Department of Computer Science prior to enrollment. A minimum of 45 hours must be completed for each credit hour earned. An independent study proposal and final report approved by the faculty mentor and the department are required. Individualized/Independent Study 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. At most 6 credit hours of CSC 498 and/or CSC 499 may be applied to degree.
Typically offered in Fall, Spring, and Summer
Independent investigation of a research problem under the supervision of a faculty member in the Department of Computer Science. The experience must be arranged in advance by the student and approved by the Department of Computer Science prior to enrollment. A minimum of 45 hours must be completed for each credit hour earned. An independent research proposal and final report approved by the faculty mentor and the department are required. Individualized/Independent Research courses require a "Course Agreement for Students Enrolled in Non-Standard Courses" to be completed by the student and faculty member prior to registration by the department. At most 6 credit hours of CSC 498 and/or CSC 499 may be applied to degree.
Typically offered in Fall, Spring, and Summer
Fundamental issues related to the design of operating systems. Process scheduling and coordination, deadlock, memory management and elements of distributed systems.
Typically offered in Fall and Spring
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.
Typically offered in Fall only
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).
Typically offered in Fall, Spring, and Summer
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.
Typically offered in Fall, Spring, and Summer
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.
Typically offered in Fall, Spring, and Summer
The course will concentrate on the theory and practice of compiler-writing. Topics to be covered will include techniques for parsing, code generation, and optimization. Furthermore, the theoretical underpinnings of compilers such as LR parsing will be covered. Finally, the students will be exposed to compiler construction tools, and will obtain hands-on experience in building a compiler for a small programming language. Besides the listed prerequisite courses, other helpful courses include CSC 253, CSC 224, CSC 234, and MA 121.
Typically offered in Fall only
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.
Prerequisite: CSC 501
Typically offered in Spring only
Cryptography is the study of mathematical techniques for securing digital information, systems and distributed computation against adversarial attacks. In this class you will learn the concepts and the algorithms behind the most used cryptographic protocols: you will learn how to formally define security properties and how to formally prove/disprove that a cryptographic protocol achieves a certain security property. You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret (zero-knowledge proof), or computing the output of a function without ever knowing the input of the function (secure computation). Finally, we will look closely at one of the recent popular application of cryptography: the blockchain technology. Additionally, graduate students will study some of the topics in greater depth.
Typically offered in Fall only
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.
Prerequisite: CSC 510
Typically offered in Spring only
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.
Typically offered in Fall and Spring
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.
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
Typically offered in Fall and Spring
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.
Typically offered in Fall and Spring
This course provides an introduction to concepts and methods for extracting knowledge or other useful forms of information from data. This activity, also known under names including data mining, knowledge discovery, and exploratory data analysis, plays an important role in modern science, engineering, medicine, business, and government. Students will apply supervised and unsupervised automated learning methods to extract patterns, make predictions and identify groups from data. Students will also learn about the overall process of data collection and analysis that provides the setting for knowledge discovery, and concomitant issues of privacy and security. Examples and projects introduce the students to application areas including electronic commerce, information security, biology, and medicine. Students cannot get credit for both CSC 422 and CSC 522.
Typically offered in Fall and Spring
Computer algorithms supporting genomic research: DNA sequence comparison and assembly, hybridization mapping, phylogenetic reconstruction, genome rearrangement, protein folding and threading.
Typically offered in Fall only
This course is offered alternate odd years
Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy. This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. ST 370 is recommended but not mandatory.
Prerequisite: CSC 316
Typically offered in Fall only
This class will: explore several aspects of security research with the goal of understanding the attacker's mindset; help the students to develop a foundation and a well-rounded view of security research; and cover some of the state-of-the-art attack/defense techniques and ongoing research activities in a number of topics in software security, web security, privacy and network security.
Typically offered in Spring only
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.
Prerequisite: CSC 316
Typically offered in Fall and Spring
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.
Prerequisite: CSC 316
Typically offered in Spring only
Techniques for the design of neural networks for machine learning. An introduction to deep learning. Emphasis on theoretical and practical aspects including implementations using state-of-the-art software libraries. Requirement: Programming experience (an object-oriented language such as Python), linear algebra (MA 405 or equivalent), and basic probability and statistics.
Typically offered in Fall and Spring
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.
Prerequisite: CSC 423 or BUS 541
Typically offered in Fall only
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-, - "as-a-service".
Typically offered in Spring only
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.
Typically offered in Spring only
This class prepares you to understand research challenges in autonomous driving. The delivery of the material will be split between lectures and research papers, the latter being presented by students. You will be introduced to a selection of fundamental concepts from embedded, real-time systems and machine learning. In parallel, students will participate in presenting research papers on topics related to and advancing on the fundamental concepts of autonomous driving.
Prerequisite: Graduate Standing
Typically offered in Spring only
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.
Prerequisite: CSC 316
Typically offered in Spring only
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.
Typically offered in Fall only
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.
Prerequisite: CSC Majors
Typically offered in Fall only
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.
Typically offered in Spring only
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.
Typically offered in Spring only
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.
Typically offered in Spring only
This course is offered alternate even years
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.
Typically offered in Spring only
This course provides an introduction to quantum computing. It will feature the three pillars, quantum system architectures, algorithms, and programming of quantum computing. Its focus is on the applicability of problems to quantum computing from a practical point of view, with only the necessary foundational coverage of the physics and theoretical aspects to understand quantum computing. Both simulation software and actual quantum computers will be utilized to prototype problem solutions. This should develop a better understanding of how problems are transformed into quantum algorithms and what programming language support is best suited for a given application area. The course will require significant background reading plus presentations, projects, and exercises per participant.
Prerequisite: Knowledge of Python programming and linear algebra
Typically offered in Fall only
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.
Prerequisite: ECE 206 or CSC 312, ST 371, CSC 258 and Senior standing or Graduate standing
Typically offered in Fall, Spring, and Summer
This course introduces advanced optimization theory and algorithms with rapidly growing applications in machine learning, systems, and control. Methods are given to obtain a non-dynamic system's extremum (minimum or maximum) and use these methods in various engineering applications. This course aims to prepare graduate students with a solid theoretical and mathematical foundation and applied techniques at the intersection of optimization, algorithms, and machine learning to conduct advanced research in related fields. Students will gain expertise in designing algorithms based on common techniques, dealing with intractable problems, and implementing algorithms given the description. Students must undertake a semester-long project (at Google Colab) that practices the optimization theory and algorithms in their areas of interest. These projects can replicate or improve a known solving strategy for a given optimization problem to assess and compare the performance.
Restriction: Introductory courses in probability and linear algebra and Graduate Student Standing
Typically offered in Fall only
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.
Prerequisite: CSC/ECE 570
Typically offered in Fall, Spring, and Summer
This course presents foundational concepts of computer and network security and privacy. It covers a wide breadth of concepts, including; Fundamentals of computer security and privacy, including security models, policies, and mechanisms; Cryptography for secure systems, including symmetric and asymmetric ciphers, hash functions, and integrity mechanisms; Authentication of users and computers; Network attacks and defenses at the network and application layers; Common software vulnerabilities and mitigation strategies; Secure operating systems and seminal access control models and policies; Principles of intrusion detection; Privacy, including considerations of end-user technologies.
Typically offered in Fall and Spring
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.
Prerequisite: ECE/CSC 570
Typically offered in Spring only
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.
Prerequisite: CSC/ECE 570
Typically offered in Fall and Spring
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.
Typically offered in Fall only
The course provides an introduction to the theoretical fundamentals and practical/experimental aspects of Long Term Evolution (LTE) and 5G systems. A basic understanding of digital communications and radio access networks is required. Following topics will be studied: 1) User and control plane protocols, 2) physical layer for downlink, 3) physical layer for uplink, 4) practical deployment aspects, 5) LTE-Advanced, 6) 5G communications. Fundamental concepts to be covered in the context of LTE/5G systems include OFDMA/SC-FDMA, synchronization, channel estimation, link adaptation, MIMO, scheduling, and millimeter wave systems. Students are recommended to have the prior knowledge gained from ECE 570 or ECE 582 before taking this course. The course will also require using Matlab software for homeworks, including its LTE and 5G toolboxes.
Typically offered in Fall only
Workload characterization, collection and analysis of performance data, instrumentation, tuning, analytic models including queuing network models and operational analysis, economic considerations.
Prerequisite: CSC 312 or ECE 206 and MA 421
Typically offered in Fall and Spring
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.
Typically offered in Fall only
In this course we will examine some of the components of a commercial strength game engine. We will survey different genres of games, using some of the unique design challenges each genre provides as a motivation for an in-depth examination of the affordances games engines provide for designing games of that genre. We will cover topics ranging from data structures, resource management, game loops and logical timing systems, scripting, error logging, and networking. 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.
Typically offered in Fall only
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.
Typically offered in Fall only
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.
Typically offered in Spring only
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.
Prerequisite: CSC 316
Typically offered in Spring only
Topics of current interest in computer science not covered in existing courses.
Prerequisite: B average in technical subjects
Typically offered in Fall and Spring
Application of cybersecurity principles and computer science and engineering to solve a cybersecurity problem. A project with comprehensive written and oral project report is required. Enrollment is open to Graduate Certificate in Cybersecurity (CYS GCP) students and CSC and ECE majors only.
Prerequisite: CSC/ECE 574
Typically offered in Fall only
Introduction for new graduate students to (a) information about graduate program, department, and university resources, and (b) research projects conducted by CSC faculty.
Typically offered in Fall and Spring
Individual investigation of topics under the direction of member(s) of the graduate faculty.
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
Instruction in research and research under the mentorship of a member of the Graduate Faculty.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
Thesis research.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Master's student
Typically offered in Summer only
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.
Prerequisite: Master's student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: CSC 501
Typically offered in Spring only
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.
Typically offered in Fall only
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.
Prerequisite: CSC 510
Typically offered in Spring only
This course is offered alternate odd years
Data management principles and technologies for efficient implementation of geospatial applications. This course introduces students to: spatial and temporal data types, data models, geometry models, spatial predicates, spatial access methods, and spatial query processing. In addition, students will be exposed to modern data management systems for geospatial application development and data integration principles. Prior GIS programming knowledge and knowledge of database management systems and SQL is preferred.
Typically offered in Spring only
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.
Prerequisite: CSC 510
Typically offered in Fall only
This course is offered alternate even years
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.
Prerequisite: CSC 451 or CSC 501
Typically offered in Spring only
This course is offered alternate years
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.
Prerequisite: CSC 520
Typically offered in Spring only
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).
Prerequisite: CSC 520
Typically offered in Fall only
This course is offered alternate odd years
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.
Prerequisite: CSC 501 or equivalent. Programming in C++ or Java in Unix environments
Typically offered in Spring only
This course is offered alternate odd years
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.
Typically offered in Spring only
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.
Prerequisite: CSC 540: Database Management Concepts and Systems
Typically offered in Fall only
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.
Prerequisite: Graduate standing in Computer Science
Typically offered in Spring only
This course is offered alternate odd years
Basic discrete event simulation methodology: random number generators, generating random objects, design of discrete event simulation, validation, analysis of simulation output, variance reduction techniques, Markov chain Monte Carlo, simulation optimization. The course has computer assignments and projects. This course is a sequel to ISE/OR 760 Stochastic Models which serves as a prerequisite. This is NOT a software based course! Students who are looking for a class on simulation software, such as Arena and Simio, are recommended to take ISE 562 (master-level simulation class).
Students should have completed a course on stochastic models (similar to ISE 560 or ISE 760) and have a working knowledge of a programming language (e.g., Python, Matlab, R, or others).
Typically offered in Fall and Spring
Advanced research issues in code optimization for scalar and parallel programs; program analysis, scalar and parallel optimizations as well as various related advanced topics.
Typically offered in Spring only
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.
Typically offered in Spring only
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.
Prerequisite: CSC/ECE 573
Typically offered in Spring only
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.
Typically offered in Spring only
Approximation and interpolation, Fast Fourier Transform, numerical differentiation and integration, numerical solution of initial value problems for ordinary differential equations.
Prerequisite: MA 580
Typically offered in Spring only
This course provides an in-depth investigation into security issues in areas including cellular air interfaces, core networking (SS7, IMS), cellular data networking, mobile device architectures, and classic telephone networks. In particular, we will study how these networks provide (or fail to provide) high confidentiality, integrity, availability, authentication, and privacy. A key focus of the course will be how the design philosophy of telephone networks differs from the Internet, complicating traditional security solutions.
Prerequisite: CSC 401 or CSC 405 or CSC 474 or CSC 537 or CSC 570 or CSC 573 or CSC 574 or equivalent
Typically offered in Fall only
Advanced topics of current interest in computer science not covered by existing courses.
Typically offered in Fall and Spring
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.
Prerequisite: Graduate standing
Typically offered in Fall and Spring
Individual investigation of advanced topics under the direction of member(s) of the graduate faculty.
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Doctoral student
Typically offered in Fall and Summer
For students who are preparing for and taking written and/or oral preliminary exams.
Prerequisite: Doctoral student
Typically offered in Fall, Spring, and Summer
Instruction in research and research under the mentorship of a member of the Graduate Faculty.
Prerequisite: Doctoral student
Typically offered in Fall, Spring, and Summer
Dissertation research
Prerequisite: Doctoral student
Typically offered in Fall, Spring, and Summer
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.
Prerequisite: Doctoral student
Typically offered in Summer only
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.
Prerequisite: Doctoral student
Typically offered in Fall, Spring, and Summer