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.

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.

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

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.

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

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

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,

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

CSCI 246  Discrete Structures: 3 Credits (3 Lec)

PREREQUISITE: M 171Q or M 165Q
COREQUISITE: CSCI 132. (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
.

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: 3 Credits (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.

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

PREREQUISITE: CSCI 132 and CSCI 246. (F, Sp) An examination of several programming paradigms, and languages, as well as their application and underlying execution model. Paradigms examined include imperative, object-oriented, functional, logic and string based. Students will gain exposure to a variety of languages such as C, C++, Scheme, Prolog and Perl. CSCI 112 is recommended

CSCI 331  Web Development: 3 Credits (3 Lec)

PREREQUISITE: 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

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

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

CSCI 351  Systems Administration: 3 Credits (3 Lec)

PREREQUISITE: CSCI 112 and CSCI 232. (F, Sp) 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

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

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)

PREREQUISITE: 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

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

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)

PREREQUISITE: CSCI 232 or consent of instructor. (F) 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

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

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

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

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 will build an autonomous mobile robot, and learn to program it to perform increasingly sophisticated behaviors. Besides providing an introduction to autonomous mobile robot technologies, the students also learn key concepts of mechanics, electronics, programming techniques, and systems design and integration

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

CSCI 466  Networks: 3 Credits (3 Lec)

PREREQUISITE: CSCI 232 and CSCI 112. (F) Communication protocols and their design with an emphasis on current technology and implementation of software. CSCI 366 is recommended

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.

CSCI 476  Computer Security: 3 Credits (3 Lec)

PREREQUISITE: CSCI 112 and CSCI 232. (Sp) Introduction to computer security. Covers security issues in software design and development from technical, social and legal viewpoints. Topics include cryptography, security models, software security, authentication, authorization, and system security

CSCI 481  Program Assessment: ()

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

CSCI 482R  Interdisciplinary Project Instruction: 1 Credits (1 Other)

PREREQUISITE: ESOF 322. (F) First part of a senior capstone sequence for the interdisciplinary option. Classroom instruction that prepares a student to undertake an interdisciplinary project that relates computing to the student's minor

CSCI 483R  Interdisciplinary Project: 3 Credits (3 Other)

PREREQUISITE: CSCI 482R. (Sp) The second part of a senior capstone sequence for the interdisciplinary option. Students undertake an interdisciplinary project and present their results through a written paper, a poster, a working prototype, and an oral presentation

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 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.

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

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 520  Distributed Systems: 3 Credits (3 Lec)

(Sp) The design and implementation of software systems that utilize multiple host computer networks as a foundation. Concurrency control, homogeneous and heterogeneous systems, interprocess communication, protocols and application design. CSCI 432 and CSCI 466 are recommended.

CSCI 521  Distributed Computing: 3 Credits (3 Lec)

Implementation and integration of distributed compute, storage, and communication with a focus on cloud computing and security.

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.

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.

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.

CSCI 538  Computability: 3 Credits (3 Lec)

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

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

Advanced database models including spatial, temporal, and object-oriented; advanced data indexing techniques, data warehousing and query optimization. CSCI 440 is recommended.

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.

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.

CSCI 547  Machine Learning: 3 Credits (3 Lec)

() Spring, eve 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.

CSCI 548  Reasoning Uncertainty: 3 Credits (3 Lec)

An exploration of problem solving using probabilistic graphical models. Topics in probabilistic representations, inference algorithms, and learning such models from data will be explored. Students will engage in seminar discussions and complete a non-trivial research project of their own design. CSCI 446 and background in probability is recommended.

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

() Fall, even years. Clustering, classification and pattern recognition; performing automated discovery of knowledge from a data set. M 221 and a probability or statistics course are recommended.

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.

CSCI 566  Advanced Networking: 3 Credits (3 Lec)

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.

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

(Su) 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. Offered Summer.

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

(Su) 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. Offered Summer.

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.

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: 1-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.

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.

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.