skip to main content
cu: home | engineering | cuconnect | explore cu | cu a-z | search cu | contact cu cs: about | calendar | directory | catalog | schedules | contact cs
home · courses · 
 

Course Catalog

 
Hide Descriptions Show Descriptions
CSCI 1000 (1). Computer Science as a Field of Work and Study

Introduces curriculum, learning techniques, time management and career opportunities in Computer Science. Includes presentations from alumni and others with relevant educational and professional experience. This course was formerly offered as CSCI 2830 Special Topics in Computer Science: Computer Science as a Field of Work and Study.

CSCI 1220 (4). Virtual Worlds: An Introduction to Computer Science

Introduces the fundamental principles of computer science using an on-line virtual world called Second Life as the "laboratory" for the course. Students will learn how to program by creating objects of interest in Second Life. In-class and in-world discussions and readings will introduce the student to important ideas and concepts that shape the field of computer science. Same as ATLS 1220.

CSCI 1240 (3). The Computational World

Introduces and explores the "computational style of thinking" and its influence in science, mathematics, engineering and the arts. The course does not focus on the nuts and bolts of any particular programming language, but rather on the way in which computing has affected human culture and thought in the past half century. Same as ATLS 1240.

CSCI 1300 (4). Computer Science 1: Programming

Instructs students in analyzing problems and synthesizing programs for the solution, emphasizing good engineering practices for program construction, documentation, testing, and debugging. Uses C++ for programming projects.

GEEN 1300 (3). Introduction to Engineering Computing

Introduces the use of computers in engineering problem solving and elementary numerical methods. Learn programming fundamentals, including data and algorithm structure, and modular programming. Numerical methods learned include solving single, nonlinear equations, fixed-point iteration, Gaussian elimination, and linear regression. Software vehicles include Excel/VBA, Mathcad, and MATLAB. Prerequisites: Corequisite, APPM 1350.

GEEN 1400 (3). Engineering Projects

Provides first-year engineering students with opportunity to apply mathematical and scientific skills in interdisciplinary engineering projects. Students work in teams to design and build engineering projects under guidance of engineering faculty. Prototype projects are exhibited at an end-of-semester design expo.

 GEEN 1400. Assistive Technologies
 GEEN 1400. Computing in Social Networking Sites
 GEEN 1400. Introduction to Programming Using Your Cell Phone
 GEEN 1400. LEGO Robots
 GEEN 1400. Leonardo da Vinci: The Engineer
 GEEN 1400. Mechanical Automata
 GEEN 1400. Software Exhibits
CSCI 2270 (4). Computer Science 2: Data Structures

Studies data abstractions (e.g., stacks, queues, lists, trees) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications. Prerequisites: CSCI 1300 and one of APPM 1350 or MATH 1300.

CSCI 2400 (4). Computer Systems

Covers how programs are represented and executed by modern computers, including low-level machine representations of programs and data, an understanding of how computer components influence program performance and memory hierarchy. Prerequisites: CSCI 2270.

CSCI 2824 (3). Discrete Structures

Covers foundational material for computer science that is often assumed in advanced courses. Topics include set theory, Boolean algebra, functions and relations, graphs, propositional and predicate calculus, proofs, mathematical induction, recurrence relations, combinatorics, discrete probability. Focuses on examples based on diverse applications of computer science. Prerequisites: CSCI 2270.

CSCI 2830 (1-3). Special Topics in Computer Science

Covers topics of interest in computer science at the sophomore level. Content varies from semester to semester. Prerequisites: Consent of instructor.

 CSCI 2830. Artificial Life
 CSCI 2830. Computer Science as a Field of Work and Study
 CSCI 2830. Educational Technology House
 CSCI 2830. Human-Computer Interaction
 CSCI 2830. Ideas in Computing
 CSCI 2830. Java I Training
 CSCI 2830. Java II Training
 CSCI 2830. Java Programming
 CSCI 2830. Java Projects
 CSCI 2830. Linear Algebra with Computer Science Applications
 CSCI 2830. Mentoring/Debugging
 CSCI 2830. Solaris System Administration
 CSCI 2830. Technology for Community
 CSCI 2830. The Future(s) of Computing
 CSCI 2830. The Internet for Everyone
CSCI 2900 (1-3). Lower-Division, Undergraduate Level Independent Study

Offers selected topics at the elementary level for students with little or no previous computing experience. An Independent Study Agreement must be completed to enroll in this course.

CSCI 3002 (3). Digital and Social Systems Foundations

Introduces practice and research in human computer interaction, design of interactive systems, computer supported cooperative work, computer supported collaborative learning, educational technology, tools that support creativity, user-developed knowledge collections and gaming.

CSCI 3104 (4). Algorithms

Studies advanced data structures, computational geometry, cryptography, dynamic programming, greedy algorithms, divide-and-conquer, graph algorithms (e.g., depth-first search), network algorithms (e.g., shortest paths), approximation algorithms. Prerequisites: CSCI 2270 and two semesters of calculus.

CSCI 3112 (1-3). Digital and Social Systems Professional Development

Supports students in developing professional skills and practices in human computer interaction, design of interactive systems, computer supported cooperative work, computer supported collaborative learning, educational technology, tools that support creativity, user-developed knowledge collections, and gaming. May be repeated up to 10 total credit hours. Same as ATLS 3112.

CSCI 3155 (4). Principles of Programming Languages

