Computer Science Minor - Curriculum

Computer Science Minor

Course
Prerequisites
Students must complete the following two-course programming sequence*:
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required. Lec/Lab 6 (Fall, Spring).
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
Students must complete the following calculus sequence†:
MATH-181
Project-Based Calculus I
This is the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals. (Prerequisites: MATH-111 or (NMTH-220 and NMTH-260 or NMTH-272 or NMTH-275) or equivalent courses with a minimum grade of B-, or a score of at least 65% on the RIT Mathematics Placement Exam. Co-requisites: MATH-181R or equivalent course.) Lecture 6 (Fall, Spring).
MATH-182
Project-Based Calculus II
This is the second in a two-course sequence. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates. The course has a weekly recitation associated with it, COS-MATH182R, devoted to skill development and just-in-time review of calculus material as needed. The 'as needed' is determined by weekly assessments. (Prerequisites: C- or better in MATH-181 or MATH-181A or equivalent course.) Lecture 6 (Fall, Spring).
Student must complete the following discrete mathematics course‡:
MATH-190
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems. (Co-requisites: MATH-182 or MATH-182A or MATH-172 or equivalent courses.) Lecture 3, Recitation 1 (Fall, Spring).
Required Course
CSCI-243
The Mechanics of Programming
Students will be introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design will be discussed. The program translation process will be examined. Programming assignments will be required. (Prerequisite: C- or better in CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or equivalent course.) Lecture 3 (Fall, Spring, Summer).
Electives
Choose four of the following:
    CSCI-250
   Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required. (Prerequisites: (CSCI-243 or 4003-334) and (MATH-190 or MATH-200 or 1016-366) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-251
   Concepts of Parallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required. (Prerequisites: CSCI-243 or SWEN-262 or equivalent courses.) Lecture 3 (Fall, Spring).
    CSCI-261
   Analysis of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and data structures and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms. (Prerequisites:(CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-262
   Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-263
   Honors Introduction to Computer Science Theory
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, auto-mata theory, computability, and complexity. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124) or equivalent courses.) Lecture 3 (Fall).
    CSCI-264
   Honors Analysis of Algorithms
This course provides a challenging introduction to the design and analysis of algorithms with an emphasis on problem solving and algorithmic research. It covers a variety of classical algorithms and data structures and their complexity, as well as deeper coverage of more advanced material; for example, linear programming, approximation algorithms, and randomized algorithms. The course will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms. (Prerequisites: (CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241 or equivalent courses.) Lecture 3 (Fall).
    CSCI-320
   Principles of Data Management
This course provides a broad introduction to the principles and practice of modern data management, with an emphasis on the relational database model. Topics in relational database systems include data modeling; the relational model; relational algebra; Structured Query Language (SQL); and data quality, transactions, integrity and security. Students will also learn approaches to building relational database application programs. Additional topics include object-oriented and object-relational databases; semi-structured databases (such as XML); and information retrieval. A database project is required. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-331
   Introduction to Artificial Intelligence
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments are an integral part of the course. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-630.) Lecture 3 (Fall, Spring, Summer).
   CSCI-335
   Machine Learning
An introduction to both foundational and modern machine learning theories and algorithms, and their application in classification and regression. Topics include: Mathematical background of machine learning (e.g. statistical analysis and visualization of data), Bayesian decision theory, parametric and non-parameteric classification models (e.g., SVMs and Nearest Neighbor models) and neural network models (e.g. Convolutional, Recurrent, and Deep Neural Networks). Programming assignments are required. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students may not take and receive credit for CSCI-335 and CSCI-635.) Lecture 3 (Fall, Spring).
    CSCI-344
   Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required. (Prerequisites: CSCI-243 or SWEN-250 or IGME-309 or 4003-334 or 4010-361 or 4080-487) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-351
   Data Communications and Networks
