Faculty

Professors:  H.A. Choi, J.K. Hahn, B. Narahari, R. Pless (Chair), R. Simha, P. Vora, A. Youssef

Associate Professors: A. Aviv, K. Bulusu (Teaching), K. Dobolyi (Teaching), S. Mohan, G. Parmer, T. Wood

Assistant Professors:  Y. Açar, J. Taylor (Teaching), A. Yerukhimovich

Explanation of Course Numbers

  • Courses in the 1000s are primarily introductory undergraduate courses
  • Those in the 2000-4000s are upper-division undergraduate courses; computer science courses in this numerical range may only be taken for graduate credit with permission of the course instructor, permission of the student's academic advisor, and by completing additional work in the course
  • Those in the 6000s and 8000s are for master’s, doctoral, and professional-level students
  • The 6000s are open to advanced undergraduate students with approval of the instructor and the dean or advising office

Note: With the exception of CSCI 1010, CSCI courses numbered CSCI 1041 and below normally may not be counted toward degree requirements for computer science majors, unless approved by a departmental advisor.

CSCI 1010. Computer Science Orientation. 1 Credit.

Introduction to the field of computer science. Basic and emerging concepts and applications of computer science. Hands-on experiments and team projects. Technical resources, professional ethics, writing, and presentation.

CSCI 1011. Introduction to Programming with Java. 3 Credits.

An introductory course in programming a computer, using the Java language. Object-oriented programming, classes, applets, methods, control structures, inheritance, overriding, GUI widgets, containers, and exceptions.

CSCI 1012. Introduction to Programming with Python. 3 Credits.

Introduction to programming a computer using the Python language; variables, types, assignment, conditionals, loops, lists, and program units. (Fall, spring, and summer, Every year)

CSCI 1013. Computational Problem-Solving Across Disciplines. 3 Credits.

Data structures, data types, visualizations relevant to interdisciplinary computing and data science applications. Computational problem-solving with applications in humanities, social sciences, and STEM. Prerequisites: CSCI 1012.

CSCI 1020. Applications Software. 3 Credits.

Introduction to the use of microcomputer hardware and software for word processing (e.g., Word), spreadsheets (e.g., Excel), and database management (e.g., Access), with emphasis on the use of computers to solve typical problems in academia and business.

CSCI 1021. Introduction to Computers and the Internet. 3 Credits.

Survey of computers and languages. Introduction to computer programming. History of computing and networking. The effects of computing and the Internet on our lives. E-commerce and new technologies. Concepts of web page design.

CSCI 1022. Introduction to Internet Technology. 3 Credits.

An introductory course for non-technical students who wish to obtain a better understanding of the hardware and software that comprise the Internet. Information transfer over fiber, routing and switching of packets, methods of information transfer, protocols, software, ISP, web pages and multimedia.

CSCI 1023. Introduction to Web Software Development. 3 Credits.

Introduction to the Internet. Topics include address and URL to find your way, linking to a URL, HTML and web programming, building a web page, building a home page, client-server techniques.

CSCI 1030. Technology and Society. 3 Credits.

Historical, social, and ethical issues of the technological age. Ethical principles and skills and social analysis skills needed to evaluate the design and implementation of complex computer systems. Privacy, computer crime, equity, intellectual property, professional ethics. Data collection, analysis, and presentation; technical writing and oral communication skills.

CSCI 1030W. Technology and Society. 3 Credits.

Historical, social, and ethical issues of the technological age. Ethical principles and skills and social analysis skills needed to evaluate the design and implementation of complex computer systems. Privacy, computer crime, equity, intellectual property, professional ethics. Data collection, analysis, and presentation; technical writing and oral communication skills. Includes a significant engagement in writing as a form of critical inquiry and scholarly expression to satisfy the WID requirement. (Fall and spring, Every year)

CSCI 1041. Introduction to FORTRAN Programming. 3 Credits.

Structured programming with high-level language using FORTRAN. Control structures. Different data types with emphasis on real and complex number computations. Arrays used with vector and matrix manipulation to solve simultaneous equations. External subroutines for mathematical and graphical applications. MATH 1220 or MATH 1231 may be taken as a corequisite. Prerequisites: MATH 1220 or MATH 1231. (Fall and spring, Every year)

CSCI 1099. Variable Topics. 1-36 Credits.

CSCI 1111. Introduction to Software Development. 3 Credits.

Introduction to problem solving on a digital computer using the Java language. Object-oriented programming concepts; documentation techniques; design of test data. Writing, debugging, and running programs in an interactive computing environment. (Spring, summer, and fall, Every year)

CSCI 1112. Algorithms and Data Structures. 3 Credits.

Object-oriented software. Inheritance, exceptions, development of classes, event-driven programming. Data structures such as trees, lists, stacks, queues, and strings. Sorting and searching. Introduction to algorithm performance prediction. Prerequisites: CSCI 1111 with a minimum grade of C; and MATH 1220 or MATH 1231. (Spring, Every year)

CSCI 1121. Introduction to C Programming. 3 Credits.

Structured programming with the C language; control structures; data types; use of pointers; matrix manipulation to solve simultaneous equations; external subroutines for mathematical and graphical applications; introduction to C++; complex number representation. Co-requisites: MATH 1220 and MATH 1231. Credit cannot be earned for this course and ECE 1120. (Spring, Every year)

CSCI 1131. Introduction to Programming with C. 3 Credits.

Intensive introductory course for students with a science, mathematics, or other quantitative backgrounds. Solution of numerical and nonnumerical problems on a digital computer using C programming language in a Unix environment. Prerequisites: MATH 1232.

CSCI 1132. Data Structures and Software Design. 3 Credits.

Data structures such as trees, lists, stacks, queues, and strings. Big-O notation and introduction to algorithm performance analysis. Solutions of numerical and non-numerical problems. Use of I/O libraries. Application development and software testing. Prerequisite: CSCI 1121.

CSCI 1311. Discrete Structures I. 3 Credits.

Mathematics for computer science. Sets, functions, sequences. Propositional and predicate calculus, formal proofs, mathematical induction. Matrices, semigroups, groups, isomorphism. Relations, partitions, equivalence relations, trees, graphs. Prerequisites: MATH 1220 or MATH 1231. (Fall, spring, summer, Every year)

CSCI 2113. Software Engineering. 3 Credits.

Programming techniques and software development in one or more programming languages; application development using object oriented programming techniques, GUIs, threading, and networking while applying software engineering principles. Prerequisites: MATH 1221 or MATH 1231; and CSCI 1112 with a minimum grade of C. (Spring and fall, Every year)

CSCI 2211. Computing and the World. 3 Credits.

The role played by modern computing in the significant social, political, economic, and climate challenges the world faces, relying on perspective provided by other relevant fields. Restricted to students in the BS in computer science program. Prerequisites: CSCI 1112; and one of the following: APSC 3115, CSCI 3362, CSCI 6362, CSCI 4341, or STAT 4157, prior coursework in programming and data structures and sufficient knowledge of probability/statistics to understand the explanation of some estimation algorithms. (Spring, Every year)

CSCI 2312. Discrete Structures II. 3 Credits.

Basic discrete techniques in computer science; proofs, algebraic structures, number theory, graph theory, asymptotics. Prerequisites: MATH 1221 or MATH 1231 or MATH 1232 or MATH 2233; and CSCI 1311 with a minimum grade of C. (Fall, Every year)