Studies fundamental concepts on which programming languages are based and execution models supporting them. Topics include values, variables, bindings, type systems, control structures, exceptions, concurrency, and modularity. Learn how to select a language and to adapt to a new language. Prerequisites: CSCI 2270 and one of CSCI 2400 or ECEN 2120.

CSCI 3202 (3). Introduction to Artificial Intelligence

Surveys artificial intelligence techniques of knowledge representation, search, learning, and natural language processing. Introduces artificial intelligence programming in Lisp. Prerequisites: CSCI 2270.

CSCI 3287 (3). Database and Information Systems

Surveys data management, including file systems, database management systems design, physical data organizations, data models, query languages, concurrency, and database protection. Prerequisites: CSCI 3104.

CSCI 3308 (3). Software Engineering Methods and Tools

Focuses on software engineering methods and tools for application development, including design and system organization; using and creating reusable libraries; building, testing, and debugging; and performance evaluation. Two hours of lecture, three hours of lab per week. Prerequisites: CSCI 2270.

CSCI 3434 (3). Theory of Computation

Introduces the foundations of formal language theory, computability, and complexity. Shows relationship between automata and various classes of languages. Addresses the issue of which problems can be solved by computational means, and studies complexity of solutions. Prerequisites: CSCI 3104 and CSCI 3155.

CSCI 3656 (3). Numerical Computation

Covers development, computer implementation, and analysis of numerical methods for applied mathematical problems. Topics include floating point arithmetic, numerical solution of linear systems of equations, root finding, numerical interpolation, differentiation, and integration. Prerequisites: Two semesters of calculus, linear algebra, and one of CSCI 1200 or CSCI 1300.

CSCI 3702 (3). Cognitive Science

Introduces cognitive science, drawing from psychology, philosophy, artificial intelligence, neuroscience, and linguistics. Studies the linguistic relativity hypothesis, consciousness, categorization, linguistic rules, the mind-body problem, nature versus nurture, conceptual structure and metaphor, logic/problem solving, and judgment. Emphasizes the nature, implications, and limitations of the computational model of mind. Same as LING 3005, PHIL 3310, and PSYC 3005. Prerequisites: Two of the following four courses: CSCI 1300, LING 2000, PHIL 2440, PSYC 2145.

CSCI 3753 (4). Operating Systems

Examines software comprising computing systems as it builds upon hardware to provide a programming environment. Looks at structure and function of editors, compilers/assemblers, linkers, etc. Basic operating systems concepts and systems programming in high-level languages. Prerequisites: CSCI 2270 and one of CSCI 2400 or ECEN 2120.

CSCI 4000 (3). Entrepreneurship in Computing

Examines the development of new venture creation from the entrepreneur's perspective. Provides an understanding of the entire process including opportunity identification, feasibility study, fundraising, organization, team creation, and exit strategies through case studies, oral and written presentations, and outside speakers. Taught by an experienced entrepreneur. Prerequisites: CSCI 2270 and junior standing.

CSCI 4113 (3). UNIX System Administration

Introduces the internals of UNIX, trouble shooting system and network problems, hardware and software configuration and installation, and security aspects of hosts on the Internet. Offers students hands-on experience on dedicated laboratory workstations. Prerequisites: CSCI 2270 or consent of instructor. Recommended: CSCI 3308.

CSCI 4123 (3). Network Laboratory

Develops enterprise level design and configuration skills on local area networking via switching and routing, as well as the provisioning of remote data communications across diverse WAN technologies, using the latest available transport and security services. Same as TLEN 5460. Prerequisites: CSCI 4273.

CSCI 4133 (3). Security Laboratory

Allows students to gain practical experience with network security in a simulated network environment. Topics to be covered include System Hardening, Firewalls, Intrusion Detection, Vulnerability Assessment, and Investigation. Same as TLEN 5540. Prerequisites: CSCI 4273.

CSCI 4143 (2). Telecommunications Seminar

Provides a series of weekly lectures with questions and discussion. Many of the speakers are nationally known experts in telecommunications. Develops presentation and critical thinking skills. Same as TLEN 5600. Prerequisites: Corequisite, CSCI 4123 or CSCI 4133.

CSCI 4202 (3). Artificial Intelligence 2

Second course in artificial intelligence. Topics may vary, but typically cover neural networks, natural language processing, and artificial life. Prerequisites: CSCI 3202 or consent of instructor.

 CSCI 4202. Bayesian Models in Cognitive Science
 CSCI 4202. Data Mining
 CSCI 4202. Machine Learning
CSCI 4229 (3). Computer Graphics

Studies design, analysis, and implementation of computer graphics techniques. Topics include interactive techniques, 2D and 3D viewing, clipping, segmentation, translation, rotation, and projection. Also involves removal of hidden edges, shading, and color. Prerequisites: Knowledge of basic linear algebra and CSCI 2270.

CSCI 4273 (3). Network Systems

Focuses on design and implementation of network programs and systems, including topics in network protocols, file transfer, client-server computing, remote procedure call, and other contemporary network system design and programming techniques. Prerequisites: CSCI 3753 and familiarity with C and UNIX.

CSCI 4308 (4). Software Engineering Project 1

Advanced practicum in which students design, implement, document and test software systems for use in industry, non-profits, government and research institutions. Offers practical experience by working closely with project sponsors. Also offers extensive experience in oral and written communication throughout the software lifecycle. Students must take CSCI 4308-CSCI 4318 contiguously, as the project spans the entire academic year. Prerequisites: Successful completion of a minimum of 36 credit hours of Computer Science Foundation, Track Foundation, Track Core and Computer Science Electives and completion of WRTG 3030. Open only to seniors. See Senior Project Prerequisites. See Senior Project for more information.