This course is an in-depth study of data communications and networks. The course covers design of, and algorithms and protocols used in, the physical, data link, network, transport, and application layers in the Internet; methods for modeling and analyzing networks, including graphs, graph algorithms, and discrete event simulation; and an introduction to network science. Programming projects will be required. (Pre-requisites: CSCI-251 and (MATH-251 or STAT-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-651.) Lecture 3 (Fall).
    CSCI-352
   Operating Systems
An in-depth study of operating system concepts. Topics include process synchronization, interprocess communication, deadlock, multiprogramming and multiprocessing, processor scheduling and resource management, memory management, static and dynamic relocation, virtual memory, file systems, logical and physical I/O, device allocation, I/O processor scheduling, process and resource protection. Programming projects involving the development of or modification to operating system kernel features will be required. (Prerequisites: CSCI-250 or CMPE-240 or SWEN-340 or equivalent course.) Lecture 3 (Fall).
    CSCI-420
   Principles of Data Mining
This course provides an introduction to the major concepts and techniques used in data mining of large databases. Topics include the knowledge discovery process; data exploration and cleaning; data mining algorithms; and ethical issues underlying data preparation and mining. Data mining projects, presentations, and a term paper are required. (Prerequisites: CSCI-320 and (STAT-145 or MATH-251 or STAT-251 or STAT-205) or equivalent courses. Students may not take this course if they have received credit for CSCI-620.) Lecture 3 (Fall, Spring).
   CSCI-421
   Principles of Database System Implementation
This course provides a broad introduction to database management systems including data modeling, the relational model, and SQL. Database system implementation issues are covered next, where the focus is on data structures and algorithms used to implement database management systems. Topics include physical data organization, indexing and hashing, query processing and optimization, database recovery techniques, transaction management, concurrency control, and database performance evaluation. A programming project will be required. (Prerequisites: CSCI-320. Students may not take and receive credit for CSCI-421 and CSCI-621. If you have earned credit for CSCI-621 or you are currently enrolled in CSCI-621 you will not be permitted to enroll in CSCI-421.) Lecture 3 (Fall, Spring, Summer).
    CSCI-431
   Introduction to Computer Vision
An introduction to the underlying concepts of computer vision. The course will consider fundamental topics, including image formation, edge detection, texture analysis, color, segmentation, shape analysis, detection of objects in images and high level image representation. Depending on the interest of the class, more advanced topics will be covered, such as image database retrieval or robotic vision. Programming homework assignments that implement the concepts discussed in class are an integral part of the course. (Prerequisites: (CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-631.) Lecture 3 (Fall, Spring).
    CSCI-452
   Systems Programming
Application of operating system concepts to the design of hardware interfaces for a multiprogramming environment. Laboratory work includes the development of a multiprogramming (optionally, multiprocessing) kernel with system call and interrupt handling facilities, and the building of device drivers for a variety of peripheral devices. This course provides extensive experience with those aspects of systems programming that deal directly with the hardware interface. A significant team programming project is a major component of this course. (Prerequisites: CSCI-352 or (4003-334 and 4003-345) or equivalent courses.) Lecture 3 (Spring).
    CSCI-453
   Computer Architecture
Computer Architecture is a study of the design of both modern and classic computer hardware. Topics include: a review of classical computer architectures; the design of operation codes and addressing modes, data formats, and their implementation; internal and external bus structures; architectural features to support virtual storage and page-replacement policies, high-level language features, and operating systems. Students will write programs which simulate the organization of several different processor architectures to help further their understanding of design choices. (Prerequisites: CSCI-352 or 4003-440 or equivalent courses.) Lecture 3 (Spring).
    CSCI-455
   Principles of Cybersecurity
This course provides a broad introduction to cybersecurity principles and practices, and emphasizes policies and mechanisms for building secure and trusted computer systems. It will cover cybersecurity principles, policies and mechanisms; core knowledge areas of data, software, component, connection, system, human, organizational and societal security; and crosscutting concepts of confidentiality, integrity, availability, risk, adversarial thinking, and systems thinking. Topics in privacy, and legal and ethical aspects will also be emphasized. Presentations, reports and projects are required. This course requires the knowledge of computer science theory and concepts of computer systems. (Prerequisites: CSCI-250 and (CSCI-262 or CSCI-263) or equivalent courses.) Lecture 3 (Spring).
    CSCI-462
   Introduction to Cryptography
This course provides an introduction to cryptography, its mathematical foundations, and its relation to security. It covers classical cryptosystems, private-key cryptosystems (including DES and AES), hashing and public-key cryptosystems (including RSA). The course also provides an introduction to data integrity and authentication. (Prerequisites: (CSCI-243 or SWEN-262 or CSEC-202) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
    CSCI-464
   Xtreme Theory
A fast paced, informal look at current trends in the theory of computing. Each week is dedicated to a different topic and will explore some of the underlying theory as well as the practical applications of the theory. Sample topics may include: quantum cryptography, networks and complex systems, social welfare and game theory, zero knowledge protocols. Students will be evaluated on homework assignments and a final presentation. Offered every other year. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124) or equivalent courses.) Lecture 3 (Fall).
    CSCI-510
   Introduction to Computer Graphics
Introduction to Computer Graphics is a study of the hardware and software principles of interactive raster graphics. Topics include an introduction to the basic concepts, 2-D and 3-D modeling and transformations, viewing transformations, projections, rendering techniques, graphical software packages and graphics systems. The course will focus on rasterization techniques and emphasize the hardware rasterization pipeline including the use of hardware shaders. Students will use a standard computer graphics API to reinforce concepts and study fundamental computer graphics algorithms. Programming projects will be required. (Prerequisites: MATH-241 and (CSCI-243 or SWEN-262) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-610.) Lecture 3 (Fall, Spring).
   CSCI-518
   Collaborative Seminar in Computer Graphics
This course examines current topics in Computer Graphics. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Computer Graphics and Visualization cluster. (Enrollment in this course requires permission from the department offering the course.) Lab 3, Lecture 2 .
    CSCI-519
   Seminar in Computer Graphics
This course examines current topics in Computer Graphics. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Computer Graphics and Visualization cluster. Lecture 3 .
   CSCI-521
   Principles of Data Cleaning and Preparation
This course provides an introduction to the concepts and techniques used in preparing data for subsequent data mining. Topics include the knowledge discovery process; data exploration and its role; data extraction, cleaning, integration and transformation; handling numeric, unstructured, text, web, and other forms of data; and ethical issues underlying data preparation and mining. Data cleaning projects and a paper are required. (Prerequisites: CSCI-320. Students may not take and receive credit for CSCI-521 and CSCI-721. If you have earned credit for CSCI-721 or you are currently enrolled in CSCI-721 you will not be permitted to enroll in CSCI-521.) Lecture 3 (Fall, Spring, Summer).
    CSCI-529
   Seminar in Data Management
This course examines current topics in Data Management. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Data Management cluster, the Security cluster, or both clusters. Lecture 3 .
    CSCI-531
   Introduction to Security Measurement
The course will introduce students into the algorithmic foundations and modern methods used for security evaluation and tools design. It will combine a theoretical revision of the methods and models currently applied for computer security evaluation and an investigation of computer security through the study of user's practice. The students will be required to complete a few homework assignments, to deliver a class presentation and to implement a team project. (Prerequisites: CSCI-351 or (4003-420 and 4003-440) or equivalent courses.) Lecture 3 (Fall).
    CSCI-532
   Introduction to Intelligent Security Systems
The course will introduce students to the application of intelligent methodologies in computer security and information assurance systems design. It will review different application areas such as intrusion detection and monitoring systems, access control and biological authentication, firewall structure and design. The students will be required to implement a course project on design of a particular security tool with an application of an artificial intelligence methodology and to undertake its performance analysis. (Prerequisites: CSCI-331 or CSCI-351 or equivalent course.) Lecture 3 (Spring).
   CSCI-536
   Information Retrieval
An introduction to the theories and techniques used to construct search engines. Topics include search interfaces, traditional retrieval models (e.g., TF-IDF, BM25), modern retrieval techniques (e.g., neural reranking and retrieval), search engine evaluation, and search applications (e.g., conversational IR, enterprise search). Students will also review current IR research topics, and complete a group project in which they will design and execute experiments for search engine components. (Prerequisites: CSCI-331 or equivalent course. Students may not take and receive credit for CSCI-536 and CSCI-636.) Lecture 3 (Spring).
    CSCI-539
   Seminar in Artificial Intelligence
This course examines current topics in Artificial Intelligence. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Artificial Intelligence cluster, the Computer Graphics and Visualization cluster, the Security cluster, or some combination of these three clusters. Lecture 3 .
    CSCI-541
   Programming Skills
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. (Prerequisites: CSCI-344 or equivalent course.) Lecture 3 (Fall, Spring).
    CSCI-549
   Seminar in Languages and Tools
This course examines current topics in Languages and Tools. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Languages and Tools cluster, the Security cluster, or both clusters. Lecture 3 .
    CSCI-559
   Seminar in Systems
This course examines current topics in Systems. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Distributed Systems cluster, the Architecture and Operating Systems cluster, the Security cluster, or some combination of these three clusters. Lecture 3 .
    CSCI-569
   Seminar in Theory
This course examines current topics in Theory. This is intended to allow faculty to pilot potential new undergraduate offerings. Specific course details (such as prerequisites, course seminar, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific seminar course in this area. Specific course instances will be identified as belonging to the Theory cluster, the Security cluster, or both clusters. Lecture 3 .
    CSCI-599
   Computer Science Undergraduate Independent Study
Students work with a supervising faculty member on topics of mutual interest. A student works with a potential faculty sponsor to draft a proposal that describes what a student plans to do, what deliverables are expected, how the student's work will be evaluated, and how much credit will be assigned for successful completion of the work. The faculty sponsor proposes the grade, but before the grade is officially recorded, the student must submit a final report that summarizes what was actually accomplished. (Enrollment in this course requires permission from the department offering the course.) Ind Study (Fall, Spring, Summer).
   CSCI-610
   Foundations of Computer Graphics
Foundations of Computer Graphics is a study of the hardware and software principles of interactive raster graphics. Topics include an introduction to the basic concepts, 2-D and 3-D modeling and transformations, viewing transformations, projections, rendering techniques, graphical software packages and graphics systems. The course will focus on rasterization techniques and emphasize the hardware rasterization pipeline including the use of hardware shaders. Students will use a standard computer graphics API to reinforce concepts and study fundamental computer graphics algorithms. Programming projects and a survey of the current graphics literature will be required. Note: students who complete CSCI-510 may not take CSCI-610 for credit. (Prerequisite: (CSCI-603 or CSCI-605 with a grade of B or better) or (CSCI-243 or SWEN-262). May not take and receive credit for CSCI-610 and CSCI-510. If earned credit for/or currently enrolled in CSCI-510 you will not be permitted to enroll in CSCI-610.) Lecture 3 (Fall, Spring).
   CSCI-620
   Introduction to Big Data
This course provides a broad introduction to the exploration and management of large datasets being generated and used in the modern world. First, practical techniques used in exploratory data analysis and mining are introduced; topics include data preparation, visualization, statistics for understanding data, and grouping and prediction techniques. Second, approaches used to store, retrieve, and manage data in the real world are presented; topics include traditional database systems, query languages, and data integrity and quality. Case studies will examine issues in data capture, organization, storage, retrieval, visualization, and analysis in diverse settings such as urban crime, drug research, census data, social networking, and space exploration. Big data exploration and management projects, a term paper and a presentation are required. Sufficient background in database systems and statistics is recommended. (Prerequisite: CSCI-603 or CSCI-605 with a grade of B or better or (CSCI-320 or SWEN-344). May not take and receive credit for CSCI-620 and CSCI-420. If earned credit for/or currently enrolled in CSCI-420 you will not be permitted to enroll in CSCI-620.) Lecture 3 (Fall, Spring, Summer).
   CSCI-621
   Foundations of Database System Implementation
This course provides a broad introduction to database management systems including data modeling, the relational model, and SQL. Database system implementation issues are covered next, where the focus is on data structures and algorithms used to implement database management systems. Topics include physical data organizations, indexing and hashing, query processing and optimization, database recovery techniques, transaction management, concurrency control, and database performance evaluation. Current research topics in database system implementation are also explored. Programming projects, a term paper, and presentations will be required. Note: Students who take this course may not take CSCI-421 for credit. (Prerequisites: CSCI-620 or CSCI-420 or equivalent course. May not take and receive credit for CSCI-621 and CSCI-421. If earned credit for/or currently enrolled in CSCI-421 you will not be permitted to enroll in CSCI-621.) Lecture 3 (Fall, Spring).
   CSCI-622
   Data Security and Privacy
This course examines policies, methods and mechanisms for securing enterprise and personal data and ensuring data privacy. Topics include data integrity and confidentiality; access control models; secure database architectures; secure transaction processing; information flow, aggregation, and inference controls; auditing; securing data in contemporary (relational, XML and other NO SQL) database systems; data privacy; and legal and ethical issues in data protection. Programming projects are required. (Prerequisites: CSCI-620 or CSCI-420 or equivalent course.) Lecture 3 (Spring).
   CSCI-630
   Foundations of Artificial Intelligence
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments and oral/written summaries of research papers are required. (Prerequisites:((CSCI-603 or CSCI-605) &CSCI-661) with grades of B or better or ((CSCI-243 or SWEN-262)&(CSCI-262 or CSCI-263)).If you have earned credit for CSCI-331 or you are currently enrolled in CSCI-331 you won't be permitted to enroll in CSCI-630.) Lecture 3 (Fall, Spring).
   CSCI-631
   Foundations of Computer Vision
An introduction to the underlying concepts of computer vision and image understanding. The course will consider fundamental topics, including image formation, edge detection, texture analysis, color, segmentation, shape analysis, detection of objects in images and high level image representation. Depending on the interest of the class, more advanced topics will be covered, such as image database retrieval or robotic vision. Programming assignments are an integral part of the course. Note: students who complete CSCI-431 may not take CSCI-631 for credit. (Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equiv courses. If earned credit for/or currently enrolled in CSCI-431 you will not be permitted to enroll in CSCI-631.Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equiv courses. If earned credit for/or currently enrolled in CSCI-431 you will not be permitted to enroll in CSCI-631.) Lecture 3 (Fall, Spring).
   CSCI-632
   Mobile Robot Programming
This course covers standard and novel techniques for mobile robot programming, including software architectures, reactive motion control, map building, localization and path planning. Other topics may include multiple robot systems, robot vision and non-traditional and dynamic robots. Students will implement various algorithms in simulation as well as on a real robot, and investigate and report on current research in the area. Course offered every other year. (Prerequisites: CSCI-630 or CSCI-331 or equivalent course.) Lecture 3 (Spring).
   CSCI-633
   Biologically Inspired Intelligent Systems
There have been significant advances in recent years in the areas of neuroscience, cognitive science and physiology related to how humans process information. In this course students will focus on developing computational models that are biologically inspired to solve complex problems. A research paper and programming project on a relevant topic will be required. A background in biology is not required. (CSCI-603,605,661 or CSCI ETC..) Lecture 3 (Fall).
   CSCI-635
   Introduction to Machine Learning
This course offers an introduction to supervised machine learning theories and algorithms, and their application to classification and regression tasks. Topics include: Mathematical background of machine learning (e.g. statistical analysis and visualization of data), neural models (e.g. Convolutional Neural Networks, Recurrent Neural Networks), probabilistic graphical models (e.g. Bayesian networks, Markov models), and reinforcement learning. Programming assignments are required. (Prerequisites: (CSCI-603 or CSCI-605 with a grade of B or better) or ((CSCI-243 or SWEN 262) and (MATH-251 or STAT-205)) or equivalent courses.) Lecture 3 (Fall, Spring).
   CSCI-636
   Information Retrieval
An introduction to the theories and techniques used to construct search engines. Topics include search interfaces, traditional retrieval models (e.g., TF-IDF, BM25), modern retrieval techniques (e.g., neural reranking and retrieval), search engine evaluation, and search applications (e.g., conversational IR, enterprise search). Students will also review current IR research, provide written summaries of current research papers, and complete a group project in which they will design and execute experiments for search engine components. (Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better, including familiarity with computer science concepts) or CSCI-331 or equivalent courses. Students may not take and receive credit for both CSCI-636 and CSCI-536.) Lecture 3 (Spring).
   CSCI-641
   Advanced Programming Skills
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. A term project involving independent investigation is also required. Note: students who complete CSCI-541 may not take CSCI-641 for credit. (Prerequisites: (CSCI-603 or CSCI-602) and (CSCI-605 or CSCI-604) or equivalent courses with grades of B or better or successful completion of CSCI-344.) Lecture 3 (Fall, Spring).
   CSCI-642
   Secure Coding
This course provides an introduction to secure coding including topics such as principles of secure coding, security architectures and design, operational practices and testing, programmatic use of cryptography, and defenses against software exploitation. Other topics include software based fault isolation, type-safe languages, certifying compilers; proof-carrying code, and automated program analysis and program rewriting. Programming projects, presentations, and a term paper will be required. (Prerequisites: (CSCI-603 and CSCI-605 with grades of B or better) or (CSCI-243 or SWEN-262) or equivalent courses.) Lecture 3 (Fall).
   CSCI-651
   Foundations of Computer Networks
This course is an introduction to the concepts and principles of computer networks. Students will design and implement projects using application protocols, and will study transport, network, and data link protocols and algorithms. The course also includes an introduction to local area networks, data transmission fundamentals, and network security. Programming projects and reading research papers will be required. (Prerequisites: (CSCI-605 with grade of B or better) or (CSCI-243 or SWEN-262) or equivalent course and sufficient background in statistics. Students cannot take and receive credit for this course if they have taken CSCI-351.) Lecture 3 (Fall).
   CSCI-652
   Distributed Systems
An introduction to the study of distributed systems. The course covers distributed system architectures such as client-server and peer-to-peer, distributed system design issues such as communication, fault tolerance, coordination, and deadlock, distributed system middleware such as remote method invocation (RMI) and tuple space, and the theory of distributed algorithms such as logical clocks and leader election. Students will also learn about ethical and legal concerns in computing and research. Programming projects are required. (Prerequisites: (CSCI-603 with grade of B or better) or (CSCI-243 or SWEN-262) or equivalent course and sufficient background in Operating Systems.) Lecture 3 (Fall, Spring).
   CSCI-654
   Foundations of Parallel Computing
This course is a study of the hardware and software issues in parallel computing. Topics include an introduction to the basic concepts, parallel architectures and network topologies, parallel algorithms, parallel metrics, parallel languages, granularity, applications, parallel programming design and debugging. Students will become familiar with various types of parallel architectures and programming environments. (Prerequisites: (CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equivalent courses.) Lecture 3 (Fall).
   CSCI-655
   Foundations of Cybersecurity
This course provides a graduate-level introduction to cybersecurity principles and practices, and emphasizes policies and mechanisms for building secure and trusted computer systems. It will cover cybersecurity principles, policies and mechanisms; core knowledge areas of data, software, component, connection, system, human, organizational and societal security; and crosscutting concepts of confidentiality, integrity, availability, risk, adversarial thinking, and systems thinking. Topics in privacy, and legal and ethical aspects will also be emphasized. The course also explores the current research in cybersecurity. Presentations, reports and projects are required. (CSCI-605 and (CSCI-660 or CSCI-661) with B or better in all courses or CSEC-600 and CSEC-604 with B or better in both courses or CSCI-250 and (CSCI-262 or CSCI-263). Students may not take and receive credit for both CSCI-455 and CSCI-655.) Lecture 3 (Summer).
   CSCI-661
   Foundations of Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, automata theory, computability, and complexity. This course serves as a bridge course for graduate students and cannot be taken by undergraduate students without permission from the CS Undergraduate Program Coordinator. Note: Students who complete CSCI 262 or CSCI 263 may not take CSCI 661 for credit. (This course is restricted to students in COMPSCI-MS.) Lecture 3 (Fall, Spring).
   CSCI-662
   Foundations of Cryptography
This course provides an introduction to cryptography, its mathematical foundations, and its relation to security. It covers classical cryptosystems, private-key cryptosystems (including DES and AES), hashing and public-key cryptosystems (including RSA). The course also provides an introduction to data integrity and authentication. Note: students who complete CSCI-462 may not take CSCI-662 for credit. (Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equiv courses. If earned credit for/or currently enrolled in CSCI-462 you will not be permitted to enroll in CSCI-662.) Lecture 3 (Fall, Spring).
   CSCI-664
   Computational Complexity
This course provides an introduction to computational complexity theory. It covers the P=NP problem, time and space complexity, randomization, approximability, and relativization. (Prerequisites: (CSCI-661 or CSCI-660 or CSCI-262 or CSCI-263) and (CSCI-665 or CSCI-261 or CSCI-264) or equivalent courses.) Lecture 3 (Spring).
   CSCI-665
   Foundations of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms. Note: students who take CSCI-261 or CSCI-264 may not take CSCI-665 for credit. (Prerequisites: (CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equivalent courses. This course is restricted to COMPSCI-MS, COMPSCI-BS/MS, or COMPIS-PHD students.) Lec/Lab 3 (Fall, Spring).
   CSCI-711
   Global Illumination
This course will investigate the theory of global illumination (GI) in computer image synthesis. Seminal computer graphics papers will be used to explore the various components of the GI pipeline and explain how the path of light in a virtual scene can be simulated and used to create photorealistic imagery. The course will emphasize the theory behind various GI rendering tools and libraries available for image synthesis. The student will put theory into practice via a set of programming assignments and a capstone project. Topics will include light and color, three-dimensional scene specification, camera models, surface materials and textures, GI rendering methods, procedural shading, tone reproduction, and advanced rendering techniques. Readings and summaries of Computer Graphics literature will be required. (Prerequisites: CSCI-610 or CSCI-510 or equivalent course.) Lecture 3 (Fall, Spring).
   CSCI-712
   Computer Animation: Algorithms and Techniques
This course takes a look at computer animation from a programmer's perspective. It will investigate the theory, algorithms and techniques for describing and programming motion for virtual 3D worlds. Approaches that will be explored include keyframing systems; kinematics, motion of articulated figures, procedural and behavioral systems, and the use of motion capture data. This course is a programming-oriented course with major deliverables including the implementation of techniques presented in lecture as well as a final project concentrating on an area of a student's choice. Students enrolling in this course are expected to have proficiency in the use of at least one 3D API (e.g. OpenGL, DirectX, Java3D). Readings and summaries of Computer Graphics literature will be required. Offered every other year. (Prerequisites: CSCI-610 or CSCI-510 or 4005-762 or 4003-570 or equivalent course.) Lecture 3 (Fall).
   CSCI-713
   Applied Perception in Graphics and Visualization
The goal of this course is to introduce students to the field of applied perception in graphics and visualization and demonstrate how it has contributed to the development of better display systems and computer graphics rendering techniques. The delivery of the course material will be done primarily through lectures with biweekly programming assignments based upon the techniques presented in class. Students will also be exposed to a wide range of technical papers and be expected to make classroom presentations on selected topics in the field of applied perception in graphics and visualization. (Prerequisites: CSCI-610 or CSCI-510 or 4005-762 or 4003-571 or equivalent course.) Lecture 3 (Spring).
   CSCI-714
   Scientific Visualization
Visualizations of scientific data are helpful in order to understand complex, n-dimensional behavior of simulations. This course covers techniques that are needed to visualize n-dimensional data sets produced by real scientific simulations. Topics include: Visualization design, discrete visualization techniques, scalar and volume visualization techniques and perception of visualizations. Additionally topics such as distributed file systems, specialized file systems and distributed computing needed in order to create the visualizations will be covered. A team project and presentations are required. Course offered every other year. (Prerequisites: CSCI-610 or CSCI-510 or 4005-762 or 4003-572 or equivalent course.) Lecture 3 (Spring).
   CSCI-715
   Applications in Virtual Reality
This course will investigate the application of virtual reality software and technology within a given domain. Working in sets of technical teams, students will collectively investigate and solve a large-scale visualization task within that problem domain. Focus of individual student teams may include (but is not limited to) distributed VR framework, viewing applications, interaction with VR devices / displays, and audio in virtual environments. Students will be required to read and summarize selected articles from VR literature, as well as papers specific to the problem domain being investigated, to assist in making design decisions. A report or survey of one aspect of using a virtual reality system within the given domain is also required. Students should have a strong programming background and a proficiency in a 3D API (OpenGL, DirectX, or Java3D). Students with expertise in distributed systems and an interest in Graphics or virtual reality are also encouraged to register. Offered every other year. (Prerequisites: CSCI-610 or CSCI-510 or 4005-762 or 4003-573 or equivalent course.) Lec/Lab 3 (Fall).
   CSCI-716
   Computational Geometry
Computational Geometry is a subfield of algorithm theory that involves the design and analysis of efficient algorithms for problems involving geometric input and output. In this course the focus will be largely on problems in 2-dimensional space (lines, line segments, polygons, planes, polyhedral, curved objects, etc.) with occasional inclusion of higher dimensional problems. There are many fields of computer science that deal with solving problems of a geometric nature. These include computer graphics, computer vision and image processing, robotics, computer-aided design and manufacturing, computational fluid-dynamics, and geographic information systems, to name a few. One of the goals of this computational geometry course is to provide the basic geometric tools necessary to solve problems in these fields. Note: Programming projects are required. (Prerequisites: CSCI-261 or CSCI-264 or CSCI-665 or equivalent course.) Lecture 3 (Spring).
   CSCI-719
   Topics in Computer Graphics
This course examines current topics in Computer Graphics. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances presented will be identified as belonging to the Computer Graphics and Visualization cluster. Lecture 3 .
   CSCI-720
   Big Data Analytics
This course provides a graduate-level introduction to the concepts and techniques used in data mining. Topics include the knowledge discovery process; prototype development and building data mining models; current issues and application domains for data mining; and legal and ethical issues involved in collecting and mining data. Both algorithmic and application issues are emphasized to permit students to gain the knowledge needed to conduct research in data mining and apply data mining techniques in practical applications. Data mining projects, a term paper, and presentations are required. (Prerequisites: CSCI-620 or (CSCI-420 and CSCI-320) or (4003-485 and 4003-487) or equivalent course.) Lecture 3 (Fall, Spring).
   CSCI-721
   Foundations of Data Cleaning and Preparation
This course provides an introduction to the concepts and techniques used in preparing data for subsequent data mining. Topics include the knowledge discovery process; data exploration and its role; data extraction, cleaning, integration and transformation; handling numeric, unstructured, text, web, and other forms of data; and ethical issues underlying data preparation and mining. Data cleaning projects, a term paper, and presentations are required. Note: Students who take this course may not take CSCI-521 for credit. (Prerequisites: CSCI-620 or (CSCI-420 and CSCI-320) or (4003-485 and 4003-487) or equivalent course.) Lecture 3 (Spring).
   CSCI-722
   Data Analytics Cognitive Comp
Building on prior knowledge of data analytics, this course brings in the impact of natural language processing and cognitive computing on data analysis. Topics include an overview of natural language processing; data mining, information retrieval and knowledge processing; corpus identification and preparation; training and test data and methods; current research in the field; and ethical concerns. Students will apply the concepts learned in class through team projects, programming assignments, presentations, and a research paper. (Prerequisites: CSCI-620 or (CSCI-420 and CSCI-320) or (4003-485 and 4003-487) or equivalent course.) Lecture 3 (Fall).
   CSCI-723
   Advanced Database Skills: Graph Databases
This course starts with an introduction to advanced topics in relational databases, including their implementation and advanced SQL queries. Discussions about benefits and drawbacks of relational databases will arise, which will be the foundation for introducing new types of NoSQL databases; that is, column, key-value, and graph databases. This course will then focus on the rationale, implementation, and storing and querying capabilities of graph databases. Assignments of various kinds will be used to assess individual performance of students. Additionally, the course requires a team-based project in which students will analyze and implement state-of-the-art approaches over graph databases. Teams will present the results of their projects in class. (Prerequisites: CSCI-320 or CSCI-620 or equivalent course.) Lecture 3 (Fall).
   CSCI-724
   Web Services and Service Oriented Computing
This course introduces fundamental concepts of Web services and the Service-Oriented Computing (SOC) paradigm, and reviews seminal work, current research, and modern practices in these areas. Topics in Web Services include XML; reference model (WSDL, UDDI, SOAP); service coordination and composition; and service security and privacy. Big data analytics in SOC will also be covered, such as large scale service data retrieval and storage, service clustering and classification, service recommendation, and service discovery. Students will apply the concepts learned in the class through programming assignments and a comprehensive term project. (Prerequisites: CSCI-620 or (CSCI-320 and CSCI-420) or CSCI-652 or equivalent course.) Lecture 3 (Spring).
   CSCI-725
    Advanced Database Skills: NoSQL and NewSQL Data Systems
This course examines how database systems evolved to meet the workloads of modern applications. Limitations of relational databases led to NoSQL systems that are highly scalable and provide flexible data modeling but sacrifice important consistency properties. More recently, “NewSQL” data systems seek to understand and address fundamental scalability bottlenecks while maintaining relational database consistency. This course will describe shortcomings of relational databases for certain data management tasks and the specific challenges addressed by NoSQL and NewSQL database systems. Case studies will investigate both established and state-of-the-art systems. Students will critique and present existing work in the area and complete a research project individually or in teams that explores an outstanding problem in the area. (Prerequisites: CSCI-320 or CSCI-620 or (DSCI-633 and ISTE-608) or equivalent courses.) Lecture 3 (Fall).
   CSCI-729
   Topics in Data Management
This course examines current topics in Data Management. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Data Management cluster, the Security cluster, or both clusters. Lecture 3 (Fall, Spring).
   CSCI-731
   Advanced Computer Vision
This course examines advanced topics in computer vision including motion analysis, video processing and model based object recognition. The topics will be studied with reference to specific applications, for example video interpretation, robot control, road traffic monitoring, and industrial inspection. A research paper, an advanced programming project, and a presentation will be required. (Prerequisites: CSCI-631 or CSCI-431 or equivalent course.) Lecture 3 (Spring).
   CSCI-732
   Image Understanding
This course explores the theory and methodologies used to interpret images in terms of semantic content. Techniques from image processing and pattern recognition are extended for the purpose of scene understanding using both a bottom-up and a top-down approach. Topics include human visual perception, knowledge representation, object recognition, contextual classification, scene labeling, constraint propagation, interpretation trees, semantic image segmentation, 3D models and matching, active vision, and reasoning about images. Programming projects are required. Offered every other year. (Prerequisites: CSCI-631 or CSCI-431 or equivalent course.) Lecture 3 (Spring).
   CSCI-734
   Foundations of Security Measurement and Evaluation
The course will introduce students into the algorithmic foundations and modern methods used for security evaluation. It will combine a theoretical revision of the methods and models currently applied for computer security evaluation and an investigation of computer security through study of user's practice. The students will be required to complete a few home assignments, to deliver a class presentation, to implement a team project, to lead the team's work and to undertake research on the topic assigned. (Prerequisites: CSCI-651 or equivalent course.) Lecture 3 (Fall).
   CSCI-735
   Foundations of Intelligent Security Systems
The course will introduce students to the application of intelligent methodologies applications in computer security and information assurance system design. It will review different application areas such as intrusion detection and monitoring systems, access control and biological authentication, firewall structure and design. The students will be required to implement a course project on design of a particular security tool with an application of an artificial intelligence methodology and to undertake research and analysis of artificial intelligence applications in computer security. (Prerequisites: CSCI-630 or CSCI-651 or CSCI-331 or equivalent course.) Lec/Lab 3 (Spring).
   CSCI-736
   Neural Networks and Machine Learning
The course will introduce students into the current state of artificial neural networks. It will review different application areas such as intrusion detection and monitoring systems, pattern recognition, access control and biological authentication, and their design. The students will be required to conduct research and analysis of existing applications and tools as well as to implement a course programming project on design of a specified application based on neural networks and/or fuzzy rules systems. (Prerequisites: CSCI-630 or CSCI-331 or equivalent course.) Lec/Lab 3 (Spring).
   CSCI-737
   Pattern Recognition
   CSCI-739
   Topics in Intelligent Systems
This course examines current topics in Intelligent Systems. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Intelligent Systems cluster, the Computational Vision and Acoustics cluster, the Security cluster, or some combination of these three clusters. Course offered every other year. Lec/Lab 3 (Fall).
   CSCI-740
   Programming Language Theory
This course is an introduction to the formal study of programming languages, demonstrating important intellectual tools for the precise description of programming languages and investigating the essential features of programming languages using these tools. Topics include: dynamic semantics (such as operational semantics); static semantics (such as type systems); proofs by induction on structures and derivations; formal treatment of essential programming-language features (such as assignment, scope, functions, objects, and threads). Both written and programming assignments will be required. (Prerequisites: (CSCI-603 and CSCI-605 and CSCI-661) with grades of B or better or ((CSCI-262 or CSCI-263) and CSCI-344) or equivalent courses.) Lec/Lab 3 (Fall).
   CSCI-742
   Compiler Construction
This course discusses design and implementation of language processors and translators. Topics include lexical, syntactic, and semantic descriptions, algorithms for analysis tools, and programming techniques, as well as interpreters and code generation for typical computer architectures. Teams of students will be required to design and implement a programming language with nested block structure and data aggregates. (Prerequisites: (CSCI-603 and CSCI-605 and CSCI-661) with grades of B or better or ((CSCI-262 or CSCI-263) and CSCI-344) or equivalent courses.) Lecture 3 (Spring).
   CSCI-746
   Software Development Tools
This course investigates and evaluates various software tools used in the development of software. Topics include simple dependency-based tools such as make and ant as well as full-featured integrated development environments. Working with and proposing modeling languages for such tools is an important part of the course. Programming projects will be required. (Prerequisites: (CSCI-603 and CSCI-605 and CSCI-661) with grades of B or better or ((CSCI-262 or CSCI-263) and CSCI-344) or equivalent courses.) Lecture 3 (Spring).
   CSCI-749
   Topics in Languages and Tools
This course examines current topics in Languages and Tools. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Languages and Tools cluster, the Security cluster, or both clusters. Lecture 3 .
   CSCI-759
   Topics in Systems
This course examines current topics in Systems. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Distributed Systems cluster, the Architecture and Operating Systems cluster, the Security cluster, or some combination of these three clusters. Lecture 3 .
   CSCI-761
   Topics in Advanced Algorithms
This course focuses on advanced algorithms and data structures in a specialized area of computer science or in a specific scientific domain. Both practical and theoretical aspects of algorithms will be explored to provide coverage of the state of the art and shortcomings of computing in the specialized area. This includes proofs of correctness and complexity analysis of the algorithms. Students will write a term paper that explores the current state of research in the area or reports on the student's implementation and experiments with algorithms for a chosen problem. Students will also be required to make presentations. The instructor will post the specifics of each course offering before the registration. With the approval of the program coordinator, this course can be taken for credit more than once, provided each instance concerns a different specialized area or domain. (Prerequisites: CSCI-261 or CSCI-264 or CSCI-665 or equivalent course.) Lecture 3 (Spring).
   CSCI-762
   Advanced Cryptography
This course investigates advanced topics in cryptography. It begins with an overview of necessary background in algebra and number theory, private- and public-key cryptosystems, and basic signature schemes. The course will cover number theory and basic theory of Galois fields used in cryptography; history of primality algorithms and the polynomial-time test of primality; discrete logarithm based cryptosystems including those based on elliptic curves; interactive protocols including the role of zero-knowledge proofs in authentication; construction of untraceable electronic cash on the net; and quantum cryptography, and one or more of digital watermarking, fingerprinting and stenography. Programming will be required. (Prerequisites: CSCI-662 or CSCI-462 or equivalent course.) Lecture 3 (Spring).
   CSCI-764
   Quantum-Resistant Cryptography
   CSCI-769
   Topics in Theory
This course examines current topics in Theory. This is intended to allow faculty to pilot potential new graduate offerings. Specific course details (such as prerequisites, course topics, format, learning outcomes, assessment methods, and resource needs) will be determined by the faculty member(s) who propose a specific topics course in this area. Specific course instances will be identified as belonging to the Theory cluster, the Security cluster, or both clusters. Seminar 3 .

* An equivalent programming sequence may be determined by the minor advisor.

† An equivalent calculus sequence may be determined by the minor advisor.

‡ An equivalent discrete mathematics sequence may be determined by the minor advisor.