CSCI - Computer Science/Programming

CSCI 107  Joy and Beauty of Computing: 3 Credits (3 Lec)

(F, Sp) Examines the computing field and how it impacts the human condition. Introduces exciting ideas and influential people. Provides a gentle introduction to computational thinking using the Python programming language.

View Course Outcomes:

  1. Appreciate the variety of ways in which computing can improve the human condition.
  2. Appreciate how computational skills can benefit one's career and life.
  3. Design and implement short programs in an interpreted language such as Python.
  4. Understand some of the significant ideas and people that underlie computing's past, present and future.

CSCI 109  C for Engineers and Scientists: 3 Credits (3 Lec)

(Sp) Not for Computer Science BS or Computer Engineering majors. Students learn to solve engineering, electrical engineering and scientific problems with the C programming language. The course covers basic C constructs, arrays, and pointers.

View Course Outcomes:

  1. Write programs using the C language.
  2. Apply the C language to solve real-world problems in engineering, scientific and other domains.
  3. Use major capabilities of the C language, including pointers, strings and dynamic memory allocation.

CSCI 112  Programming with C I: 3 Credits (2 Lec, 1 Lab)

PREREQUISITE: CSCI 127. (F, Sp) Programming knowledge. Introduces imperative programming and the C standard library. Course covers pointers, memory management and structures

View Course Outcomes:

  1. Build computer applications using C language, and apply their knowledge to solve basic real-life problems.
  2. Test and debug their C code.
  3. Take advantage of major capabilities of C programming language (e.g. pointers, dynamic memory allocation).
  4. Understand, appreciate and respect power of pointers in C programming.

CSCI 118  School of Computing Introduction: 1 Credits (1 Lec)

(F) This course is intended for first semester undergraduate considering a School of Computing major. This course introduces first semester undergraduates to the School of Computing: its majors, its student clubs, its student success resources, its faculty, its elective courses and its undergraduate research opportunities. The course helps students build community, bolsters a sense of belonging in computing and provides an introduction to computing careers. Guest speakers are utilized frequently.

View Course Outcomes:

  1. List types of computing careers and select appropriate School of Computing major based on current career aspirations.
  2. Identify School of Computing student success resources (i.e. tutoring center, scholarships, student clubs, advisors)
  3. Explore elective computing coursework and undergraduate research opportunities.

CSCI 127  Joy and Beauty of Data: 4 Credits (3 Lec, 1 Lab)

(F, Sp, Su) Provides a gentle introduction to the exciting world of big data and data science. Students expand their ability to solve problems with Python by learning to deploy lists, files, dictionaries and object-oriented programming. Data science libraries are introduced that enable data to be manipulated and displayed. To succeed in this course, either basic computer literacy or CSCI 107 is recommended.

View Course Outcomes:

  1. Understand at a high level what data science is and why it is important.
  2. Utilize arrays, lists, files and dictionaries to solve problems in Python.
  3. Utilize fundamental object oriented principles such as classes, objects, methods and inheritance to solve problems in Python.
  4. Utilize data science libraries to solve data science problems in Python.

CSCI 132  Basic Data Structures and Algorithms: 4 Credits (3 Lec, 1 Lab)

PREREQUISITE: CSCI 127 and M 151Q. (F, Sp, Su) An examination of advanced Java and basic data structures and their application in problem solving. Data structures include stacks, queues and lists. An introduction to algorithms employing the data structures to solve various problems including searching and sorting, and recursion. Understanding and using Java class libraries. The laboratory uses Java. Introduces Big-O Notation

View Course Outcomes:

  1. Implement and apply Abstract Data Types such as lists, stacks, queues and priority queues.
  2. Determine the time complexity of simple algorithms.
  3. Implement and apply common sorting techniques such as insertion sort, selection sort, quicksort and mergesort.
  4. Implement and apply common searching techniques such as linear and binary search.
  5. Utilize the Java programming language and its libraries to solve problems.

CSCI 204  Multimedia Dev Methods: 3 Credits (3 Lec)

PREREQUISITE: CSCI 107 or CSCI 127. (F) The design, development, and implementation of multimedia games, movies, and presentations using the Unity Physics Game Engine. Students gain a foundational knowledge of C#, enabling them to implement new features. Students learn to create using Unity Project Management. During the creation of personal projects, students manage the process from start to finish - outlining a concept, setting project milestones, and tracking progress

View Course Outcomes:

  1. Develop and integrate both 2D and 3D graphics
  2. Demonstrate the ability to transform and edit functions
  3. Apply materials and textures to modeled objects
  4. Demonstrate understanding of basic keyframe animation
  5. Apply lighting to objects in 3D scenes
  6. Be able to render to image and video files
  7. Develop 3D modeling strategies for creative use
  8. Incorporate individual projects to complete a group project