CSCI 4312 (3). Medical Informatics

Teaches students essential skills necessary for developing usable assistive and performance support systems, which include consideration of the academic and professional interdisciplinary issues that govern the work. An overview of ongoing and emerging topics in medical informatics will be presented. Prerequisites: CSCI 2270. Recommended: CSCI 3002.

CSCI 4314 (3). Algorithms for Molecular Biology

Surveys combinatorial algorithms used to understand DNA, RNA, and proteins. Introduces students to methods used to process genomic data. Topics covered include a review of algorithms and molecular biology, sequence analysis, RNA and protein structure analysis, and comparative genomics. Students will get hands-on experience processing recent genomic data. Same as MCDB 4314. Prerequisites: CSCI 2270 and one of CSCI 3104, CHEM 4711, IPHY 4200 or MCDB 3500.

CSCI 4317 (3). Genome Databases: Mining and Management

Develops essential skills for performing genomic analyses, with focus on developing practical research tools. Introduces human genome and microbiome projects, Python/SQL scripting, accessing and understanding genomic data, sequence alignment and search, evolutionary models, expression data, biological networks, and macromolecular structure. Same as CHEM 4621 and MCDB 4621. Prerequisites: CSCI 3104, CHEM 4711 or MCDB 3500.

CSCI 4318 (4). Software Engineering Project 2

Second semester of an advanced practicum in computer science. Students must take CSCI 4308 and CSCI 4318 contiguously as the project spans the entire academic year. Prerequisites: CSCI 4308. See Senior Project for more information.

CSCI 4322 (3). Things That Think

Introduces techniques of designing, constructing, and documenting computationally-enhanced physical artifacts. Students will work in teams and use state-of-the-art fabrication tools, microprocessors, and software systems to build working prototypes of objects that can be controlled and customized through embedded computation. This course was formerly offered as CSCI 4830 Special Topics in Computer Science: Things That Think.

CSCI 4332 (3). Game Programming

This is a proposed new course. Prerequisites: CSCI 2270. This course was formerly offered as CSCI 4830 Special Topics in Computer Science: Game Programming.

CSCI 4342 (3). Groupware and Workflow Systems

Supports students in developing professional skills and knowledge concerning the use of computer technologies to support collaborative activities. Also covers the impact of digital collaboration technologies on users, groups, organizations and society. Students will gain practical experience with Business Process Management and the use of Workflow Management Systems.

CSCI 4412 (3). Design, Creativity and New Media

Explores the design of new media and technologies to support design and creativity. Analyzes design and creativity as human activities of fundamental importance in the networked information culture and economy. Provides theoretical and practical analysis of new media. Prerequisites: Consent of instructor. Recommended: CSCI 3002.

CSCI 4446 (3). Chaotic Dynamics

Explores chaotic dynamics theoretically and through computer simulations. Covers the standard computational and analytical tools used in nonlinear dynamics and concludes with an overview of leading-edge chaos research. Topics include time and phase-space dynamics, surfaces of section, bifurcation diagrams, fractal dimension, and Lyapunov exponents. Prerequisites: Two semesters of calculus; CSCI 1200, CSCI 1300 or equivalent; and PHYS 1110. Recommended: PHYS 1120, CSCI 3656 and MATH 3130.

CSCI 4448 (3). Object-Oriented Analysis and Design

An applied analysis and design class addressing the use of object-oriented techniques. Topics include domain modeling, use cases, architectural design, and modeling notations. Students apply the techniques in analysis and design projects. Prerequisites: CSCI 3155 or expertise in one or more object-oriented programming languages, such as C++ or Java.

CSCI 4473 (3). Network Security

Explores cryptographic methods applied to computer networks. Investigates existing security protocols and their underlying principles. Prerequisites: CSCI 3104. Recommended: CSCI 4273.

CSCI 4555 (3). Introduction to Compiler Construction

Introduces the basic techniques used in translating programming languages: scanning, parsing, definition table management, operator identification and coercion, code selection and register allocation, error recovery. Students build a complete compiler for a simple language. Same as ECEN 4553. Prerequisites: ECEN 2120.

CSCI 4576 (4). High-Performance Scientific Computing 1

Introduces computing systems, software, and methods used to solve large-scale problems in science and engineering. Students use high-performance workstations and a supercomputer. First course in a two-semester sequence. Prerequisites: CSCI 3656 or equivalent.

CSCI 4593 (3). Computer Organization

Studies computer design at the gate level. Discusses microprogrammed and hardwired control units, memory design, arithmetic and logic unit, I/O, and peripheral devices. Briefly covers aspects of modern computer architecture, such as parallel processing and reduced instruction set computers. Same as ECEN 4593. Prerequisites: ECEN 2120 and ECEN 3100.

CSCI 4753 (3). Computer Performance Modeling

Presents a broad range of system measurement and modeling techniques, emphasizing applications to computer systems. Topics include system measurement, work load characterization, and analysis of data; design of experiments; simulation; and queuing theory and queuing network models. Same as ECEN 4753. Prerequisites: CSCI 3753 or equivalent, and second-semester calculus. Recommended: a course in statistics.

CSCI 4809 (3). Computer Animation