CSCI 2410. System Programming. 3 Credits.

Systems programming on POSIX systems; C programming, programs, the command line, processes, input/output, file system access, inter-process communication, libraries, system calls, memory management, injection and overflow attacks, security. Restricted to students in the computer science program. Prerequisites: CSCI 1112 with a minimum grade of C. Credit cannot be earned for this course and CSCI 3410. (Fall, Every year)

CSCI 2441. Database Systems and Team Projects. 3 Credits.

Design of relational database systems, relational query languages, normal forms, and design of database applications. Team software development, integration, and testing. Professional code of ethics, intellectual property, privacy, and software copyrights. Students cannot receive credit for both CSCI 2441 taken while an undergraduate and CSCI 6441 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 2541 and CSCI 6441. (Fall and spring, Every year)

CSCI 2441W. Database Systems and Team Projects. 3 Credits.

Design of relational database systems, relational query languages, normal forms, and design of database applications. Team software development, integration, and testing. Professional code of ethics, intellectual property, privacy, and software copyrights. Students cannot receive credit for both CSCI 2441W taken while an undergraduate and CSCI 6441 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 2441W and CSCI 6441. Includes a significant engagement in writing as a form of critical inquiry and scholarly expression to satisfy the WID requirement. Corequisite: CSCI 2113. (Spring, Every year)

CSCI 2460. Introduction to Computer Systems. 3 Credits.

Introduction to computer organization and computer systems. Data representation; computer organization; processor instruction sets and assembly programming; language translation; memory; input/output; introduction to operating systems. Restricted to students in the BA and minor programs in computer science. Prerequisites: CSCI 1112 and CSCI 1311 with a minimum grade of C. Corequisites: CSCI 2113. Recommended background: Introductory coursework and background in computer science, programming, and discrete mathematics. Credit cannot be earned for this course and CSCI 2461. (Spring, Every year)

CSCI 2461. Computer Architecture I. 3 Credits.

Introduction to design and analysis of computer architectures. Number representation, digital logic and circuit design, computer organization, assembly programming, translating C programs, memory design, program performance. Restricted to students in the BS in computer science program. Prerequisites: CSCI 1112 and CSCI 1311, both with a minimum grade of C. Corequisites: CSCI 2113. Credit cannot be earned for this course and CSCI 2460. (Fall, Every year)

CSCI 2501. Ethical Issues in Computing. 1 Credit.

Introduction and analysis of the ethical issues of the technological age; ethical principles and skills and social analysis skills needed to evaluate future consequences of the design and implementation of complex computer systems; application of professional ethics codes in decision-making in professional practice. Restricted to computer science majors. Prerequisites: CSCI 1010 and CSCI 1011. (Fall and spring, Every year)

CSCI 2541W. Database Systems and Team Projects. 3 Credits.

Design of relational database systems, relational query languages, Introduction to Not just SQL (NoSQL) database systems, normal forms, and design of database applications. Team software development, integration, and testing. Students cannot receive credit for both CSCI 2541W taken while an undergraduate and CSCI 6441 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 2541 and CSCI 6441. Includes a significant engagement in writing as a form of critical inquiry and scholarly expression to satisfy the WID requirement. Corequisite: CSCI 2113. Prerequisite: CSCI 1311. (Spring, Every year)

CSCI 3212. Algorithms. 4 Credits.

Core concepts in design and analysis of algorithms, data structures, and problem-solving techniques. Hashing, heaps, trees. Graph algorithms, searching, sorting, graph algorithms, dynamic programming, greedy algorithms, divide and conquer, backtracking. Combinatorial optimization techniques. NP-completeness. Prerequisites: CSCI 1311 and CSCI 2113. (Fall and spring, Every year)

CSCI 3313. Foundations of Computing. 3 Credits.

Introduction to the theory of computing and automata theory. Finite state automata, regular expressions, context-free languages; pushdown automata; Turing machines and computability. Prerequisites: CSCI 2113; and CSCI 2312 or CSCI 2460 or CSCI 2461. (Spring, Every year)

CSCI 3362. Probability for Computer Science. 3 Credits.

Introduction to probability and statistics for computer scientists; random variables; conditional probability, independence, correlation; applications to computer science, including information theory, data compression, coding, inference, Markov chains, randomized algorithms. Students cannot receive credit for both CSCI 3362 taken while an undergraduate and CSCI 6362 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 3362 and CSCI 6362. Prerequisites: CSCI 1311 and MATH 1232. (Spring, Every year)

CSCI 3401. Computer Architecture and Organization. 3 Credits.

Design and analysis of computer architectures. Digital logic and circuit design, computer organization, assembly programming, translation, memory design, pipelined and superscalar architectures, multiprocessing, program performance. Restricted to students in the BS in computer science program. Prerequisites: CSCI 1311, CSCI 2113, and CSCI 2410. Credit cannot be earned for this course and CSCI 2461. (Spring, Every year)

CSCI 3410. Systems Programming. 3 Credits.

Concepts underlying all computer systems. Processor operation, hierarchical memory systems, embedded boards, data acquisition, actuation, and systems software such as compilers, linkers, and operating systems from the programmer’s perspective. Use of embedded platforms to examine how programs interact with and are constrained by hardware. Prerequisites: CSCI 2461 and CSCI 2113. (Fall and spring, Every year)

CSCI 3411. Operating Systems. 4 Credits.

Operating systems structure and associated trade-offs; process and thread management; concurrency, synchronization, and deadlock; memory management; scheduling; storage systems and I/O. Prerequisites: CSCI 2113; and CSCI 2461 or CSCI 2410. (Fall, Every year)

CSCI 3462. Computer Architecture II. 3 Credits.

Computer organization; design of computer components and of a simple computer. Instruction set and assembly language of a pipelined RISC processor; introduction to high-performance processors; design of cache, main memory, and virtual memory systems; program performance models and system performance; I/O structure and peripherals. Prerequisites: CSCI 2113 and CSCI 2461. Credit cannot be earned for this course and ECE 3515. (Spring, Every year)

CSCI 3532. Information Ethics and Policy. 3 Credits.

Ethical issues of new technologies viewed through ethical frameworks. Developing policy analysis skills to evaluate local, global impact of complex computer systems and applying professional ethics codes in decision making in professional practice. Restricted to students in the BS in computer science program. Prerequisites: CSCI 1010, or CSCI 1011, or CSCI 1111. (Spring, Every year)

CSCI 3551. Concepts and Applications of Computer Graphics. 3 Credits.

Introduction to computer graphics without programming; building 3-D geometry and rendering; computer animation; virtual reality and computer games; hands-on projects in modeling, rendering, and animation using commercial software.

CSCI 3552. Design of Computer Animation I. 3 Credits.

Use of commercial 3-D computer animation packages to create digital artistic works. Principles of animation, including timing, exaggeration of motion, and anticipation; use of a storyboard; modeling; motion; rendering and editing. (Fall, Every year)

CSCI 3571. Introduction to Bioinformatics. 3 Credits.

The use of computational techniques in molecular biology, genetics, and evolution; techniques and software for database searching, sequence alignment, gene finding, phylogenetics, genomics, and proteomics. Prerequisites: BISC 1111 and BISC 1112. Same As: BISC 2584.