CSCI 215CS  Social & Ethical Issues in Computer Science: 3 Credits (2 Lec, 1 Other)

PREREQUISITE: W core and US core. (F, Sp, Su) Social and ethical issues as they relate to computing, including privacy, freedom of the press, lack of diversity, reliability and safety, and artificial intelligence,

View Course Outcomes:

  1. Explain the positive impact of computers on society;
  2. Explain the potential negative impact of computers on society;
  3. Explain legal issues related to computing;
  4. Describe professionalism and code of ethics;
  5. Discuss post-9/11 legislation as it relates to computing including the USA Patriot Act.

CSCI 232  Data Structures and Algorithms: 4 Credits (3 Lec, 1 Lab)

PREREQUISITE: CSCI 132. (F, Sp, Su) Advanced data structures and programming techniques and their application. Topics include: trees, balanced trees, graphs, dictionaries, hash tables, heaps. Examines the efficiency and correctness of algorithms. The laboratory uses Java. CSCI 246 is recommended as a prerequisite

View Course Outcomes:

  1. understanding of different data structures that are suitable for problems to be solved
  2. understanding of the design of algorithms based of different data structures
  3. understanding of the algorithms complexity to implement data structures and algorithms
  4. understanding of problem solving paradigm
  5. understanding of how common computational problems can be solved efficiently on a computer

CSCI 246  Discrete Structures: 3 Credits (3 Lec)

PREREQUISITE: CSCI 132 and either M 171Q or M 165Q. (F, Sp, Su) This course covers logic, discrete probability, recurrence relations, Boolean algebra, sets, relations, counting, functions, maps, Big-O notation, proof techniques including induction, and proof by contradiction

View Course Outcomes:

  1. Apply formal proof techniques, including mathematical induction and proof by contradiction
  2. Use algorithmic complexity to compare different program designs for a problem
  3. Solve problems that require logic, sets, combinations, permutations and functions
  4. Solve problems that require discrete probability
  5. Solve problems that use basic graph theory

CSCI 252  Introduction to Data Science: 3 Credits (3 Lec)

PREREQUISITE: CSCI 127 and M 151Q. (Sp) This course provides a comprehensive introduction to data science, focusing on computational methods and statistical techniques for analyzing and extracting insights from large datasets. Students gain experience with the entire data science pipeline and will be prepared for more advanced data science coursework

View Course Outcomes:

  1. Formulate relevant questions from real-world data and perform exploratory data analysis using Python
  2. Create and use visualizations to identify patterns, trends, and potential associations in data.
  3. Utilize statistical and machine learning techniques to draw inferences and make data-driven decisions.

CSCI 290R  Undergraduate Research: 1-6 Credits (1-6 Other)

Directed undergraduate research which may culminate in a written work or other creative project. Course will address responsible conduct of research. May be repeated.
Repeatable up to 99 credits.

CSCI 291  Special Topics: 1-3 Credits (1-3 Lec)

PREREQUISITE: To be determined based on actual topic offered. Courses not required in any curriculum for which there is a particular one-time need, or given on a trial basis to determine acceptability and demand before requesting a regular course number
Repeatable up to 12 credits.

CSCI 292  Independent Study: 1-3 Credits (1-3 Other)

PREREQUISITE: Consent of instructor and approval of department head. (F, Sp, Su) Directed research and study on an individual basis
Repeatable up to 6 credits.

View Course Outcomes:

  1. The outcomes vary based on the particular independent study.

CSCI 305  Concepts/Programming Languages: 3 Credits (3 Lec)

PREREQUISITE: CSCI 132 and CSCI 246. (F, Sp) An examination of the basic concepts of programming languages and several programming paradigms. Concepts will include some of: abstraction mechanisms, static and dynamic typing, scope, syntax vs. semantics, closures, and algebraic datatypes. Paradigms examined may include functional, imperative, logic, and object-oriented

View Course Outcomes:

  1. Interpret and develop specifications for various programming languages
  2. Explain the principles behind the design of programming languages
  3. Explain different paradigms (e.g., procedural, functional, object-oriented, logical) for programming and for associated languages
  4. Explain the syntax and semantics of programming languages
  5. Explain programming language features (e.g., expressions, assignment statements, control statements, data abstraction, variable bindings and scope, object-orientation constructs, exception handling) and their implementations
  6. Write programs in different programming languages

CSCI 331  Web Development: 3 Credits (3 Lec)