Develops a firm understanding of the general principles of computer animation and provides rigorous, hands-on training in the application of animation principles. Includes the creation of models, materials, textures, surfaces, and lighting. Introduces path and keyframe animation, particle dynamics, and rendering. This course was formerly offered as CSCI 4830 Special Topics in Computer Science: Animation for Everyone.

CSCI 4810 (1). Seminar in Computational Biology and Health Informatics

Provides an overview of current research topics in computational biology and health informatics, with a focus on research conducted on campus. Each week, students will attend an on-campus seminar or a presentation by an on-campus research group. Prepares students to participate in a research project. Prerequisites: CSCI 4312, CSCI 4314 or CSCI 4317.

CSCI 4830 (3). Special Topics in Computer Science

Covers topics of interest in computer science at the senior undergraduate level. Content varies from semester to semester. Prerequisites: Consent of instructor.

 CSCI 4830. Advanced Computer Graphics
 CSCI 4830. Algorithms
 CSCI 4830. Algorithms for Molecular Biology
 CSCI 4830. Animation for Everyone
 CSCI 4830. API Programming
 CSCI 4830. Artificial Life
 CSCI 4830. Chaotic Dynamics
 CSCI 4830. Code Generation and Optimization
 CSCI 4830. Cognitive Modeling
 CSCI 4830. Collaborative Design and Learning
 CSCI 4830. Component-Based Software Systems
 CSCI 4830. Computational Biomechanics
 CSCI 4830. Computational Geometries
 CSCI 4830. Computational Mathematics
 CSCI 4830. Computer Architecture and Compiler Technology Research
 CSCI 4830. Data Mining
 CSCI 4830. Design, Creativity, and New Media
 CSCI 4830. Design, Learning and Collaboration
 CSCI 4830. Designing the Information Society of the Next Millennium
 CSCI 4830. Entrepreneurship in Computing
 CSCI 4830. Fundamentals of Cognitive Science
 CSCI 4830. Game Programming
 CSCI 4830. High Functionality Applications
 CSCI 4830. Infrastructure Engineering
 CSCI 4830. Internet Dreams
 CSCI 4830. Introduction to Sensor Networks
 CSCI 4830. Machine Learning
 CSCI 4830. Machine Vision
 CSCI 4830. Music Cognition
 CSCI 4830. Natural Language Processing
 CSCI 4830. Network Security
 CSCI 4830. Network Systems
 CSCI 4830. Neural Networks
 CSCI 4830. Non-Symbolic Artificial Intelligence
 CSCI 4830. Object-Oriented Design
 CSCI 4830. Open Source Development of Cognitive Technology on a Mobile Platform
 CSCI 4830. Operating Systems for Small Computers
 CSCI 4830. Programming Languages
 CSCI 4830. Speech Recognition and Synthesis
 CSCI 4830. Symbolic Artificial Intelligence
 CSCI 4830. System Administration Workshop
 CSCI 4830. Systems for Learning
 CSCI 4830. Technology for Community
 CSCI 4830. Text Processing
 CSCI 4830. The Canon
 CSCI 4830. The Internet for Everyone
 CSCI 4830. The Scientific Investigation of Consciousness
 CSCI 4830. Theory
 CSCI 4830. Things That Think
 CSCI 4830. UNIX Tools
 CSCI 4830. User Interface Design
CSCI 4838 (3). User Interface Design

Develops the skills and practices necessary to apply user-centered approaches to software requirements analysis and the design and evaluation of computer applications. Prerequisites: CSCI 2270. This course was formerly offered as CSCI 4830 Special Topics in Computer Science: User Interface Design.

CSCI 4900 (1-6). Upper-Division, Undergraduate Level Independent Study

Provides opportunities for independent study at the upper-division undergraduate level. Students work on a small research problem or tutor lower-division computer science students. Prerequisites: CSCI 1200 or CSCI 1300. An Independent Study Agreement must be completed to enroll in this course.

CSCI 4950 (2-4). Senior Thesis

Provides an opportunity for senior computer science majors to conduct exploratory research in computer science. Prerequisites: Successful completion of a minimum of 36 credit hours of Computer Science Foundation, Track Foundation, Track Core and Computer Science Electives and completion of WRTG 3030. Open only to seniors. May be repeated up to 8 total credit hours. See Senior Thesis for more information.

CSCI 5229 (3). Computer Graphics

Studies design, analysis, and implementation of computer graphics techniques. Topics include interactive techniques, 2D and 3D viewing, clipping, segmentation, translation, rotation, and projection. Also involves removal of hidden edges, shading, and color. Prerequisites: Knowledge of basic linear algebra and CSCI 2270 or equivalent.

CSCI 5273 (3). Network Systems

An applied programming course focusing on design and implementation of network programs and systems, including topics in network protocols, file transfer, client-server computing, remote procedure call, and other contemporary network system design and programming techniques. Prerequisites: CSCI 3753 or equivalent and familiarity with C and UNIX.

CSCI 5312 (3). Medical Informatics

Teaches students essential skills necessary for developing usable assistive and performance support systems, which includes consideration of the academic and professional interdisciplinary issues that govern the work. An overview of ongoing and emerging topics in medical informatics will be presented. Prerequisites: CSCI 2270. Recommended: CSCI 3002.

CSCI 5314 (3). Algorithms for Molecular Biology

