Computer Science/Programming (CSCI)
CSCI 100 - Intro to Programming. 3.000 Credits.
Offered autumn and spring. This course covers basic programming concepts such as variables, data types, iteration, flow of control, input/output, functions, and objects. The course will also cover programming ideas such as data structures, algorithms, modularity, and debugging. Students will learn about the role computation can play in solving problems by writing interesting programs to solve useful goals. No prior programming experience is expected. (Two hours independent lab per week.) Credit not allowed for both CSCI 100 and CSCI 110.
CSCI 136 - Fund of Computer Science II. 3.000 Credits.
Offered autumn and spring. Offered at both Mountain Campus and Missoula College. Prereq., CSCI 135; coreq., M 115 or M 151 or consent of instr. Continuation of CSCI 135. Survey of computer science topics including recursion, algorithms, basic data structures, operating systems, artificial intelligence, graphics, user interfaces, and social and ethical implications of computing.
CSCI 205 - Programming Languages w/ C/C++. 4.000 Credits.
Offered spring. Prereq., CSCI 232 and M 225. Concepts and principles of programming languages with an emphasis on C, C++, and object-oriented programming. Syntax and semantics of object-oriented languages. Principles and implementation of late binding, memory allocation and de-allocation, type-checking, scope, polymorphism, inheritance.
CSCI 250 - Computer Mdlng/Science Majors. 3.000 Credits.
Offered autumn. Prereq., basic computer and spreadsheet literacy; coreq., M 162 or M 171. An introduction to programming in Python with an emphasis on problems arising in the sciences, including: function plotting, data fitting, file input/output, solving ordinary differential equations, matrix manipulation, and sensor networks. A student can take at most one of CSCI 172, CSCI 250, CRT 280, and CRT 281 for credit.
CSCI 332 - Design/Analysis of Algorithms. 3 Credits.
Offered spring. Prereq., CSCI 232 and M 225 or consent of instr. Algorithm design, analysis, and correctness. Commonly used algorithms including searching and sorting, string search, dynamic programming, branch and bound, graph algorithms, and parallel algorithms. Introduction to NP-complete problems.
CSCI 426 - Adv Prgrmng Theory/Practice I. 3 Credits.
Offered autumn. Prereq., CSCI 205, 232, 323 and M 225, or consent of instr. Examination and implementation of modern best practices in the areas of software design, coding, testing and maintenance. Focus on design patterns and design pattern languages used to build modern software systems in a variety of areas.
CSCI 441 - Computer Graphics Programming. 3 Credits.
Offered intermittently. Prereq., CSCI 232 and M 221 or consent of instr. The graphics pipeline, its implementation in hardware and emphasis on the programmable portions of the pipeline. Matrix transformations for modeling, viewing, clipping, and windowing. Application of lighting, coloring, and texturing models. Hierarchical modeling of objects. Programmable shaders. OpenGL and WebGL.
CSCI 443 - User Interface Design. 3 Credits.
Offered intermittently. Prereq., CSCI 232 or consent of instr. Introduction to usability and key concepts of human behavior. Focus on the process of user-centered design, including requirements specification, prototyping, and methods of evaluation. Incorporation of regular design critiques of classmates' work, and emphasis on both oral and written communication skills. Credit not allowed for CSCI 543 and this course.
CSCI 446 - Artificial Intelligence. 3 Credits.
Offered intermittently. Prereq., M 225 or M 307, and CSCI 232, or consent of instr. Using computers and software to solve problems that require intelligence. Specific topics may include knowledge representation, logical and probabilistic reasoning, machine learning, planning, game playing, information retrieval, computer vision, and robotics.
CSCI 447 - Machine Learning. 3 Credits.
Offered intermittently. Prereq., CSCI 232 or consent of instr. Introduction to the framework of learning from examples, various learning algorithms such as neural networks, and generic learning principles such as inductive bias, Occam's Razor, and data mining. Credit not allowed for both CSCI 447 and CSCI 547.
CSCI 448 - Pattern Recognition. 3 Credits.
Offered intermittently. Prereq., Junior or Senior status. Introduction to the framework of unsupervised learning techniques such as clustering (agglomerative, fuzzy, graph theory based, etc.), multivariate analysis approaches (PCA, MDS, LDA, etc.), image analysis (edge detection, etc.), as well as feature selection and generation. Emphasis will be on the underlying algorithms and their implementation. Credit not allowed for both CSCI 448 and CSCI 548.
CSCI 464 - Applications of Mining Big Data. 3 Credits.
Offered intermittently. Prereq., upper division or consent of instr. Co-convenes with CSCI 564. Introduction to existing data mining software systems and their use, with focus on practical exercises. Topics include data acquisition, data cleansing, feature selection, and data analysis. Credit not allowed for both CSCI 464 and CSCI 564.
CSCI 477 - Simulation. 3 Credits.
Co-convene with CSCI 577. Prereq., M 172, CSCI 135, or consent of instr. Matrix languages. ODE solving; Euler-Richardson, Runge-Kutta, PDE solving; finite differences, finite elements, multi-grid techniques. Discrete methods for solution, renormalization group method, critical phenomena. Emphasis on presentation of results and interactive programs. Credit not allowed for CSCI 577 and this course.
CSCI 480 - Applied Parallel Computing Techniques. 3 Credits.
Prereq., CSCI 205 and 232, or instructor consent. This course is an introduction to parallelism and parallel programming. Topics include the various forms of parallelism on modern computer hardware (e.g. SIMD vector instructions, GPUs, multiple cores, and networked clusters), with coverage of locality and latency, shared vs non-shared memory, and synchronization mechanisms (locking, atomicity, etc). We will introduce patterns that appear in essentially all programs that need to run fast. We will discuss how to recognize these patterns in a variety of practical problems, discuss efficient algorithms for implementing them, and how to compose these patterns into larger applications. We will address computer architecture at a high level, sufficient to understand the relative costs of operations like arithmetic and data transfer. We also introduce useful tools for debugging correctness and performance of parallel programs. Assignments will include significant parallel programming projects. Co-convenes with CSCI 580. Credit not allowed for both CSCI 480 and CSCI 580.
CSCI 498 - Internship. 1-3 Credits.
(R-3) Offered Intermittently. Prereq., consent of department. Business or government internship. Prior approval must be obtained from the faculty supervisor and the Internship Services office. Only three credits of CSCI 398 and/or CSCI 498 applicable to computer science major or minor. A maximum of 6 credits of Internship (198, 298, 398, 498) may count toward graduation.
CSCI 543 - Human-Computer Interaction. 3 Credits.
Offered intermittently. Prereq., CSCI 232 or consent of instr. Principles of good design for interactive systems and web-based applications. User-centered design methodology including requirements specification, low and high-fidelity prototyping, heuristic evaluation, cognitive walkthrough, predictive modeling, and usability testing. Advanced HCI research project. Credit not allowed for both CSCI 443 and CSCI 543. Level: Graduate
CSCI 547 - Machine Learning. 3 Credits.
Offered intermittently. Prereq., CSCI 232 or consent of instr. Fundamentals of machine learning including neural networks, decision trees, Bayesian learning, instance-based learning, and genetic algorithms; inductive bias, Occam's razor, and learning theory; data mining; software agents. Credit not allowed for CSCI 447 and CSCI 547. Level: Graduate
CSCI 548 - Pattern Recognition. 3 Credits.
Offered intermittently. Introduction to the framework of unsupervised learning techniques such as clustering (agglomerative, fuzzy, graph theory based, etc.), multivariate analysis approaches (PCA, MDS, LDA, etc.), image analysis (edge detection, etc.), as well as feature selection and generation. Techniques in exploratory data analysis when faced with large, multivariate datasets. Opportunities at implementation of some algorithmic approaches as well as use of preexisting tools such as the R-project statistics package. Emphasis will be on the underlying algorithms and their implementation. Credit not allowed for both CSCI 448 and CSCI 548. Level: Graduate
CSCI 555 - Topics Artificial Intelligence. 3 Credits.
Offered intermittently. Prereq., M 225 or M 307, and CSCI 232, or consent of instr. The study and design of artificial intelligent agents. Specific topics may include knowledge representation, logical and probabilistic reasoning, machine learning, planning, game playing, information retrieval, computer vision, and robotics. Level: Graduate
CSCI 564 - Applications of Mining Big Data. 3 Credits.
Offered intermittently. Co-convenes with CSCI 464. Introduction to existing data mining software systems and their use, with focus on practical exercises. Topics include data acquisition, data cleansing, feature selection, and data analysis. Credit not allowed for both CSCI 464 and CSCI 564. Level: Graduate
CSCI 577 - Simulation Modeling. 3 Credits.
Co-convene with CSCI 477. Prereq., M 172, CSCI 135, or consent of instr. Matrix languages. ODE solving; Euler-Richardson, Runge-Kutta, PDE solving; finite differences, finite elements, multi-grid techniques. Discrete methods for solution, renormalization group method, critical phenomena. Emphasis on presentation of results and interactive programs. Conduct, document, and present graduate level research involving computer simulation methods. Credit not allowed for CSCI 477 and this course. Level: Graduate
CSCI 580 - Applied Parallel Computing Techniques. 3 Credits.
Offered intermittently. Prereq., CSCI 232, 205. Parallel processing architectures and programming languages. Co-convenes with CSCI 580. Credit not allowed for both CSCI 480 and CSCI 580. Level: Graduate