COREQUISITE: CSCI 232. (F) Full stack web development. HTML, CSS, JavaScript, database and data storage techniques, server side programming, and a variety of development frameworks. Students work in groups to build their own web application using revision control, and present their project to the class. CS 145RA or MART 145RA is recommended

View Course Outcomes:

  1. Students can create a website that utilizes HTML, CSS, and JavaScript.
  2. Students can deploy a dynamic web application that incorporates database technology and at least one server-side programming language.
  3. Students can critically assess multiple full stack development frameworks.

CSCI 338  Computer Science Theory: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and CSCI 246. (F, Sp) Formal languages, theory, automata, Turing Machines, computability, the Church-Turing thesis, computational complexity, and NP-completeness

View Course Outcomes:

  1. Understand the elementary concepts, proofs and techniques on finite state automata and regular languages.
  2. Understand the elementary concepts, proofs and techniques on pushdown automata and context-free languages.
  3. Understand the elementary concepts, proofs and techniques on computability theory. Be able to do simple mapping reductions.
  4. Understand the elementary concepts, proofs and techniques on complexity theory and NP-completeness. Be able to do simple polynomial reductions.
  5. Know how to handle intractable problems with heuristic methods.

CSCI 347  Data Mining: 3 Credits (3 Lec)

PREREQUISITE: STAT 216Q or STAT 332 or EGEN 350, and CSCI 232. (Sp) Introduction to data acquisition and pre-processing, common data formats, graph models, itemset mining, clustering, dimensionality reduction, classification, and advanced topics for knowledge discovery from large-scale data sets, with a focus on applications to real-world data sets. M 221 and CSCI 246 are recommended

View Course Outcomes:

  1. Identify common data types used in data mining
  2. Describe popular techniques for data preparation and cleaning
  3. Apply appropriate algorithms for data mining and knowledge discovery to a real-world data set using the Python programming language
  4. Construct a computational pipeline from existing tools to solve a data mining problem
  5. Identify common issues and challenges in working with large data sets

CSCI 351  Systems Administration: 3 Credits (3 Lec)

PREREQUISITE: CSCI 112. (F) The administration and management of Linux computer systems. Includes installation, user/process management, configuration of services and device handling. A basic knowledge of Linux/Unix command structure is required

View Course Outcomes:

  1. Explain the foundational responsibilities of system administrators
  2. Perform basic system administration activities on at least one operating system
  3. Explain the relationship between various operating system functions and their implementation
  4. Explain system security issues and be able to apply basic system security on at least one operating system
  5. Explain application installation, configuration and management for at least one operating system

CSCI 366  Computer Systems: 3 Credits (3 Lec)

PREREQUISITE: CSCI 112 and CSCI 232. (F, Sp) Introduces students to fundamental concepts in computer systems, including software environments and development tools, computer architecture and organization, concurrency, information management, network communications, and operating systems based on cloud computing

View Course Outcomes:

  1. Develop programs using systems software development tools and practices, including version control, linking, testing, and debugging
  2. Write programs in an assembly language
  3. Write multithreaded and networked programs
  4. Manipulate structured data (in databases) with queries
  5. Deploy programs on cloud servers

CSCI 432  Advanced Algorithm Topics: 3 Credits (3 Lec)

PREREQUISITE: CSCI 246 and CSCI 232. (F) A rigorous examination of advanced algorithms and data structures. Topics include average case analysis, probabilistic algorithms, advanced graph problems and theory, distributed and parallel programming. CSCI 338 is recommended as a prerequisite

CSCI 440  Database Systems: 3 Credits (3 Lec)

COREQUISITE: CSCI 232. (F) DBMS architecture; major database models; relational algebra fundamentals; SQL query language; index file structures, data modeling and management, entity relationship diagrams. CSCI 366 is recommended

View Course Outcomes:

  1. Correctly design relational databases, both on the conceptual and relational levels.
  2. Apply concepts of relational algebra (i.e., the theoretical foundations for SQL).
  3. Explain purpose of normal forms, and perform normalization up to the Third Normal Form.
  4. Implement and query relational databases using SQL.

CSCI 441  Computer Graphics: 3 Credits (3 Lec)

PREREQUISITE: M 221 and CSCI 232. () High resolution computer graphics. 3D graphics programming using a high level API. Vector mathematics for graphics. Graphics primitives. Curve and surface representations. Transformations using matrices and quaternions. Representing natural objects with particle systems and fractals. Shading and lighting models. Global illumination models. Color representations. This course is not currently being offered

