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 105 - Computer Fluency. 3.000 Credits.

Offered autumn and spring. Introduces the skills and concepts of information technology, both from practical and a more theoretical point of view. During lectures and interactive computer labs, students will explore a wide range of digital and information technologies, including common PC applications, networking, databases, privacy, and security. Credit not allowed for both CSCI 105 and CRT 111 and CS 111.

CSCI 106 - Careers in Computer Science. 1 Credit.

Offered autumn. Exploration of various careers available in the general area of Computer Science. Includes discussion of strategies for success in the major. Computer Science faculty members also will discuss possible undergraduate research opportunities and motivation for graduate education.

CSCI 107 - The Joy and Beauty of Computing. 3 Credits.

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 108 - Interdisciplinary Computing: Practical Computational Problem Solving. 3 Credits.

Offered autumn and spring. Prereq., WRIT 101 (or higher) or equivalent. Students will develop critical thinking and problem solving by applying computational problem solving across a broad range of interdisciplinary fields. This course is not a programming course. Instead, students will focus on problem specification, meta-analysis, formal description, generalizing solutions, enumerating decision possibilities and outcomes, process analysis, problem partitioning, and digital representation using the English language.

Gen Ed Attributes: Writing Course-Intermediate

CSCI 110 - Programming - VB I. 3 Credits.

Offered autumn and spring. M 090 or ALEKS score >=, M01-Maplesoft Arithmetic score >= 9 recommended prior to taking course. An introduction to object-oriented programming using an even-driven paradigm. Basic concepts of control structures, data handling, documentation, and error control. Fundamentals of algorithm design and structured software development.

CSCI 113 - Programming with C++ I. 3 Credits.

Offered spring. Offered at Missoula College. M 090 or ALEKS score >= or M01-Maplesoft Arithmetic score >= 9 recommended prior to taking course. Object oriented programming using C++. Implementation of structured programming concepts along with construction of classes to create data types for defining objects.

CSCI 120 - Programming - VB II. 3 Credits.

Offered autumn. Prereq., CSCI 110. Design and implementation of software using object-oriented programming practices. The class framework is used to apply the object-oriented techniques of encapsulation, polymorphism, and inheritance.

CSCI 125 - Computation in the Sciences. 3.000 Credits.

Offered autumn at the Mountain Campus. Use a high-level structured programming language to study data types, looping and control structures, lists, dictionaries, and file i/o. Use computing and programming to solve scientific problems.

CSCI 126 - Computation in the Sciences with Calculus. 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, numerical differentiation and integration, solving ordinary differential equations, matrix manipulation, and sensor networks.

CSCI 135 - Fund of Computer Science I. 3.000 Credits.

Offered autumn and spring. Offered on both Mountain Campus and at Missoula College. Prereq., computer programming experience in a language such as BASIC, Pascal, C, etc. Fundamental computer science concepts using a high level structured programming language (e.g. Java or Python).

CSCI 136 - Fund of Computer Science II. 3.000 Credits.

Offered autumn and spring. Offered at both Mountain Campus and Missoula College. Prereq., CSCI 125, or CSCI 126 or CSCI 135; coreq., M 115 or M 151 or consent of instr. 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 172 - Intro to Computer Modeling. 3.000 Credits.

Offered autumn and spring. Offered at both Mountain Campus and at Missoula College. Problem solving and data modeling using computer productivity software. Emphasis using spreadsheets and database for data analysis.

CSCI 181 - Web Design and Programming. 3 Credits.

Offered autumn. Students will learn how to critically analyze the usability of web sites and create their own by understanding and applying universal principles of design. Programming and other key concepts covered include HTML, CSS, JavaScript, and Web Graphics. Students will complete many different types of Web projects throughout the semester, culminating in an online portfolio used to showcase work completed in this class and others. No prior programming experience is expected.

CSCI 191 - Special Topics. 6.000 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Experimental offerings of visiting professors, experimental offerings of new courses, or one-time offerings of current topics.

CSCI 198 - Internship. 1-6 Credits.

Offered intermittently. Prereq., consent of department. Extended classroom experience which provides practical application of classroom learning during placements on and off campus. Prior approval must be obtained from the faculty supervisor and the Internship Services office. A maximum of 6 credits of Internship (198, 298, 398, 498) may count toward graduation.

CSCI 205 - Programming Languages w/ C/C++. 4.000 Credits.

Offered spring. 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 215E - Social & Ethical Issues in CS. 3 Credits.

Offered autumn and spring. Offered at Missoula College. Prereq., WRIT 101 (or higher) or equivalent. Exploration of ethical issues in the field of computing. Skills needed to identify and analyze various ethical concerns. Standard ethical concepts and theories, methods of ethical analysis. Strong emphasis on practical application of the ethical process.