Surveys combinatorial algorithms used to understand DNA, RNA, and proteins. Introduces students to methods used to process genomic data. Topics covered include a review of algorithms and molecular biology, sequence analysis, RNA and protein structure analysis, and comparative genomics. Students will get hands-on experience processing recent genomic data. Same as MCDB 5314. Prerequisites: CSCI 2270 and one of CSCI 3104, CHEM 4711, IPHY 4200 or MCDB 3500.

CSCI 5317 (3). Genome Databases: Mining and Management

Develops essential skills for performing genomic analyses, with focus on developing practical research tools. Introduces human genome and microbiome projects, Python/SQL scripting, accessing and understanding genomic data, sequence alignment and search, evolutionary models, expression data, biological networks, and macromolecular structure. Same as CHEM 5621 and MCDB 5621. Prerequisites: CSCI 3104, CHEM 4711 or MCDB 3500.

CSCI 5322 (3). Things That Think

Introduces techniques of designing, constructing, and documenting computationally-enhanced physical artifacts. Students will work in teams and use state-of-the-art fabrication tools, microprocessors, and software systems to build working prototypes of objects that can be controlled and customized through embedded computation. This course was formerly offered as CSCI 7000 Current Topics in Computer Science: Things That Think.

CSCI 5332 (3). Game Programming

This is a proposed new course. Prerequisites: CSCI 2270. This course was formerly offered as CSCI 7000 Current Topics in Computer Science: Game Programming.

CSCI 5342 (3). Groupware and Workflow Systems

Supports students in developing professional skills and knowledge concerning the use of computer technologies to support collaborative activities. Also covers the impact of digital collaboration technologies on users, groups, organizations and society. Students will gain practical experience with Business Process Management and the use of Workflow Management Systems. This course was formerly offered as CSCI 7000 Current Topics in Computer Science: Groupware and Workflow.

CSCI 5412 (3). Design, Creativity and New Media

Explores the design of new media and technologies to support design and creativity. Analyzes design and creativity as human activities of fundamental importance in the networked information culture and economy. Provides theoretical and practical analysis of new media. Prerequisites: Consent of instructor. Recommended: CSCI 3002.

CSCI 5417 (3). Information Retrieval Systems

Addresses practical issues in the design, implementation and analysis of modern information retrieval systems. The major focus is on Web-based applications including ad hoc retrieval, classification and clustering. Introduces the use of open source retrieval systems, standard evaluation metrics and gold-standard evaluation collections. This course was formerly offered as CSCI 7000 Current Topics in Computer Science: Modern Information Retrieval.

CSCI 5444 (3). Introduction to Theory of Computation

Reviews regular expressions and finite automata. Studies Turing machines and equivalent models of computation, the Chomsky hierarchy, context-free grammars, push-down automata, and computability. Prerequisites: Graduate standing or instructor consent.

CSCI 5446 (3). Chaotic Dynamics

Explores chaotic dynamics theoretically and through computer simulations. Covers the standard computational and analytical tools used in nonlinear dynamics and concludes with an overview of leading-edge chaos research. Topics include time and phase-space dynamics, surfaces of section, bifurcation diagrams, fractal dimension, and Lyapunov exponents. Prerequisites: Two semesters of calculus; CSCI 1200, CSCI 1300 or equivalent; and PHYS 1110. Recommended: PHYS 1120, CSCI 3656 and MATH 3130. This course was formerly offered as CSCI 6446 Chaotic Dynamics.

CSCI 5448 (3). Object-Oriented Analysis and Design

Applied analysis and design class addressing the use of object-oriented techniques. Topics include domain modeling, use cases, architectural design, and modeling notations. Students apply the techniques in analysis and design projects. Prerequisites: Expertise in one or more object-oriented programming languages, such as C++ or Java. This course was formerly offered as CSCI 6448 Object-Oriented Analysis and Design.

CSCI 5454 (3). Design and Analysis of Algorithms

Techniques for algorithm design, analysis of correctness and efficiency; divide and conquer, dynamic programming, etc. Advanced data structures, algorithms in graph theory, geometry, VLSI, linear algebra, etc. Lower bounds, NP-completeness, intractability. Prerequisites: CSCI 2270 or equivalent.

CSCI 5473 (3). Applied Operating Systems

Examines design and implementation of contemporary operating systems. Significant laboratory component applies practice with OS use, analysis, and internal design. Topics include OS organization and structure, process and thread management, memory management, file management, device management, network and distributed systems, and modern runtime systems. Prerequisites: Two years programming and instructor consent.

CSCI 5525 (3). Compiler Construction Tools

Offers practical experience using state-of-the-art CAD tools on high-performance workstations. Provides skills needed to rapidly create little languages for specific problem domains and familiarizes students with automated software development. Same as ECEN 5523.

CSCI 5535 (3). Fundamental Concepts of Programming Languages

Considers concepts common to a variety of programming languages -- how they are described (both formally and informally) and how they are implemented. Provides a firm basis for comprehending new languages and gives insight into the relationship between languages and machines. Same as ECEN 5533. Prerequisites: CSCI 3155 or consent of instructor.

CSCI 5548 (3). Software Engineering of Standalone Programs

Applies engineering principles to phases of software product development, project planning, requirements definition, design, implementation, validation, and maintenance. Emphasizes practical methods for communicating and verifying definitions and designs -- prototyping, inspections, and modeling. Includes relation to RTS and object-oriented programming. Same as ECEN 5543. Prerequisites: CSCI 1300, CSCI 2270 or consent of instructor. This course was previously titled Software System Engineering.