View Course Outcomes:

  1. Produce a significant graphics program.
  2. Understand and utilize fundamental concepts and algorithms that are essential to computer graphics such as graphics pipelines, line and curve generation, polygon filling, geometric transformations and programming in a graphics API.

CSCI 442  Comp Vision: Robot Vision: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232. Image processing techniques are used to quantify and manipulate visual information in diverse applications such as satellite imagery, robotic vision, and animation. Topics include enhancement, representation, restoration, segmentation, and digitization techniques

CSCI 443  User Interface Design: 3 Credits (3 Lec)

COREQUISITE: CSCI 232 or consent of instructor. (F) Junior standing. User Interface Design: UX Design Thinking is the process used to create products that provide meaningful and relevant experiences to users. Using a systematic human-centered design strategy, the aim is to make human interactions with computational systems more usable, useful, and desirable

View Course Outcomes:

  1. Define and explain the principles of UI/UX Design in order to design with intention.
  2. Explain the entire life-cycle of design for human interaction with technology—the process, purpose, and tools.
  3. Explain the basics of the psychology behind user decision-making.\\n
  4. Apply relevant industry-standard tools to specific project deliverables in UI/UX.
  5. Explain why you made design decisions, through presentations of assignments and your personal portfolio.\\n

CSCI 445  Human Computer Interaction: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 or consent of instructor. (Sp) This course provides an introduction to human computer interaction for innovation in technologies. Students will explore the core principles, methodologies, and applications of human-centered design computing practices

View Course Outcomes:

  1. Communicate the relevance of the human-centered design process in the practice of computer science.
  2. Be able to analyze, establish requirements, design and evaluate interactive computer-based systems and products with respect to the user.\\n
  3. Analyze and discuss HCI issues in ubiquitous computing, robotics, virtual reality, multimedia, and web-based related environments.
  4. Explain the principles of human cognition and relevant methodology.\\n\\n
  5. Apply, through written and oral communication, an interactive design process and universal design principles to design one or more HCI systems.\\n

CSCI 446  Artificial Intelligence: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and CSCI 246. F odd years. An exploration in fundamental topics in artificial intelligence from an agent perspective. Topics addressed include: heuristic and stochastic search, logical and probabilistic reasoning, game playing, planning, and reinforcement learning. ESOF 322 and STAT 216 are recommended prerequisites

View Course Outcomes:

  1. Formulate and assess problems in artificial intelligence.
  2. Assess the strengths and weaknesses of methods for representing knowledge.
  3. Assess the strengths and weaknesses of several AI algorithms in areas such as heuristic search, constraint satisfaction, game search, logical inference, statistical inference, decision theory, planning, machine learning, and neural networks.
  4. Critically analyze and predict the behaviors of alternative approaches to solving problems in heuristic search, constraint satisfaction, game search, logical inference, statistical inference, decision theory, planning, machinelearning, and neural networks.
  5. Implement and evaluate the performance of software solutions to problems in game search, constraint satisfaction, probabilistic inference, and machine learning.

CSCI 447  Machine Learning: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and CSCI 246. (F even years.) An introduction and survey of fundamental machine learning models and algorithms, including non-parametric methods, linear and nonlinear models, decision trees, neural networks, and population-based algorithms. ESOF 322, M 273, M 221, and STAT 216 are recommended

View Course Outcomes:

  1. Formulate and assess problems in machine learning using soft computing principles.
  2. Understand and be able to implement algorithms based on soft computing principles
  3. Assess the strengths and weaknesses of alternative representations and algorithms in soft computing.
  4. Analyze the expected performance of soft computing algorithms based on formal principles from the  analysis of algorithms.
  5. Assess the performance of soft computing algorithms based on principles of sound experimental design and empirical analysis.

CSCI 451  Computational Biology: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and CSCI 246. This course surveys classic and recent problems from computational biology. Topics covered include algorithms for genomic sequencing and searching, protein structure prediction, and regulatory network discovery. Co-convened with CSCI 551

CSCI 455  Embedded Systems: Robotics: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232. (Spring, even years.) The basic tools and techniques of embedded systems using robotics as a platform. Student teams learn to program an autonomous robot to perform increasingly sophisticated behaviors. Besides introducing autonomous mobile robot technologies, students also learn key concepts of mechanics, electronics, programming techniques, and systems design and integration

View Course Outcomes:

  1. Explain the characteristics of real-time systems and the application of real-time software design in the development of complex systems
  2. Explain the properties and the hardware design issues in one embedded system (such as a robot) and alternative strategies for the design and development of such systems
  3. Develop and demonstrate the skills involved in designing and implementing an embedded software system for at least one platform
  4. Develop and demonstrate the skills necessary to design and implement real-time, feedback control system software for at least one platform
  5. Explain sensor interfacing and analog/digital systems.