Gen Ed Attributes: Ethical & Human Values Course, Writing Course-Intermediate

CSCI 221 - System Analysis and Design. 3 Credits.

Offered spring. Offered at Missoula College. Prereq., CSCI 240. Analysis of the system development life cycle. Emphasis on planning, analyzing, designing, implementing and supporting information systems to meet business requirements. Covers feasibility studies, time and cost estimates, modeling tools, design tools, implementation and support strategies. A simulated business design project will be developed.

CSCI 232 - Data Structures and Algorithms. 4.000 Credits.

Offered autumn. Prereq., 'B-' or better in CSCI 136; or consent of instr. Abstract data types, algorithm analysis, stacks, queues, lists, recursion, trees, hashing, graphs, and applications of data structures in algorithm development. Python programming language used.

CSCI 240 - Databases and SQL. 3 Credits.

Offered autumn. Prereq., CSCI 172 or consent of instr. Relational database design including: requirements analysis, data structure, entity relationships, normalization, relational algebra and integrity. Physical implementation focusing on data storage; retrieval and modification; concurrency; optimization; security; SQL; and XML.

CSCI 290 - Undergraduate Research. 1-6 Credits.

(R-10) Offered every term. Offered at Missoula College. Consent of instr. Independent research under the direction of a faculty member.

CSCI 291 - Special Topics. 1-6 Credits.

(R-9) Offered intermittently. Prereq., consent of instr. Experimental offerings of visiting professors, experimental offerings of new courses, or one-time offerings of current topics.

CSCI 298 - Internship. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of department. Extended classroom experience which provides practical application of classroom learning during placements on and off campus. Prior approval must be obtained from the faculty supervisor and the Internship Services office. A maximum of 6 credits of Internship (198, 298, 398, 498) may count toward graduation.

CSCI 315E - Computers, Ethics, and Society. 3 Credits.

Offered autumn. Prereq., WRIT 101 or equivalent, and one intermediate writing course. Ethical problems that computer scientists face. The codes of ethics of professional computing societies. The social implications of computers, computing, and other digital technologies.

Gen Ed Attributes: Ethical & Human Values Course, Writing Course-Advanced

CSCI 323 - Software Science. 3 Credits.

Offered autumn. Prereq., CSCI 136. Study, implementation, and assessment of software processes, techniques, methods, and CASE tools. Project management and cost estimation techniques will be examined. A group project may be required.

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 340 - Database Design. 3 Credits.

Offered spring. Prereq., CSCI 232 or consent of instr. Fundamentals of data modeling, the relational mode, normal forms, file organization, index structures and SQL. Major project involving the design and implementation of a relational database.

CSCI 361 - Computer Architecture. 3 Credits.

Offered spring. Prereq., CSCI 136 or consent of instr. Functional view of computer system components, BCPU, ALU, memory, bus, cache, I/O module. Instruction set design: formats, addressing modes. Basic circuit design. Pipelining and assembly language. Interrupt handling. Implementation of ALU and control unit. Detailed design of an RISC-like instruction set. Datapath and performance comparisons. Basic multiprocessor design.

CSCI 390 - Research. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Directed individual research and study appropriate to the back ground and objectives of the student.

CSCI 391 - Special Topics. 1-6 Credits.

(R-6) Offered intermittently. Prereq., junior standing. Experimental offerings of visiting professors, experimental offerings of new courses, or one-time offerings of current topics.

CSCI 392 - Independent Study. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Course material appropriate to the needs and objectives of the individual student.

CSCI 394 - Seminar. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Guidance in special work.

CSCI 398 - Internship. 1-3 Credits.

(R-3) Offered intermittently. Prereq., consent of department. Business or government internship. Prior approval must be obtained from faculty supervisor and the Internship Services office. Only three credits applicable to computer science major or minor. A maximum of 6 credits of Internship (198, 298, 398, 498) may count toward graduation.

CSCI 411 - Advanced Web Programming. 3 Credits.

Offered intermittently. Prereq., CSCI 136. Programming and software development techniques for developing web-based applications. Scripting and other programming languages that are used for web-based development.

CSCI 412 - Game and Mobile App. 3 Credits.

Offered intermittently. Prereq., CSCI 232 and 323. Programming and software development techniques for developing gaming and mobile applications. Multiple gaming environments and mobile programming languages are introduced and examined to build modern applications.

CSCI 426 - Adv Prgrmng Theory/Practice I. 3 Credits.