CSCI 3907. Special Topics. 1-3 Credits.

Topic to be announced in the Schedule of Classes.

CSCI 3908. Research. 1-3 Credits.

Applied research and experimentation projects, as arranged. Restricted to juniors and seniors. (Fall and spring, Every year)

CSCI 4223. Principles of Programming Languages. 3 Credits.

Fundamental concepts underlying design of programming languages. Detailed study of functional and object-oriented computational models. Types, evaluation, abstraction, control flow, modules, mutation, laziness, polymorphism, subtyping, inheritance. Practice learning new languages. Students cannot receive credit for both CSCI 4223 taken while an undergraduate and CSCI 6223 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4223 and CSCI 6223. Prerequisites: CSCI 1311 and CSCI 2113. (Spring, Odd years)

CSCI 4235. Development of Open-Source Software. 3 Credits.

Design, process, tools, and culture of open-source software development. Cross-platform development and testing. Geographic dispersal, social and team dynamics, licenses (GPL, BSD, other); code reuse (modular code, shared libraries); very-large-scale distributed development techniques (CVS, Bugzilla, release-management, mailing-lists). May be taken for graduate credit. Prerequisite: CSCI 2113 or CSCI 6221.

CSCI 4237. Software Design for Handheld Devices. 3 Credits.

Design of interactive software for handheld devices. Event driven programming, user interface design practices, memory management, handheld debugging techniques. May be taken for graduate credit. Prerequisite: CSCI 2113 or CSCI 6221.

CSCI 4243. Capstone Design Project I. 3 Credits.

Planning, design, and construction of the capstone project. Economic analysis of the project. Application of software engineering principles, including software requirements, specification, requirements engineering, reuse, documentation, verification/validation, testing, configuration management. Report writing and presentations. Prerequisite: senior status.

CSCI 4243W. Capstone Design Project I. 4 Credits.

Planning, design, and construction of the capstone project; economic analysis of the project; application of software engineering principles, including software requirements, specification, requirements engineering, reuse, documentation, verification/validation, testing, configuration management. Includes a significant engagement in writing as a form of critical inquiry and scholarly expression to satisfy the WID requirement. Prerequisites: CSCI 3212 and CSCI 3411. (Fall, Every year)

CSCI 4244. Capstone Design Project II. 4 Credits.

Continuation of CSCI 4243. ​Planning, design, and construction of the capstone project. Economic analysis of the project. Application of software engineering principles. Restricted to seniors. Prerequisites: CSCI 4243 or CSCI 4243W. (Spring, Every year)

CSCI 4331. Cryptography. 3 Credits.

Introduction to modern cryptography with a focus on formal definitions and provably-secure constructions. Topics include secret-key and public-key encryption, message-authentication codes, digital signatures, and advanced topics. Prerequisites: One of the following: CSCI 2312, CSCI 3212, CSCI 3313, MATH 2971, or MATH 2971W. Credit cannot be earned for this course and CSCI 6331. (Fall, Every year)

CSCI 4341. Continuous Algorithms. 3 Credits.

Structures in continuous mathematics from a computational viewpoint; continuous system simulation, computational modeling, probability, statistical techniques, next-event simulation, algorithms for continuous optimization, machine learning, neural networks, statistical language processing, robot control algorithms. Students cannot receive credit for both CSCI 4341 taken while an undergraduate and CSCI 6341 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4341 and CSCI 6341. Prerequisites: CSCI 1311 and CSCI 2113. (Spring, Every year)

CSCI 4342. Computational Linear Algebra and Applications. 3 Credits.

Application of linear algebra to computer science and engineering, with a computational perspective; points, vectors, matrices, and their programming repreentations; algorithms for 3D transformations, pose and viewpoint estimation; linear equations, independence, rank; algorithms for matrix decompositions, reduction of dimension; computation with large matrices, under and over-determined systems; applications to large data, computer vision, text processing. Students cannot receive credit for both CSCI 4342 taken while an undergraduate and CSCI 6342 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4342 and CSCI 6342. Prerequisite: CSCI 2113. (Spring, Every year)

CSCI 4345. Introduction to Quantum Computing. 3 Credits.

Foundations of quantum computing, Dirac notation, complex vector spaces, state representation, operators. Single and multiple qubits, entanglement, measurement. Standard circuit model. Quantum algorithms and protocols, EPR paradox, Bell’s theorem. Prerequisite: CSCI 4342, or EMSE 2705, or MATH 2184, or MATH 2185 ; and CSCI 3212, or ECE 3220, or MATH 2971, or MATH 2971W, or PHYS 2023. Credit cannot be earned for this course and CSCI 6345. (Spring, Every year)

CSCI 4364. Machine Learning. 3 Credits.

Supervised and unsupervised learning, regression, classification, linear models, perceptrons, ensemble methods, non-parametrics, online learning, active learning, feature selection, parameter tuning, and model evaluation. Prerequisites: CSCI 3212; and CSCI 3362 or CSCI 4341 or CSCI 6362 or APSC 3115 or DNSC 2001 or STAT 4157; and CSCI 4342 or EMSE 2705 or MATH 2184 or MATH 2185. Recommended background: Algorithms, probability and statistics, and linear algebra. Credit cannot be earned for this course and CSCI 6364. (Spring and fall, Every year)

CSCI 4366. Neural Networks and Deep Learning. 3 Credits.

Introduction to deep learning with neural networks: theory and practice. Creating from scratch, simplification with software packages, regression and classification problems for both simple (numerical, etc.) and complex (images, etc.) datasets. Restricted to Computer science majors. Prerequisites: MATH 1231 and CSCI 3212; and MATH 2184 or MATH 2185 or CSCI 4342 or EMSE 2705. Recommended background: Calculus, linear algebra, programming, and algorithms. Credit cannot be earned for this course and CSCI 6366. (Fall, Every year)

CSCI 4414. Introduction to Blockchain Technology and Applications. 3 Credits.

Introduction to blockchain concepts. Illustrates applications in both technical and business contexts. May be taken for graduate credit. Recommended background: prior coursework and background in computer science disciplines, programming, security protocols, machine learning, and distributed systems is helpful. (Fall and spring, Every year)

CSCI 4415. Real-Time and Embedded Systems. 3 Credits.

Development of software for real-time control of physical systems; reliability and fault tolerance, exceptions and exception handling, reliability and concurrent processes, timeouts, deadline scheduling, shared-memory and message-based device drivers. May be taken for graduate credit. Prerequisite: CSCI 2113. (Spring, Every year)

CSCI 4417. UNIX System Programming. 3 Credits.

Exposure to UNIX internals. Use of UNIX system calls and utilities in conjunction with script and C programs. RFCs, GNU project, and other collaborative traditions in the UNIX community. May be taken for graduate credit. Prerequisite: Senior status or 1 year of C programming and UNIX user experience.

CSCI 4418. UNIX System Administration. 3 Credits.

System administration for the stand-alone system or small networks. Installation of two or more UNIX variants (Linux, FreeBSD, Solaris) on Intel or Sparc platforms. Configuration of mail, name services, and other network utilities. Backup and recovery, security and ethics. May be taken for graduate credit. Prerequisite: CSCI 4417.

CSCI 4431. Computer Networks I. 3 Credits.