CSCI 460  Operating Systems: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and (CSCI 366 or EELE 371). (F) Operating systems design including necessary hardware support. Processes, threads, concurrent programming, and scheduling. Memory, file, and I/O management. Security issues. CSCI 351 is recommended

View Course Outcomes:

  1. Gain practical experience with developing software that uses system calls and libraries to interact with the OS. \\n
  2. Understand decisions and designs made in implementing modern operating systems, such as Linux.
  3. Expand understanding of Linux OS and command line utilities that enable interaction with, and exploration of, the Linux kernel.
  4. Apply knowledge of the OS to deeply explore one or more major components of an OS.

CSCI 466  Networks: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232. (F) An introduction to computer networks. The course covers the fundamentals of network system design and their communication protocols. Course topics include the layers and protocols of the OSI model with respect to their importance in end-to-end communication, network security, network forensics, and cloud computing

View Course Outcomes:

  1. List the network layers and explain their function in allowing end-to-end communications
  2. Explain the tradeoff between hop-by-hop and end-to-end network mechanism
  3. Identify and describe network performance bottleneck
  4. Design and implement a networked application
  5. Configure and troubleshoot a wide area network

CSCI 468  Compilers: 4 Credits (3 Lec, 1 Lab)

(Sp) Senior capstone course. Compiler design and construction. Scanning, parsing, symbol tables, semantic analysis, intermediate representations, run-time memory management, target code generation, and optimization. Implementation of a small compiler. CSCI 366 is recommended.

View Course Outcomes:

  1. Demonstrate a working understanding of scanning.
  2. Demonstrate a working understand of parsing.
  3. Demonstrate a working understanding of semantic analysis.
  4. Design, analyze, implement, and test a working compiler.
  5. Be conversant in some advanced compiler concepts such as rudimentary optimization techniques, compiling advanced language constructs, linking and loading.

CSCI 476  Computer Security: 3 Credits (3 Lec)

PREREQUISITE: CSCI 112 and CSCI 232. (Sp) Introduction to computer security. The course covers well-known exploit techniques, vulnerabilities, and countermeasures in the realm of software security, web security, network security, and cryptography. Students learn important cybersecurity principles, how to identify potential vulnerabilities in software, and how vulnerabilities are used in attacks

View Course Outcomes:

  1. Develop a strong understanding of security concepts.
  2. Gain practical experience with exploitation and defense on Linux-based systems.
  3. Gain practical experience with threat modeling.
  4. Read and write code in a variety of languages (e.g., web programming, system software, scripting)
  5. Gain experience in designing, implementing, evaluating, and/or exploiting state-of-the-art system and network defenses.

CSCI 481  Program Assessment: ()

PREREQUISITE: Graduating Senior. (F, Sp) Students participate in activities that help measure how well program outcomes are being met

View Course Outcomes:

  1. CSCI 481 is a 0-credit class with no outcomes. The course enables us to assess how well graduating seniors are meeting our program outcomes.

CSCI 483R  Interdisciplinary Project: 4 Credits (1 Lec, 3 Other)

PREREQUISITE: ESOF 322. (Sp) The senior capstone course for the Computer Science B.S. interdisciplinary option. Students undertake an interdisciplinary project and present their results through a written paper, a poster, a working prototype, and an oral presentation

View Course Outcomes:

  1. Create a complete professional portfolio with a complete design, architecture, lifecycles, and all engineering components. For academic projects, students will create a portfolio with literature reviews, experimental designs, and hypothesis
  2. Create a working prototype
  3. Make an effective presentation
  4. Make an effective poster and corresponding presentatio
  5. Demonstrate ability to write an abstract

CSCI 490R  Undergraduate Research: 1-6 Credits (1 Other)

PREREQUISITE: Consent of instructor. (F, Sp) Directed undergraduate research which may culminate in a research paper, journal article, or undergraduate thesis. Course will address responsible conduct of research. May be repeated
Repeatable up to 12 credits.

CSCI 491  Special Topics: 1-4 Credits (1-4 Lec)

PREREQUISITE: To be determined based on actual topic offered. Courses not required in any curriculum for which there is a particular one-time need, or given on a trial basis to determine acceptability and demand before requesting a regular course number. Co-convened with CSCI 591
Repeatable up to 12 credits.

CSCI 492  Independent Study: 1-4 Credits (1-4 Other)

PREREQUISITE: Junior standing, consent of instructor and approval of director of the School of Computing. (F, Sp, Su) Directed research and study on an individual basis
Repeatable up to 6 credits.