Offered autumn. Prereq., CSCI 205, 232, 323 and M 225, or consent of instr. Class represents first in senior capstone experience. Students will work in groups on phases of the software development process to develop real-world software. Focus will be on client awareness, requirements specification and analysis, prototyping, user feedback, documentation and presentation.

CSCI 427 - Adv Prgrmng Theory/Practice II. 3 Credits.

Offered spring. Prereq., CSCI 426. Design and implementation of a major software project in a group setting, with required documentation, presentation, installation, and approval by the instructor.

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 444 - Data Visualization. 3 Credits.

Offered intermittently. Prereq., M 171; programming experience; and junior, senior, or graduate status; or consent of instr. Visualization fundamentals and applications using special visualization software; formulation of 3-D empirical models; translation of 3-D models into graphical displays; time sequences and pseudo-animation; interactive versus presentation techniques; special techniques for video, CD and other media.

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 451 - Computational Biology. 3 Credits.

Offered Autumn. Designed for attendance by both computer scientists and biologists. The course will explore the interdisciplinary nature at the juncture of the two fields. Students will be introduced to bioinformatics (emphasis: computational genomics), with exposure to fundamental problems, algorithms, and tools in the field. This includes a basic introduction to genomics, along with in-depth coverage of algorithms and methods relevant to modern computational genomics, including: biological sequence alignment, sequence database homology search, and phylogeny inference. The programming expectations are limited for a 400-level computer science course, but at least one semester of a programming-intensive course is required. Credit not allowed for CSCI 558 and this course

CSCI 460 - Operating Systems. 3 Credits.

Offered autumn. Prereq., CSCI 232, or consent of instr. Operating system design principles. Processes, threads, synchronization, deadlock, memory management, file management and file systems, protection, and security, comparison of commonly used existing operating systems, writing programs that make use of operating system services. It is recommended, but not required, that the student also attend Programming Languages (in order to be prepared to write C programs) and Architecture (in order to understand interactions between the operating system and processor hardware) prior to attending this course.

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 466 - Networks. 3 Credits.

Offered spring. Prereq., CSCI 232. Concepts and practice of computer networking, network protocol layers, switching, routing, flow, and congestion control. Network programming.

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 490 - Research. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Directed individual research and study appropriate to the back ground and objectives of the student.

CSCI 491 - Special Topics. 1-6 Credits.

(R-18) Offered intermittently. Prereq., consent of instr. Experimental offerings of visiting professors, experimental offerings of new courses, or one-time offerings of current topics.

CSCI 492 - Independent Study. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Course material appropriate to the needs and objectives of the individual student.

CSCI 494 - Seminar. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Guidance in special work.

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 499 - Senior Thesis/Capstone. 1-6 Credits.

(R-6) Offered every term. Prereq., WRIT 101 or equivalent, and one intermediate writing course and consent of thesis/project director and chair of the Computer Science Department. Senior thesis for computer science majors and/or Watkins scholars.

Gen Ed Attributes: Writing Course-Advanced

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 558 - Intro to Bioinformatics. 3 Credits.

Offered autumn. Designed for attendance by both computer scientists and biologists. The course will explore the interdisciplinary nature at the juncture of the two fields. Students will be introduced to bioinformatics (emphasis: computational genomics), with exposure to fundamental problems, algorithms, and tools in the field. This includes a basic introduction to genomics, along with in-depth coverage of algorithms and methods relevant to modern computational genomics, including: biological sequence alignment, sequence database homology search, and phylogeny inference. The programming expectations are limited for a 500-level computer science course, but at least one semester of a programming-intensive course is required. A substantial project is a key component of the course. Level:

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

CSCI 590 - Research. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Directed individual research and study appropriate to the back ground and objectives of the student. Level: Graduate

CSCI 591 - Special Topics. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Experimental offerings of visiting professors, experimental offerings of new courses, or one-time offering of current topics. Level: Graduate

CSCI 592 - Independent Study. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Course material appropriate to the needs and objectives of the individual student. Level: Graduate

CSCI 594 - Graduate Seminar. 1-6 Credits.

(R-6) Offered intermittently. Prereq., consent of instr. Seminar on current research topics in computer science. Level: Graduate

CSCI 595 - Practicum. 1-6 Credits.

(R-12) Offered intermittently. Prereq., consent of instr. Organized field experience.

CSCI 598 - Internship. 1-9 Credits.

(R-3) Offered intermittently. Prereq., consent of department. Business or government internship. Prior approval must be obtained from faculty supervisor and the Internship Services office. Only three credits applicable to computer science major or minor. Level: Graduate

CSCI 599 - Thesis/Project. 1-6 Credits.

(R-6) Offered every term. Prereq., consent of instr. Research for and preparation of the master thesis or professional paper. Level: Graduate