Higher-layer protocols and network applications on the Internet, such as session layer, presentation layer, data encryption, directory services and reliable transfer services, telnet, network management, network measurements, e-mail systems, and error reporting. Students cannot receive credit for both CSCI 4431 taken while an undergraduate and CSCI 6431 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4431 and CSCI 6431. Prerequisites: CSCI 2113 and CSCI 2461. (Fall, Every year)

CSCI 4431W. Computer Networks I. 3 Credits.

Higher-layer protocols and network applications on the Internet, such as session layer, presentation layer, data encryption, directory services and reliable transfer services, telnet, network management, network measurements, e-mail systems, and error reporting. Includes a significant engagement in writing as a form of critical inquiry and scholarly expression to satisfy the WID requirement. Prerequisites: CSCI 2113 and CSCI 2461. (Fall and spring, Every year)

CSCI 4454. Augmented and Virtual Reality. 3 Credits.

Principles and practice of augmented reality (AR) and virtual reality (VR); 3D UI/UX and user interaction for immersive experiences; design and implementation of VR and mobile AR applications. May be taken for graduate credit with extra work. Prerequisites: CSCI 2113. (Spring and fall, Every year)

CSCI 4455. Computer Game Design and Programming. 3 Credits.

Principles, techniques, and design of computer games. Graphic game engines, modeling, motion, AI and interaction; sound design and synthesis; real-time software and hardware issues. May be taken for graduate credit with extra work assigned. Prerequisites: CSCI 2113.   (Every Year)

CSCI 4511. Artificial Intelligence Algorithms. 3 Credits.

Knowledge representation and reasoning, propositional logic and predicate calculus. Logic programming; search, game trees, backtracking; planning. May be taken for graduate credit. Prerequisites: CSCI 3212 and CSCI 3221. (Spring, Every year)

CSCI 4521. Introduction to Mobile Robotics. 3 Credits.

Overview of autonomous mobile robotics. Sensing, localization, calibration, mapping, perception, decision making, planning, and control. Emphasis on algorithmic rather than hardware aspects of robotics. Development of algorithms that can operate autonomous mobile platforms in complex, real-world environments. Prerequisites: MATH 1232 and MATH 2184; and CSCI 3362 or CSCI 4341. (Fall and spring, Every year)

CSCI 4525. Autonomous Robotics: Manipulation. 3 Credits.

Introduction to robot manipulation. Core principles necessary to program robots for autonomous operation in dynamic and typically human-centric environments. Transdisciplinary concepts from computer science (reinforcement learning, perception), mechanical engineering (kinematics, dynamics), and electrical engineering (control theory). Prerequisites: Permission of the instructor. (Fall and spring, Every year)

CSCI 4527. Introduction to Computer Vision. 3 Credits.

Introduction and overview of computer vision. Image-formation signal processing and filtering. Saliency, image features and feature extraction, tracking, stereo disparity estimation, structure form motion, photogrammetry, optic flow, homography estimation and warping, scene segmentation, place recognition, object recognition, robust estimation, and camera calibration. Prerequisites: MATH 1232 and MATH 2184; and CSCI 3362 or CSCI 4341. Same As: CSCI 6527. (Spring, Every year)

CSCI 4531. Computer Security. 3 Credits.

Risk analysis, cryptography, operating system security, identification and authentication systems, database security. Students cannot receive credit for both CSCI 4531 taken while an undergraduate and CSCI 6531 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4531 and CSCI 6531. Corequisite: CSCI 4331. Prerequisite: CSCI 3411. (Spring, Every year)

CSCI 4532. Information Policy. 3 Credits.

Roles, issues, and impacts of computer-based information systems in national and international arenas, focusing on privacy, equity, freedom of speech, intellectual property, and access to personal and governmental information. Professional responsibilities, ethics, and common and best practices in information use. Students cannot receive credit for both CSCI 4532 taken while an undergraduate and CSCI 6532 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4532 and CSCI 6532. (Fall, Every year)

CSCI 4533. Introduction to Usable Security and Privacy. 3 Credits.

Introduction to concepts and research methods in human factors in computer security and privacy; reading, writing, reviewing scientific literature; developing research problems for exploration and presentation. Restricted to computer science majors and minors. Prerequisites: CSCI 2113. (Spring, Every year)

CSCI 4541. Network Security. 3 Credits.

Security protocols and applications in local, global, and wireless networks; IPSec and packet-level communication security systems; network authentication and key-exchange protocols; intrusion detection systems and firewalls; secure network applications; network worms and denial-of-service attacks. Students cannot receive credit for both CSCI 4541 taken while an undergraduate and CSCI 6541 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4541 and CSCI 6541. Prerequisite: CSCI 4531. (Spring, Every year)

CSCI 4551. Concepts and Applications of Computer Graphics. 3 Credits.

Introduction to computer graphics without programming; building 3-D geometry and rendering; computer animation; virtual reality and computer games; hands-on projects in modeling, rendering, and animation using commercial software; hands-on projects in photo and video manipulation.

CSCI 4552. Design of Computer Animation I. 3 Credits.

Use of commercial 3-D computer animation packages to create digital artistic works. Principles of animation, including timing, exaggeration of motion, and anticipation; use of a storyboard; modeling; motion; rendering and editing. (Fall, Every year)

CSCI 4553. Design of Computer Animation II. 3 Credits.

Use of commercial 3-D animation packages to create artistic works and visualizations. Process-spanning concepts of development through pre-production, production, and post-production. Emphasis on developing original content and attaining high production values. Prerequisite: CSCI 4552.

CSCI 4554. Computer Graphics I. 3 Credits.

Graphics primitives; 2D, 3D, and viewing transformations; hierarchical modeling and animation; illumination and shading; texture mapping; shaders; visibility and collision detection; sampling and anti-aliasing; global illumination; projects using OpenGL graphics API. May be taken for graduate credit. Prerequisites: CSCI 2113 or CSCI 6221. (Spring, Every year)

CSCI 4561. Design of User–Interface Programs. 3 Credits.

Structure of interactive programs. Widgets, windows, and input devices. Client–server model, event-driven programming, and callbacks. Window systems (e.g., Xwindows) and dialog control. May be taken for graduate credit. Prerequisite: CSCI 2113 or CSCI 6221.

CSCI 4572. Computational Biology. 3 Credits.

Pairwise alignment and scoring. Multiple sequence alignment. Fragment assembly, physical mapping of DNA. Phylogenetic trees. Molecular structure prediction and protein folding. Microarrays and microarray data, image comparison. Clustering. Overview of biological databases, PDB, MMDB, GenBank. Draft genomes and genome browsers. Pathway databases. May be taken for graduate credit. Prerequisite: CSCI 3571 and CSCI 3212 or CSCI 6212.

CSCI 4576. Introduction to Biomedical Computing. 3 Credits.

A survey of the problems and solutions in biomedical computing. Application of computers in medicine. Patient care and monitoring systems, electronic medical records, digital imaging and analysis. Telemedicine, medical ethics, health care regulations and organizations.

CSCI 4577. Biomedical Computing. 3 Credits.

Computing issues in epidemiology and biosurveillance, decision support, medical imaging and visualization, image-guided surgery; medical databases, issues in system integration, mobile medical computing. May be taken for graduate credit. Corequisite: CSCI 2441. Restricted to graduate students. Prerequisites: CSCI 2113 and CSCI 4576. (Spring, Every year)