CSCI 493  Study Abroad: 3 Credits (1 Lec, 2 Lab)

(Su) At least one year of computer science programming experience required. Students will apply data science fundamentals to develop compelling data science assignments for beginners. The course will be help in Lyon, France and students will work across institutions on the assignments.

View Course Outcomes:

  1. Apply data science fundamentals to develop compelling data science assignments for beginners.
  2. Implement sample solutions to each assignment.
  3. Work cross-culturally to develop, implement and present the assignments.

CSCI 494  Seminar: 1-3 Credits (1-3 Other)

PREREQUISITE: Junior standing and as determined by each offering. (F, Sp) Topics offered at the upper divisional level that are not covered in regular courses. Students participate in preparing and presenting discussion material
Repeatable up to 12 credits.

View Course Outcomes:

  1. Variable depending upon the nature of the seminar

CSCI 495  Field Work/Practicum: 1 Credits (1 Other)

PREREQUISITE: Junior standing and CSCI 232. (F, Sp) Directed assistance to, and involvement in labs, with lower division CS students

View Course Outcomes:

  1. Apply knowledge of previously learned computer science material.
  2. Communicate technical information effectively to less advanced students.
  3. Help less advanced students design, implement and debug computer programs.

CSCI 498  Internship: 1-3 Credits (1-3 Other)

PREREQUISITE: Junior standing, consent of instructor and approval of the School of Computing Director. (F, Sp, Su) An individualized assignment arranged with an agency, business or other organization to provide guided experience in the field
Repeatable up to 6 credits.

CSCI 521  Distributed Computing: 3 Credits (3 Lec)

() This course is not currently being offered. Implementation and integration of distributed compute, storage, and communication with a focus on cloud computing and security.

View Course Outcomes:

  1. Name and describe cloud-based communication, storage, and compute tools
  2. Analyze methods for secure communication, data storage, and computation
  3. Implement a secure distributed through a series of programming assignments
  4. Critique current research results in distributed systems

CSCI 532  Algorithms: 3 Credits (3 Lec)

(F) Concrete time and space complexity; combinatorial algorithms; greedy algorithms; dynamic programming; probabilistic and randomized algorithms; branch-and-bound algorithms. CSCI 432 is recommended.

View Course Outcomes:

  1. Understand and describe advanced algorithm and data structure techniques
  2. Formalize computational problems
  3. Determine appropriate algorithms and data structures for applications
  4. Propose and prepare an algorithms-related research project and present the results in written and oral form

CSCI 534  Computational Geometry: 3 Credits (3 Lec)

Techniques for storing, processing, and extracting meaningful information from spatial data. In particular, we will focus on efficiently solving problems about spatial relationships usually in low to medium dimensions. Specific topics will include point location, triangulations, and randomized incremental constructions. CSCI 532 is a recommended pre- or co-requisite.

View Course Outcomes:

  1. identify when a geometric technique is appropriate
  2. compare multiple geometric algorithms for solving similar problems
  3. explain a geometric proof orally and in writing
  4. assess the correctness of a geometric algorithm
  5. develop a technique for extracting meaning from spatial data ;

CSCI 535  Computational Topology: 3 Credits (3 Lec)

() Spring, even years. Provides an introduction to topological data analysis (TDA). This course will cover the topological, geometric, and algebraic tools used in TDA. Specific topics covered include persistent homology, Reeb graphs, and minimum homotopy area. Students will explore a data set of their choice in a course project, and learn how to apply the tools discussed in lecture.

View Course Outcomes:

  1. to explain the basics in topology, as they apply to are useful ;for computing with data.
  2. to compute Betti number, topological ;persistence, homology cycles, Reeb graphs, Laplace spectra from data.
  3. to read recent research papers in the area of computational topology.
  4. to articulate, both orally and in writing, mathematical ;proofs.
  5. to demonstrate teamwork skills.
  6. to present and to critique applications of ;research in Topological Data Analysis (TDA).
  7. to recognize potential applications of TDA.

CSCI 538  Computability: 3 Credits (3 Lec)

(Sp) Turing machine computability and decidability; abstract time and space complexity; intractability. CSCI 338 is recommended.

View Course Outcomes:

  1. Understand the concepts, proofs and techniques of computability theory. Be able to do mapping reductions.
  2. Understand the concepts, proofs and techniques of complexity theory and NP-completeness. Be able to do polynomial reductions.
  3. Understand the complexity classes beyond NP.
  4. Know how to handle intractable problems with approximations and FPT algorithms.

CSCI 540  Advanced Database Systems: 3 Credits (3 Lec)