CSCI 5551 (3). Parallel Processing

Examines a range of topics involved in using parallel operations to improve computational performance. Discusses parallel architectures, parallel algorithms and parallel programming languages. Architectures covered include vector computers, multiprocessors, network computers, and data flow machines. Same as ECEN 5553. Prerequisites: Background in computer organization, introduction to programming languages, elementary numerical analysis, CSCI 4593 and CSCI 3656, or instructor consent.

CSCI 5573 (3). Advanced Operating Systems

Intended to create a foundation for operating systems research or advanced professional practice. Examines the design and implementation of a number of research and commercial operating systems and their components, system organization and structure, threads, communication and synchronization, virtual memory, distribution, file systems, security and authentication, availability, and Internet services. Same as ECEN 5573. Prerequisites: CSCI 3753, CSCI 4593, equivalent undergraduate coursework in operating systems and computer architecture, or consent of instructor.

CSCI 5576 (4). High-Performance Scientific Computing

Introduces computing systems, software, and methods used to solve large-scale problems in science and engineering. Students use high-performance workstations and a supercomputer. Prerequisites: Recommended: CSCI 3656.

CSCI 5582 (3). Artificial Intelligence

Surveys artificial intelligence methods, theories, and applications. Studies the relationship between artificial intelligence and psychology, linguistics, and philosophy. Introduces artificial intelligence programming. Same as ECEN 5583. Prerequisites: CSCI 3155 or equivalent.

CSCI 5593 (3). Advanced Computer Architecture

Provides a broad-scope treatment of important concepts in the design and implementation of high-performance computer systems. Discusses important issues in the pipelining of a machine and the design of cache memory systems. Also studies current and historically important computer architectures. Same as ECEN 5593. Prerequisites: CSCI 4593 or consent of instructor.

CSCI 5606 (3). Principles of Numerical Computation

Highlights computer arithmetic, solution of linear systems, least-squares approximations, nonlinear algebraic equations, interpolation, and quadrature. Prerequisites: CSCI 3656 and three semesters of calculus or equivalent.

CSCI 5608 (3). Software Project Management

Presents topics and techniques critical to the management of software product development, including estimating, planning, quality, tracking, reporting, team organization, people management, and legal issues. Gives special attention to problems unique to software projects. Same as ECEN 5603. Prerequisites: ECEN 4583, CSCI 5548, and CSCI 4318, or equivalent industrial experience.

CSCI 5622 (3). Machine Learning

Trains students to build computer systems that learn from experience. Includes the three main subfields: supervised learning, reinforcement learning and unsupervised learning. Emphasizes practical and theoretical understanding of the most widely used algorithms (neural networks, decision trees, support vector machines, Q-learning). Covers connections to data mining and statistical modeling. A strong foundation in probability, statistics, multivariate calculus, and linear algebra is highly recommended. Prerequisites: Graduate standing or consent of instructor.

CSCI 5636 (3). Numerical Solution of Partial Differential Equations

Focuses on finite difference solution for partial differential equations, methods of SOR, ADI, conjugate gradients, finite element method, nonlinear problems, and applications. Prerequisites: CSCI 5606.

CSCI 5646 (3). Numerical Linear Algebra

Offers direct and iterative solutions of linear systems. Also covers eigen value and eigenvector calculations, error analysis, and reduction by orthogonal transformation. Prerequisites: CSCI 5606.

CSCI 5654 (3). Linear Programming

Presents algorithms, simplex, and modifications. Examines theory -- duality and complementary slackness. Involves network flow algorithms. Introduces integer programming Prerequisites: Linear algebra.

CSCI 5673 (3). Distributed Systems

Examines systems that span multiple autonomous computers. Topics include system structuring techniques, scalability, heterogeneity, fault tolerance, load sharing, distributed file and information systems, naming, directory services, resource discovery, resource and network management, security, privacy, ethics, and social issues. Same as ECEN 5673. Prerequisites: CSCI 5573 or a course in computer networks.

CSCI 5714 (3). Formal Languages

Explores context-free languages: pumping lemma and variants, closure properties, and decision properties. Involves parsing algorithms, including general and special languages, e.g., LR. Additional topics chosen by instructor. Prerequisites: CSCI 5444 or consent of instructor.

CSCI 5722 (3). Computer Vision

Explores algorithms that can extract information about the world from images or sequences of images. Topics covered include: imaging models and camera calibration, early vision (filters, edges, texture, stereo, optical flow), mid-level vision (segmentation, tracking), vision-based control, and object recognition. Prerequisites: Recommended: probability, multivariate calculus, and linear algebra.

CSCI 5753 (3). Computer Performance Modeling

Presents a broad range of system measurement and modeling techniques, emphasizing applications to computer systems. Topics include system measurement, work load characterization, and analysis of data; design of experiments; simulation; and queuing theory and queuing network models. Same as ECEN 5753. Prerequisites: CSCI 3753 or equivalent, and second-semester calculus. Recommended: a course in statistics.

CSCI 5809 (3). Computer Animation

Develops a firm understanding of the general principles of computer animation and provides rigorous, hands-on training in the application of animation principles. Includes the creation of models, materials, textures, surfaces, and lighting. Introduces path and keyframe animation, particle dynamics, and rendering. This course was formerly offered as CSCI 7000 Current Topics in Computer Science: Animation for Everyone.

CSCI 5817 (3). Database Systems