CSCI 4907. Advanced Topics. 3 Credits.

Topics vary by semester. May be repeated for credit provided topic differs. Consult the Schedule of Classes for more information. Restricted to computer science majors and minors. (Spring and fall, Every year)

CSCI 5099. Variable Topics. 1-99 Credits.

CSCI 6001. Introduction to Computer Programming and Software Development. 3 Credits.

Introduction to concepts and skill development in programming and software development, including problem solving on a digital computer and writing, debugging, and executing programs. Restricted to students in select programs; departmental permission is required. (Fall, spring, and summer, Every year)

CSCI 6002. Introduction to Data Structures and Their Applications. 3 Credits.

Introduction to core computer science data structures including: arrays, lists, linked structures, stacks, queues, and trees. Sorting, searching, and comparison of algorithmic performance. Restricted to students in select programs; departmental permission is required. (Fall, spring, and summer, Every year)

CSCI 6003. Introduction to Software Design and Engineering. 3 Credits.

Introduction to objects and object-oriented programming. Software development for applications including development with GUIs, database access, threads, web programming. Restricted to students in select programs; departmental permission is required. (Fall, spring, and summer, Every year)

CSCI 6004. Introduction to Web Development. 3 Credits.

Client-server programming, web development, front end design, back-end server development, database use for web services. Front and back-end languages, server administration and tools. Departmental permission required prior to enrollment. Prerequisites: CSCI 2113 or CSCI 6003. Credit cannot be earned for this course and CSCI 2441, CSCI 2441W, CSCI 2541W.

CSCI 6010. Introduction to Computer Science Fundamentals. 3 Credits.

Review of programming in a high-level language using Java or C++ Introduction to objects and object-oriented programming: static and dynamic objects, inheritance, dynamic method invocation. Data structures: 2D-arrays, linked-lists, stacks, queues, trees, hashing. Discrete structures: sets, graphs, permutations and combinations. Restricted to students whose letter of admission stated that the course is required. (Fall and spring, Every year)

CSCI 6011. Introduction to Computer Systems. 3 Credits.

Introduction to basic concepts underlying all computer systems; processor operation, hierarchical memory systems, elementary logic circuits, and systems software such as compilers, linkers, and operating systems from the programmer’s perspective. Students must have completed one year of coursework in programming in C, C++, or Java prior to registration. Restricted to students whose letter of admission stated that the course is required. (Fall and spring, Every year)

CSCI 6012. Cybersecurity and Privacy. 3 Credits.

Overview of cybersecurity and privacy, including cryptography, authentication, malware, viruses, network security, anonymity, privacy and online privacy, risk management; common cyberattacks and techniques for detection and defense; policy and legal perspectives for managing cybersecurity missions supporting private sector and government; cyber technologies as applied to the stability of global information and communications infrastructure; government cybersecurity policies. (Fall, spring, And summer)

CSCI 6013. Security in Mobile Computing. 3 Credits.

Relationship between security strategic plan and business strategic plan; mobile device solutions (MDS) to access enterprise corporate data; bring your own device (BYOD) paradigm; mobile device management (MDM) best practices, policies, network controls to identify countermeasures, and risk mitigation strategies against common threats. Overview of mobile security solutions for classified processing and communications. Prerequisites: CSCI 6012. (Fall, spring, And summer)

CSCI 6015. Cyber Forensics. 3 Credits.

Acquiring, preserving and analyzing digitally stored information while ensuring that this information is admissible as evidence in a court of law. Principles and techniques for cyber forensics investigations using industry-standard forensic process. Restricted to SEAS online students.

CSCI 6016. Applied Network Defense. 3 Credits.

Computer security: protection aspects of the Internet. Cryptographic tools to provide security, such as shared key encryption (DES, 3DES, RC and more), public key encryption, key exchange, and digital signature. Internet protocols and applications. Restricted to SEAS online students.

CSCI 6018. Cloud Application Architecture. 3 Credits.

Cloud application design guidelines and software patterns. Survey of cloud services for scalable secure cloud applications. Trade-offs in cloud application design, container vs virtual machine deployments, and monolithic vs microservice. Restricted to SEAS online students.

CSCI 6114. Introduction to Computer Systems and Systems Programming. 3 Credits.

Introduction to basic concepts underlying all computer systems; processor operation, hierarchical memory systems, elementary logic circuits, and systems software such as compilers, linkers, and operating systems from the programmer’s perspective. Software development with the C programming language. Students cannot receive credit for this course and CSCI 6011. Restricted to students in select programs; departmental permission is required. Prerequisites: CSCI 2113 or CSCI 6003. (Fall, spring, and summer, Every year)

CSCI 6115. Application Development I. 3 Credits.

Client-server programming, web development, front end design, back-end server development, introduction to databases. Front and back-end languages, server administration and tools. Students cannot get credit for this course and CSCI 2441, CSCI 2441W, CSCI 2541, or CSCI 2541W. Restricted to students in select programs; departmental permission is required. Prerequisites: CSCI 2113 or CSCI 6003. (Fall, spring, and summer, Every year)

CSCI 6116. Advanced Application Development. 3 Credits.

Design of large software systems and installable applications, development frameworks, integration of components and services, cloud and web programming, and mobile device development; software specification and testing. Prerequisites: CSCI 6115, CSCI 6431 and CSCI 6441. (Fall, spring, and summer, Every year)

CSCI 6212. Design and Analysis of Algorithms. 3 Credits.

Design and analysis of algorithms; Turing machines; NP-complete theory; algorithmic techniques: divide-and-conquer, greedy, dynamic programming, graph traversal, backtracking, and branch-and-bound; applications include sorting and searching, graph algorithms, and optimization. Students are expected to know data structures and possess general programming skills in one or more procedural/OOP language such as C/C++/Java, and to have a good mathematical background such as discrete math and some calculus, prior to registration. (Fall, spring, and summer, Every year)

CSCI 6221. Advanced Software Paradigms. 3 Credits.

Object-oriented, procedural, functional, and concurrent software design paradigms; design patterns; software life cycle concepts; tadeoffs between compiled and interpreted languages; examples from Java, C, C++ and Perl. Restricted to graduate students. (Fall, spring, and summer, Every year)

CSCI 6223. Principles of Programming Languages. 3 Credits.

Fundamental concepts underlying design of programming languages; detailed study of functional and object-oriented computational models; types, evaluation, abstraction, control flow, modules, mutation, laziness, polymorphism, subtyping, inheritance. Students cannot receive credit for both CSCI 6223 taken while a graduate and CSCI 4223 taken while an undergraduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4223 and CSCI 6223. (Spring, Odd years)

CSCI 6231. Software Engineering. 3 Credits.

The life-cycle model. Requirements and specifications. Design models, structured and object-oriented design. Program development, PDL’s tools, configuration control. Program, unit, and integration testing. Program verification. Other development models. Development metrics. Computer-aided software engineering (CASE). Prerequisites: CSCI 6221 and CSCI 6212. (Fall and spring, Every year)

CSCI 6232. Software Engineering Development. 3 Credits.

Formal methods in software engineering. First-order logic, basic specification elements, rigorous proofs, formal development process, concurrency. Prerequisites: CSCI 6461 and CSCI 6212. (Fall and spring, Every year)

CSCI 6233. Software Testing and Quality. 3 Credits.