() This course is not currently being offered. Advanced database models including spatial, temporal, and object-oriented; advanced data indexing techniques, data warehousing and query optimization. CSCI 440 is recommended.

View Course Outcomes:

  1. Have a good working knowledge of current semantic web technologies, what problems they are designed to solve, and what limitations still remain.
  2. Distill the essence of a scientific paper, setting it into a larger context of the fundamental problems researchers are trying to solve in the field.
  3. Make a publishable contribution to the scientific literature.

CSCI 545  Advanced Human Computer Interaction: 3 Credits (3 Lec)

(Sp) This course provides an introduction to advanced human computer interaction for innovation in technologies. Students will explore the core principles, methodologies, and applications of human-centered design computing practices. CSCI 232 is a recommended pre-requisite.

View Course Outcomes:

  1. Communicate the relevance of the human-centered design process in the practice of computer science at the graduate level.
  2. Analyze, establish requirements, design and evaluate interactive computer-based systems and products with respect to the user at the graduate level.
  3. Analyze and discuss HCI issues in ubiquitous computing, robotics, virtual reality, multimedia, and web-based related environments at the graduate level.
  4. Explain the principles of human cognition and relevant methodology at the graduate level.
  5. Apply, through written and oral communication, an interactive design process and universal design principles to design one or more HCI systems at the graduate level.

CSCI 546  Advanced Artificial Intelligence: 3 Credits (3 Lec)

PREREQUISITE: CSCI 446 is recommended. Study and in-depth exploration of one core subject area in artificial intelligence. Example topics include natural language processing, computer vision, deep learning, and biologically-inspired algorithms. Students will engage in seminar discussions and complete a non-trivial research project of their own design
Repeatable up to 6 credits.

View Course Outcomes:

  1. Formulate and assess problems in the core subject in artificial intelligence.
  2. Assess the strengths and weaknesses of historical and modern algorithms in the chosen AI subject.
  3. Apply techniques from the chosen AI subject to problems in agent control or data analysis.
  4. Propose, design, and conduct an experiment in AI, while analyzing the results of that experiment for significance and potential impact.
  5. Communicate the results of a research project in AI through written and oral media (i.e., a technical paper and presentation).

CSCI 547  Advanced Machine Learning: 3 Credits (3 Lec)

(Spring, even years.) An exploration of current and emerging topics in machine learning. Focus will be on current research in the field with topics derived from recently published literature. Students will engage in seminar discussions and complete a non-trivial research project of their own design. CSCI 447 is recommended.

View Course Outcomes:

  1. Formulate and assess problems in machine learning.
  2. Assess the strengths and weaknesses of several machine learning algorithms
  3. Assess and understand the key commonalities and differences in applications of machine learning to agent control and data analysis
  4. Apply techniques in machine learning to problems in agent control or data analysis
  5. Develop a proposal for an extended research project
  6. Design and conduct an experiment in machine learning
  7. Prepare a written, technical paper on individual research
  8. Deliver a presentation describing the results of individual research

CSCI 550  Advanced Data Mining: 3 Credits (3 Lec)

(Fall, even years.) This course provides in-depth coverage of techniques for extracting meaningful patterns from large datasets, including supervised and unsupervised learning methods. The course emphasizes both theory and practical applications of data mining in real-world scenarios. M 221, a probability/statistics course, and working knowledge of either R or Python are recommended.

View Course Outcomes:

  1. Formulate and assess problems in knowledge discovery and data mining.
  2. Assess the strengths and weaknesses of several data mining algorithms
  3. Apply techniques in data mining in knowledge discovery and extraction
  4. Develop a proposal for an extended research project
  5. Design and conduct an experiment in data mining
  6. Prepare a written, technical paper on individual research
  7. Deliver a presentation describing the results of individual research

CSCI 551  Adv. Computational Biology: 3 Credits (3 Lec)

This course examines a variety of algorithmic computational biology topics with an emphasis on elucidating new research problems. Co-convened with CSCI 451. CSCI 432 is recommended.

View Course Outcomes:

  1. - Students will understand complex algorithms related to computational biology.
    - Students will be able to read and analyze recent literature in the field, and undertake a research project.
    - Students will have the ability to apply knowledge of computing and mathematics.

CSCI 566  Advanced Networking: 3 Credits (3 Lec)

() This course is not currently being offered. This graduate-level course covers advanced topics in networking, with emphasis on IP and wireless networks. After taking this course, the students are expected to know the state-of-the-art in networking algorithms, protocols and architectures, and to understand how networking research is done. CSCI 466 is recommended.