Provides an advanced treatment of basic database concepts. Prerequisites: CSCI 2270. Recommended: CSCI 3287 and CSCI 3753.

CSCI 5828 (3). Foundations of Software Engineering

Explores techniques, languages, and tools for development and maintenance of software systems. Topics include specification languages, configuration modeling, testing techniques, process modeling, program annotations, and program proofs.

CSCI 5832 (3). Natural Language Processing

Explores the field of natural language processing as it is concerned with the theoretical and practical issues that arise in getting computers to perform useful and interesting tasks with natural language. Covers the problems of understanding complex language phenomena and building practical programs. Same as LING 5832. Prerequisites: Graduate standing or consent of instructor.

CSCI 5838 (3). User Interface Design

Covers techniques for creating and evaluating effective user interfaces for computing systems. Introduces relevant findings and theory from psychology and human factors, as well as implementation methods. Prerequisites: Graduate standing or consent of instructor. This course was formerly offered as CSCI 6838 User Interface Design.

CSCI 5900 (1-6). Master's Level Independent Study

Provides opportunities for independent study at the master's level. An Independent Study Agreement must be completed to enroll in this course.

CSCI 6000 (1). Introduction to the Computer Science PhD Program

Instructs new PhD students in Computer Science in how to obtain a PhD and how to become an effective member of the computer science research community. Makes students aware of formal requirements, educational objectives, and research themes. Provides evaluative criteria and guidelines for all objectives to be achieved. Prerequisites: Open only to new PhD students.

CSCI 6268 (3). Foundations of Computer and Network Security

Studies methods to protect information, and the ability to process and move information, from theft, misuse, tampering, destruction, and unauthorized access. Introduces foundational topics of computer and network security, including security models, cryptography, and authentication protocols. Prerequisites: CSCI 5273.

CSCI 6302 (3). Speech Recognition and Synthesis

Introduction to automatic speech recognition and understanding, conversational agents, dialogue systems, and speech synthesis/text-to-speech. Topics include the noisy channel model, Hidden Markov Models, A* and Viterbi decoding, language modeling (N-grams, entropy), concatenative synthesis, text normalization, dialogue and conversation modeling. Prerequisites: CSCI 5582, CSCI 5832, or LING 5200, and graduate standing or instructor consent.

CSCI 6402 (3). Issues and Methods in Cognitive Science

Interdisciplinary introduction to cognitive science, examining ideas from cognitive psychology, philosophy, education, and linguistics via computational modeling and psychological experimentation. Includes philosophy of mind; learning; categorization; vision and mental imagery; consciousness; problem solving; decision making, and game-theory; language processing; connectionism. Same as EDUC 6504, LING 6200, PHIL 6310, and PSYC 6200. Prerequisites: Graduate standing, or at least one course at the 3000-level or higher in computer science, linguistics, philosophy, or psychology. No background in computer science will be presumed.

CSCI 6454 (3). Advanced Algorithms

Topics include matching and network flows, matroids, computational geometry, parallel computation (PRAM, hypercube, mesh). Also includes VLSI, database theory, distributed computation, cryptography, robotics, scheduling, probabilistic algorithms, approximation algorithms, average case, and amortized analysis, time permitting. Prerequisites: CSCI 5454.

CSCI 6622 (3). Advanced Machine Learning

Covers advanced theoretical and practical topics in machine learning and latest developments in the field. Students conduct original research, either applied or theoretical, and present their results. Prerequisites: CSCI 5622 or consent of instructor.

CSCI 6676 (3). Numerical Methods for Unconstrained Optimization

Looks at modern computational methods for solution of unconstrained optimization problems, nonlinear least squares, and systems of nonlinear equations. Techniques for building algorithms to solve problems with special structure. Prerequisites: CSCI 5606.

CSCI 6686 (3). Numerical Methods for Constrained Optimization

Covers computational methods for constrained optimization. Topics include basic theory, methods for quadratic programming, active set strategies for linear constraints, and penalty and successive quadratic programming methods for nonlinearly constrained problems. Prerequisites: CSCI 5606.

CSCI 6800 (3). Master of Engineering Project

Students seeking the master of engineering degree must complete a creative investigation project, including a written report, supervised by a member of the graduate faculty. Prerequisites: Completion of 21 hours towards the ME degree.

CSCI 6940 (3). Master's Degree Candidacy

For students who need to be registered for the purpose of taking the master's comprehensive exam and who are not otherwise registered. Credit does not count toward degree requirements. Graded on a pass/fail basis.

CSCI 6950 (4-6). Master's Thesis

 

CSCI 7000 (1-4). Current Topics in Computer Science