Flow graphs and path testing, transaction flow testing, data flow testing, software metrics, system testing, test planning and documentation, reliability, statistical testing. Prerequisite: CSCI 6231. (Fall and spring, Every year)

CSCI 6234. Object-Oriented Design. 3 Credits.

Object-oriented systems, software reusability, software modularity, top–down and bottom–up approaches, object classification, genericity, metaprogramming, concurrent object-oriented programming languages. Prerequisite: CSCI 6221.

CSCI 6235. Component-Based Enterprise Software Development. 3 Credits.

Component-based software development for enterprise applications. Component models, multi-tier architecture. Specific case studies may include topics such as Enterprise Java Beans, DCOM, and COBRA. Prerequisite: CSCI 6221.

CSCI 6311. Theory of Computation. 3 Credits.

Theoretical foundations of computer science. Formal languages and automata; regular expressions, context-free languages, parsing; Turing machines and complexity; partial recursive functions; undecidability; program correctness; fixed-point theory; formal specifications of software. Prerequisite: CSCI 6212.

CSCI 6312. Graph Theory and Applications. 3 Credits.

Undirected and directed graphs. Connectivity, partitions, cycles and matchings. Edge and vertex coloring, chromatic polynomials, and the four-coloring problem. Planar graphs and Kuratowski’s theorem. Properties of random graphs. Applications to a variety of problems. Prerequisite: CSCI 6212. (Fall and spring, Every year)

CSCI 6318. Complex Systems. 3 Credits.

The edge-of-chaos phenomenon, phase transitions, power laws, small-world networks, Boolean networks, cellular automata, and complex dynamics. Applications to networks and biological systems. Prerequisite: CSCI 6212.

CSCI 6331. Cryptography. 3 Credits.

Introduction to modern cryptography with a focus on formal definitions and provably-secure constructions. Topics include secret-key and public-key encryption, message-authentication codes, digital signatures, and advanced topics. Prerequisites: CSCI 6212. Credit cannot be earned for this course and CSCI 4331. (Fall, Every year)

CSCI 6341. Continuous Algorithms. 3 Credits.

Structures in continuous mathematics from a computational viewpoint; continuous system simulation, computational modeling, probability, statistical techniques, next-event simulation, algorithms for continuous optimization, machine learning, neural networks, statistical language processing, robot control algorithms. Students cannot receive credit for both CSCI 4341 taken while an undergraduate and CSCI 6341 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4341 and CSCI 6341. (Spring, Every year)

CSCI 6342. Computational Linear Algebra and Applications. 3 Credits.

Linear algebra applied to computational problems in computer science and engineering; points, vectors, matrices, and their programming abstractions; 3D transformations, pose and viewpoint estimation; linear equations; algorithms for matrix decompositions, dimension reduction, computation with large matrices, under- and over-determined systems; applications to big data, computer vision, text processing. Students cannot receive credit for both CSCI 4342 taken while an undergraduate and CSCI 6342 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4342 and CSCI 6342. (Spring, Every year)

CSCI 6345. Introduction to Quantum Computing. 3 Credits.

Foundations of quantum computing, Dirac notation, complex vector spaces, state representation, operators. Single and multiple qubits, entanglement, measurement. Standard circuit model. Quantum algorithms and protocols, EPR paradox, Bell’s theorem. Recommended background: Linear algebra. Credit cannot be earned for this course and CSCI 4345. (Spring, Every year)

CSCI 6351. Data Compression. 3 Credits.

Background on signals, information theory, transforms, human vision, and metrics. Lossless and lossy compression techniques. Video compression. Compression standards. Progressive transmission. Prerequisite: CSCI 6212.

CSCI 6362. Probability for Computer Science. 3 Credits.

Concepts of probability and statistics used in computer science; random variables; conditional probability, independence, correlation; law of large numbers, central limit theorem; applications to computer science, including entropy, information theory, data compression, coding, inference, Markov chains, randomized algorithms. Students cannot receive credit for both CSCI 3362 taken while an undergraduate and CSCI 6362 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 3362 and CSCI 6362. (Spring, Every year)

CSCI 6364. Machine Learning. 3 Credits.

Supervised and unsupervised learning, regression, classification, linear models, perceptrons, ensemble methods, non-parametrics, online learning, active learning, feature selection, parameter tuning, and model evaluation. Prerequisites: CSCI 6212. Recommended background: Algorithms, Probability and Statistics and Linear Algebra. Credit cannot be earned for this course and CSCI 4364. (Spring and fall, Every year)

CSCI 6365. Advanced Machine Learning. 3 Credits.

Theory and algorithms for machine learning research; in-depth focus on advanced machine learning topics such as clustering, learning from data streams, and climate informatics. Prerequisite: CSCI 6364. (Spring, Every year)

CSCI 6366. Neural Networks and Deep Learning. 3 Credits.

Introduction to deep learning with neural networks: theory and practice. Creating from scratch, simplification with software packages, regression and classification problems for both simple (numerical, etc.) and complex (images, etc.) datasets. Restricted to computer science majors. Prerequisites: CSCI 6212. Recommended background: Calculus, linear algebra, programming, and algorithms. Credit cannot be earned for this course and CSCI 4366. (Fall, Every year)

CSCI 6411. Advanced Operating Systems. 3 Credits.

Fundamentals of operating system design and structure, resource management, and system support for multi-core. Topics include scheduling, synchronization, system structure, virtual address spaces, memory management, I/O management, and systems abstractions for modern multi-core architectures. The course involves an implementation component and requires substantial programming experience. This course can be taken for credit by undergraduates who have taken CSCI 3411. Prerequisite: CSCI 6461 or CSCI 2461.

CSCI 6412. OS Design and Implementation. 3 Credits.

Builds on CSCI 6411 to provide students with the knowledge to build parts of modern operating systems, which is studied and motivated from the viewpoint of practical design and implementation. Students learn how operating system’s components for resource management and abstraction are built from the ground up and integrated into working systems considering the challenges of reliability, multi-core, and security. The course has a significant implementation component; substantial low-level programming experience is required. Prerequisite: CSCI 6411. (Fall and spring, Every year)

CSCI 6418. Unix Systems Administration. 3 Credits.

System administration for the stand-alone system or small networks; installation of two or more UNIX variants (Linux, FreeBSD, Solaris) hardware platforms; configuration of mail, name services, and other network utilities; backup and recovery, security and ethics. Students cannot receive credit for both CSCI 4418 taken while an undergraduate and CSCI 6418 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4418 and CSCI 6418. Prerequisites: CSCI 6114; or CSCI 6010 and CSCI 6011. (Fall, spring, and summer, Every year)

CSCI 6419. Advanced Systems Administration. 3 Credits.

Administration of large systems, non-Unix platforms, web document systems, website administration, cloud and web services, user and IT personnel components, and economics of IT support. Prerequisite: CSCI 6418. (Fall, spring, and summer, Every year)

CSCI 6421. Distributed and Cluster Computing. 3 Credits.

Algorithmic and implementation challenges in building large scale distributed applications; distributed coordination, scheduling, consistency issues, and fault tolerance algorithms; fundamental distributed systems concepts applied to both high performance computing and cloud computing environments. Prerequisite: CSCI 6212. Recommended background: Substantial programming experience. (Fall, Every year)

CSCI 6431. Computer Networks. 3 Credits.