View Course Outcomes:

  1. Learn and apply the fundamentals of network design.
  2. Learn to read, understand, and present ongoing networking research.
  3. Conduct research in the broad area of computer networking by preparing a research workshop paper submission.

CSCI 581  Computational Thinking Tchrs: 2 Credits (1 Lec, 1 Lab)

(Summer of odd years) The course examines the computing field and how it impacts the human condition. Exciting ideas and influential people are introduced. A gentle introduction to computational thinking using the Python programming language is provided. The course also introduces participants to robotic platforms.

View Course Outcomes:

  1. Identify the basics of computational thinking.
  2. Construct and present a computational exercise that can be incorporated into the classroom.
  3. Identify ways in which computing can improve the human condition.
  4. Identify how computational skills can benefit one's career and life.
  5. Design and implement short programs in an interpreted language such as Python.
  6. Compare significant ideas and people that underlie computing's past, present and future.

CSCI 582  Joy Beauty Data for Teachers: 2 Credits (1 Lec, 1 Lab)

(Summer of even years only) Teachers who enroll in this course will extend their knowledge of the Python programming language and be gently introduced to the world of data science. The course builds upon the pre-requisite course that is the 2-credit, MSSE course entitled Computer Science in the Classroom: An Introduction to Computational Thinking. Teachers who complete this course will be better prepared to teach material covered in CSCI 127, The Joy and Beauty of Computing.

View Course Outcomes:

  1. Utilize lists, files, dictionaries and arrays to solve problems in Python.
  2. Utilize fundamental object oriented principles such as classes, objects, methods and inheritance to solve problems in Python.
  3. Access data science libraries to solve data science problems in Python.
  4. Understand the broad area of data science and its relevance.

CSCI 583  Integrating Computer Science in Science Classrooms: 3 Credits (3 Lec)

(Su) This course is designed for in-service teachers. This course gently introduces foundational concepts in computer science and how computing can be used to further engage K-12 students in scientific inquiry. Through experiential, project-based learning, learners will explore and develop computational tools for learning and conducting scientific inquiry.

View Course Outcomes:

  1. Use research-based computer science teaching to support students’ exploration and inquiry in science curricula.
  2. Reflect on the relationship between science and computer science pedagogical content knowledge.
  3. Develop, analyze, and critique computational tools that engage students in scientific inquiry.
  4. Develop, analyze, and critique tools for data collection and analysis for the purpose of computation in scientific inquiry.
  5. Describe the importance of equity when implementing computer science in science classrooms.

CSCI 590  Master's Thesis: 1-10 Credits (1-10 Other)

PREREQUISITE: Master's standing
Repeatable up to 99 credits.

CSCI 591  Special Topics: 1-4 Credits (1-4 Lec)

To be determined based on actual topic offered. Courses not required in any curriculum for which there is a particular one-time need, or given on a trial basis to determine acceptability and demand before requesting a regular course number. Co-convened with CSCI 491 Repeatable up to 12 credits.
Repeatable up to 12 credits.

View Course Outcomes:

  1. Learning outcomes will change for each special topics course section.

CSCI 592  Independent Study: 1-3 Credits (1-3 Other)

PREREQUISITE: Graduate standing, consent of instructor and approval of director of the School of Computing. (F, Sp, Su) Directed research and study on an individual basis
Repeatable up to 6 credits.

CSCI 594  Seminar: 3 Credits (1-3 Other)

PREREQUISITE: Graduate standing or seniors by petition. (F, Sp) Course prerequisites as determined for each offering. Topics offered at the graduate level which are not covered in regular courses. Students participate in preparing and presenting discussion material
Repeatable up to 6 credits.

View Course Outcomes:

  1. Seminar class: learning outcomes will vary.

CSCI 598  Internship: 1-3 Credits (1-3 Other)

PREREQUISITE: Graduate standing, consent of instructor and approval of director of the School of Computing. (F, Sp, Su) An individualized assignment arranged with an agency, business or other organization to provide guided experience in the field
Repeatable up to 6 credits.

View Course Outcomes:

  1. Graduate Internship, outcomes will vary.

CSCI 599  Graduate Consultation: 1-3 Credits (1-3 Other)

PREREQUISITE: Master's standing, consent of instructor and approval of director of the School of Computing. (F, Sp, Su) This course may be used only by students who have completed all of their course work, and thesis, if on a thesis plan but who need additional faculty or staff time or help
Repeatable up to 3 credits.

CSCI 690  Doctoral Thesis: 1-10 Credits (1-10 Other)

PREREQUISITE: Doctoral standing
Repeatable up to 99 credits.