Covers research topics of current interest in computer science that do not fall into a standard subarea. May be repeated up to 8 total credit hours. Prerequisites: Consent of instructor.

 CSCI 7000. Advanced Computational Linguistics
 CSCI 7000. Advanced Computer Graphics
 CSCI 7000. Advanced Performance Modeling
 CSCI 7000. Animation for Everyone
 CSCI 7000. ATLAS Interdisciplinary PhD Seminar
 CSCI 7000. Bioinformatics
 CSCI 7000. Chaotic Dynamics
 CSCI 7000. Code Generation and Optimization
 CSCI 7000. Computation for Cognitive Science
 CSCI 7000. Computational Biomechanics
 CSCI 7000. Computational Genomics
 CSCI 7000. Computational Geometries
 CSCI 7000. Computer Architecture and Compiler Technology Research
 CSCI 7000. Computer Mediated Interaction
 CSCI 7000. Computer Privacy
 CSCI 7000. Computer Science/Cognitive Science
 CSCI 7000. Cryptanalysis
 CSCI 7000. Cryptography
 CSCI 7000. Data Mining
 CSCI 7000. Design, Creativity, and New Media
 CSCI 7000. Design, Learning and Collaboration
 CSCI 7000. Designing the Future Internet
 CSCI 7000. Designing the Information Society of the Next Millennium
 CSCI 7000. Digital and Social Systems Foundations
 CSCI 7000. Distributed, Mobile and Pervasive Runtime Systems
 CSCI 7000. Educational Computing
 CSCI 7000. Elements of Statistical Inference
 CSCI 7000. Foundations of Computer and Network Security
 CSCI 7000. Game Programming
 CSCI 7000. Graphics
 CSCI 7000. Groupware and Workflow
 CSCI 7000. High-Performance Scientific Computing 1
 CSCI 7000. High-Performance Scientific Computing 2
 CSCI 7000. Human Computer Interaction -- Survey and Synthesis
 CSCI 7000. Information Storage Software
 CSCI 7000. Internet Dreams
 CSCI 7000. Issues and Methodologies in Cognitive Science
 CSCI 7000. Machine Vision
 CSCI 7000. Mathematical Foundations of Programming Languages
 CSCI 7000. Medical Informatics
 CSCI 7000. Modern Information Retrieval
 CSCI 7000. Multimedia Networking
 CSCI 7000. Network Systems
 CSCI 7000. Object-Oriented Analysis and Design
 CSCI 7000. Open Source Development of Cognitive Technology on a Mobile Platform
 CSCI 7000. Practical Theorem Proving with Isabelle/Isar
 CSCI 7000. Quantum and Molecular Computing
 CSCI 7000. Reconfigurable Computing
 CSCI 7000. Software Architecture
 CSCI 7000. Software Defined Radios
 CSCI 7000. Software Systems Management
 CSCI 7000. Speech Recognition and Synthesis
 CSCI 7000. Spoken Dialogue Systems
 CSCI 7000. Systems and Algorithms for Massive Data Applications
 CSCI 7000. Teaching Computer Science
 CSCI 7000. Technical Writing
 CSCI 7000. The Canon
 CSCI 7000. Things That Think
 CSCI 7000. UNIX System Administration
 CSCI 7000. Visual Programming
 CSCI 7000. Wireless Networking
 CSCI 7000. Workflow Management Systems
CSCI 7111 (3). Topics in Parallel Processing

Content varies, but subjects include parallel machine architecture, parallel algorithms, languages for parallel computation, and applications. Takes subject matter from current research. Prerequisites: Consent of instructor.

 CSCI 7111. Fast Numerical Solvers
 CSCI 7111. Hardware/Software Codesign
CSCI 7123 (3). Topics in Operating Systems

Topics selected by instructor. Possible topics are system design, measurement and evaluation, simulation, mathematical modeling, and parallelism. Prerequisites: CSCI 5573.

 CSCI 7123. Dependable Computing Systems
 CSCI 7123. Kernel Internals Practicum
 CSCI 7123. Linux Kernel Internals Practicum
CSCI 7135 (3). Topics in Programming Languages

Topics selected by instructor. Possible topics are syntax, semantics, metacompilers, compiler design, and translator writing systems. Prerequisites: Consent of instructor.

 CSCI 7135. Behavior Prediction in Complex Computer Systems
 CSCI 7135. Internet Systems
 CSCI 7135. Program Analysis
 CSCI 7135. Types and Programming Languages
CSCI 7143 (3). Topics in Computer Systems

Topics selected by instructor. Possible topics are online systems, multiprocessing, microprogramming, architecture, data communications, and computing networks. May be repeated up to 6 total credit hours. Prerequisites: Consent of instructor.

 CSCI 7143. Advanced Computer Networks
 CSCI 7143. High Performance Circuits for Microprocessor Design
 CSCI 7143. Mobile Computing
 CSCI 7143. Programming Non-Traditional Multiprocessors
 CSCI 7143. Security in Wireless Sensor Networks
 CSCI 7143. Verilog
 CSCI 7143. Wireless Sensor Networks
CSCI 7154 (3). Topics in Theory of Computation

Selected topics of current interest in theory of computation. Prerequisites: Consent of instructor.

 CSCI 7154. Data Structures
 CSCI 7154. Genetics
 CSCI 7154. Software Engineering Theory
CSCI 7176 (3). Topics in Numerical Computation

Topics selected by instructor. Possible topics are numerical linear algebra, solution of differential equations, nonlinear algebra and optimization, data fitting, linear and nonlinear programming, and solution of large problems. Prerequisites: Consent of instructor.

 CSCI 7176. High Performance Computing
 CSCI 7176. Nonlinear Iterative Methods for Partial Differential Equations
 CSCI 7176. Parallel Sparse Matrix Techniques
 CSCI 7176. Recent Development in Numerical Methods for Partial Differential Equations
CSCI 7212 (3). Topics in Symbolic Artificial Intelligence

Topics vary from year to year. Possible topics include search; knowledge representation and natural language understanding; deduction, planning, problem solving, and automatic programming; instruction and cognitive models; vision and speech; and learning, induction, and concept formation. Prerequisites: CSCI 5582 or consent of instructor.

 CSCI 7212. Collaborative Design and Learning