Fundamental concepts in the design and implementation of computer communication networks and internet, their protocols, and applications; layered network architectures, applications, network programming interfaces, transport, routing, data link protocols, local area networks, network management, and network security. Students cannot receive credit for both CSCI 4431/CSCI 4431W taken while an undergraduate and CSCI 6431 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4431/CSCI 4431W and CSCI 6431. Prerequisite: CSCI 6461. (Fall, Every year)

CSCI 6433. Internet Protocols. 3 Credits.

Understanding of the layered protocols for the Internet. Interconnection of networks. The IP protocol and routing algorithms, switches, bridges, and routers. The transmission control protocol (TCP). Addressing and names. Application-specific protocols, FTP, TELNET, SMTP, SNMP, HTTP. Domain name services. Prerequisites: CSCI 6221 and CSCI 6431. (Fall and spring, Every year)

CSCI 6434. Design of Internet Protocols. 3 Credits.

Protocol specifications and formal description methods. Finite-state descriptions of Internet protocols. Specification and Description Language. Implementation of protocol specifications. Prerequisites: CSCI 6212 and CSCI 6433. (Fall and spring, Every year)

CSCI 6441. Database Management Systems. 3 Credits.

Design and architecture of relational database management systems; query languages, data models, index structures, database application design. Students cannot receive credit for CSCI 2441W or 2541W taken while an undergraduate and CSCI 6441 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for CSCI 2441W or CSCI 2541W and CSCI 6441. Prerequisites: CSCI 6221 and CSCI 6461. (Spring, Every year)

CSCI 6442. Database Systems II. 3 Credits.

Concepts in database systems. Relational database design. Editing, report generation, updating, schema refinement, tuning. Construction of database management systems. Conceptual and logical design of a database. Prerequisite: CSCI 6441.

CSCI 6443. Data Mining. 3 Credits.

Fundamental concepts of data mining. Algorithm techniques for data mining, including classification, clustering, association rules mining. Prerequisites: CSCI 6441 or permission of the instructor. (Fall and spring, Every year)

CSCI 6444. Introduction to Big Data and Analytics. 3 Credits.

Big data, its properties, technology and the types and classes of analytics that can be applied to it; associated storage and programming systems. Students gain practical experience through focused projects to apply different analytics to a data set. Prerequisites: CSCI 2113, CSCI 6221, or EMSE 6574. Recommended background: Experience using programming tools SPSS, STATA, R, or SAS is advantageous but not required. (Fall, spring, and summer, Every year)

CSCI 6451. Information Retrieval Systems. 3 Credits.

Information organization and retrieval of natural language data by digital computer systems; statistical, syntactic, and logical analysis of natural language; dictionary and thesaurus systems; searching strategies and cataloging. Large-scale file structures. Prerequisites: CSCI 6221 and CSCI 6461. (Fall and spring, Every year)

CSCI 6461. Computer System Architecture. 3 Credits.

Concepts in processor, system, and network architectures; architecture of pipeline, superscalar, and VLIW/EPIC processors; multiprocessors and interconnection networks; cache coherence and memory subsystem design for multiprocessor architectures; parallel and distributed system architecture; internetworking. Restricted to graduate students. (Fall, spring, and summer, Every year)

CSCI 6511. Artificial Intelligence. 3 Credits.

Representation and space search; heuristic search; predicate calculus; knowledge representation and knowledge engineering for expert systems; rule-based, hybrid, and O-O systems; semantic nets, frames, and natural language; theorem provers; planning, learning, neural nets; use of AI languages. Prerequisite: CSCI 6212. (Spring, Every year)

CSCI 6515. Natural Language Understanding. 3 Credits.

The state of the art of natural language parsing and semantic understanding by computer systems. Review of formal, context-free, and transformational grammars and parsing. Augmented transition networks: problems of complexity, semantics, and context. Deterministic parsing and semantic parsing. Prerequisite: CSCI 6511.

CSCI 6521. Introduction to Mobile Robotics. 3 Credits.

Concepts of autonomous mobile robotics with emphasis on algorithmic aspects. Sensing, sensor fusion, localization, calibration, mapping, perception, decision making, planning, behavior-based control, world modeling, and navigation. Development of algorithms that can operate autonomous mobile platforms in complex, real-world environments. Prerequisites: MATH 1232 and MATH 2184; and CSCI 6362 or CSCI 4341. (Fall and spring, Every year)

CSCI 6525. Autonomous Robotics: Manipulation. 3 Credits.

Manipulation and autonomous operation in dynamic, human-centric environments. Reinforcement learning, perception, optimization algorithms, kinematics, dynamics, control theory. Prerequisites: CSCI 6362 and MATH 2184; or permission of the instructor. (Fall and spring, Every year)

CSCI 6527. Introduction to Computer Vision. 3 Credits.

Image signal processing and filtering. Saliency, features and feature extraction, tracking, stereo disparity estimation, structure form motion, photogrammetry, optic flow, homography estimation and warping, scene segmentation, place recognition, object recognition, robust estimation, and camera calibration. Current research topics. Prerequisites: MATH 1232 and MATH 2184; and CSCI 6362 or CSCI 6341. (Fall and spring, Every year)

CSCI 6531. Computer Security. 3 Credits.

Functional description of cryptographic primitives; risk analysis; policy models; design principles; assurance; malicious logic. Students cannot receive credit for both CSCI 4531 taken while an undergraduate and CSCI 6531 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4531 and CSCI 6531. Prerequisite: CSCI 6461. (Spring, Every year)

CSCI 6532. Information Policy. 3 Credits.

Roles, issues, and impacts of computer-based information systems in national and international arenas, focusing on privacy, equity, freedom of speech, intellectual property, and access to personal and governmental information. Professional responsibilities, ethics, and common and best practices in information use. Students cannot receive credit for both CSCI 4532 taken while an undergraduate and CSCI 6532 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4532 and CSCI 6532. (Fall, Every year)

CSCI 6533. Intro to Usable Security & Privacy. 3 Credits.

Introduction to concepts and research methods in human factors in computer security and privacy; reading, writing, reviewing scientific literature; developing research problems for exploration and presentation. Restricted to computer science program. Corequisites: CSCI 6221, or CSCI 6461, or CSCI 6212. Credit cannot be earned for this course and CSCI 4533. (Spring, Every year)

CSCI 6534. Information Security in Government. 1-3 Credits.

Roles, issues, and governance of cyber security in the federal government. Overview of the technical aspects of cyber security including federally developed cybersecurity standards and frameworks and government and industry initiatives. Prerequisites: Permission of the instructor. (Spring and fall, Every year)

CSCI 6541. Network Security. 3 Credits.

Security protocols and applications in local, global, and wireless networks; IPSec and packet-level communication security systems; network authentication and key-exchange protocols; intrusion detection systems and firewalls; secure network applications; network worms and denial-of-service attacks. Students cannot receive credit for both CSCI 4541 taken while an undergraduate and CSCI 6541 taken while a graduate student. Students in the combined BS/MS program cannot receive credit for both CSCI 4541 and CSCI 6541. Prerequisite: CSCI 6531. (Spring, Every year)

CSCI 6542. Computer Network Defense. 3 Credits.

Offensive and defensive information warfare operations. Simulation of various attacks on and defenses of computer systems. Laws related to information warfare. History and literature related to information warfare attacks. Prerequisite: CSCI 6541.

CSCI 6545. Software Security. 3 Credits.

Security for software systems. Theory and practice of designing and implementing secure software. Security in the context of software engineering. Practical experience with building a software system and securing it, with emphasis on correctness and robustness. Requires substantial prior programming experience. Prerequisites: CSCI 6461 or CSCI 6411; and CSCI 6531 or EMSE 6540; or permission of the instructor. (Fall and spring, Every year)

CSCI 6547. Wireless and Mobile Security. 3 Credits.

Mobile agents, wireless Web, WAP, WEP, peer-to-peer computing; secure routing; intrusion detection and authentication on wireless networks; security for handheld devices; encryption and cryptographic measures for wireless; real-time wireless security; security measures for embedded devices. Prerequisites: CSCI 6431 and CSCI 6531. (Spring, Every year)

CSCI 6548. E-Commerce Security. 3 Credits.

Advanced technical topics in e-commerce security. Key security threats. Authentication and authorization models, directory services, cloud based IAM, federated identity. Public key cryptography and PKI. Mobile payment methods, digital currencies, blockchain. Technologies and applications for securing web commerce. Web service security standards. Prerequisites: CS 4531 or CS 6531. (Fall and spring, Every year)

CSCI 6554. Computer Graphics II. 3 Credits.

Algorithmic aspects of computer graphics; 3D viewing transformation; shape modeling; shading and illumination models; visible-surface determination; curves and surfaces; sampling and aliasing; global illumination, ray tracing and radiosity; shadows; image manipulation and texture mapping; procedural models. (Spring, Every year)

CSCI 6555. Computer Animation. 3 Credits.

Euler angles and quaternions; articulated figure motion; forward and inverse kinematics; kinematic, physics based, and behavioral motion control; character animation; motion capture; temporal aliasing; sound synthesis and synchronization. (Fall, Every year)

CSCI 6561. Design of Human–Computer Interface. 3 Credits.

Design of dialogues for interactive systems. Psychological, physiological, linguistic, and perceptual factors. Advantages and disadvantages of various interaction techniques, command language syntaxes, and data presentations. Design methodology and guidelines. Case studies, research readings, and projects. Prerequisite: CSCI 6221.

CSCI 6562. Design of Interactive Multimedia. 3 Credits.

History, theory, and development of multimedia concepts. Hardware components, platforms, and authoring tools. Scientific, technical, and cognitive foundations of various media including text, sound, graphics, and video. Interface design. Use of a media taxonomy as a design and evaluation tool. Completion of a multimedia portfolio required. Prerequisite: CSCI 6221.

CSCI 6572. Computational Biology Algorithms. 3 Credits.

Algorithms and models for DNA and protein sequence alignments, gene finding, identification of gene regulatory regions, sequence evolution and phylogenetics, RNA and protein structure, microarray and/or proteomics data analysis. Prerequisites: CSCI 6212; and programming experience in C/C++ or Java. (Spring, Every year)

CSCI 6900. Colloquium. 0 Credits.

Lectures by outstanding authorities in computer science. PhD students in computer science must take the course for a number of different lecture topics determined by the department. Consult the Schedule of Classes for additional information.

CSCI 6907. Special Topics. 3 Credits.

Topics vary by semester. May be repeated for credit if the topic differs. See department for details. (Fall and spring, Every year)

CSCI 6908. Research. 1-12 Credits.

Applied research and experimentation projects, as arranged. May be repeated for credit.

CSCI 6917. Guided Research for Graduate Students I. 3 Credits.

Practice research methods, including validation of hypothesis, synthesis and problem solving, and validation methods. Synthesize scientific output including experimental results and theoretical analysis. Present outcomes. Prerequisites: CSCI 6212 and CSCI 6221.

CSCI 6918. Guided Research for Graduate Students II. 3 Credits.

Adds depth to CSCI 6917. Practice research methods, including validation of hypothesis, synthesis and problem solving, and validation methods. Synthesize scientific output including experimental results and theoretical analysis. Present outcomes. Prerequisites: CSCI 6212 and CSCI 6221. Corequisites: CSCI 6917.

CSCI 6998. Thesis Research. 3 Credits.

CSCI 6999. Thesis Research. 3 Credits.

CSCI 8211. Advanced Topics in Algorithms. 3 Credits.

Graph algorithms, strongly connected components, biconnected components, dominators in acyclic graphs, ordered trees, network flow, planarity testing, bipartite matching, theory of NP completeness, NP-complete problems. Design and analysis of approximation algorithms for NP-complete problems. Prerequisite: CSCI 6212.

CSCI 8231. Advanced Topics in Software Engineering. 3 Credits.

Seminar on current research and developments in software engineering. Students develop a software package with the aid of available software tools such as requirement tool, design tool, code generators, testing tools, measurement tools, cost estimation tools. Prerequisites: CSCI 6232 and CSCI 6233. (Fall and spring, Every year)

CSCI 8331. Advanced Cryptography. 3 Credits.

Introduction to secure multi-party computation (MPC) and related topics. Basic definitions and core MPC protocols and reading and presenting the latest research on the topic. Includes practical experience with MPC implementation. Prerequisites: One of the following: CSCI 2312, CSCI 3212, CSCI 3313, CSCI 6212, MATH 2971, or MATH 2971W. Recommended background: Some experience with algorithms and cryptography. (Spring, Every year)

CSCI 8401. Advanced Topics in Systems. 3 Credits.

Seminar on current research and developments in computer operating systems. May be repeated for credit. (Spring, Even years)

CSCI 8431. Advanced Topics in Computer Networks and Networked Computing. 3 Credits.

Seminar on current research and developments in computer networks, Internet, networked computing, mobile computing and pervasive computing. May be repeated for credit. Prerequisites: CSCI 6461, CSCI 6212 and CSCI 6433. (Fall and spring, Every year)

CSCI 8440. Advanced Topics in Data Management. 3 Credits.

Seminar on current research and developments in computer database systems and information retrieval. May be repeated for credit. Prerequisite: CSCI 6442 or CSCI 6451.

CSCI 8531. Advanced Topics in Security. 3 Credits.

Seminar on current research and developments in information assurance. May be repeated for credit. Prerequisite: CSCI 6531.

CSCI 8554. Advanced Topics in Computer Graphics. 3 Credits.

Seminar on current research and developments in computer graphics. Spatial and temporal anti-aliasing: hidden-surface algorithms: illumination models, radiosity, textural mapping. May be repeated for credit. Prerequisite: CSCI 6554.

CSCI 8900. Advanced Selected Topics. 3 Credits.

Topics announced in the Schedule of Classes.

CSCI 8901. Research and Evaluation Methods. 3 Credits.

Required for all computer science doctoral candidates. The scientific method; research/design requirements and objectives: qualitative, quantitative, and case studies; performance metrics; design procedures and control; sources of error and bias; evaluation tools; formal validation methods; documentation standards. Prerequisite: APSC 3115.

CSCI 8998. Computer Science Research. 1-12 Credits.

May be repeated for credit. Restricted to doctoral candidates preparing for the qualifying examination. (Fall and spring, Every year)

CSCI 8999. Dissertation Research. 1-12 Credits.

Doctoral candidates performing dissertation research. Restricted to doctoral candidates. (Fall and spring, Every year)