Courses listed here may not be offered every term or every year. Consult the Class Schedule to see the specific offerings for a particular term.
CSCI 1001. Introduction to Computer Science. (M/SR; 2.0 cr)
Basic hardware and software concepts, elementary data representation, problem solving techniques, algorithm development, and current information processing and network applications. CSCI 1001H. Honors: Introduction to Computer Science. (M/SR; 2.0 cr; prereq participation in Honors Program or #)
Basic hardware and software concepts, elementary data representation, problem solving techniques, algorithm development, and current information processing and network applications. CSCI 1211. Introduction to Problem Solving with Java. (M/SR; 4.0 cr; prereq Math 1101)
Problem solving and algorithm design using object oriented programming techniques. Introduction to the Java programming language and its use in implementing algorithms to solve scientific problems. Testing and debugging of software with emphasis on the complexity of modern software systems. IS 1091. Ethical and Social Implications of Technology. (E/CR; 2.0 cr)
Description of appropriate technological advances. Historical development related to technology and its development cycle. Discussion of the ethical and social implications of technology. IS 1091H. Honors: Ethical and Social Implications of Technology. (E/CR; 2.0 cr; prereq participation in Honors Program or #)
Description of appropriate technological advances. Historical development related to technology and their development cycle. Discussion of the ethical and social implications of technology.
CSCI 1301. Problem Solving and Algorithm Development I. (M/SR; 4.0 cr)
Introduction to different problem solving approaches and major programming paradigms, hardware, software and data representations. Study of the functional programming paradigm, concentrating on recursion and inductively-defined data structures. Simple searching and sorting algorithms. CSCI 1302. Problem Solving and Algorithm Development II. (M/SR; 4.0 cr)
Basic proof techniques, propositional and predicate logic, induction and invariants, program correctness proofs, simple Big-Oh analysis of algorithms, set theory, introductory graph theory, matrices, and recurrence relations. CSCI 2101. Data Structures. (M/SR; 5.0 cr; prereq 1301, 1302)
Introduction to data types including: stacks, queues, trees, and graphs; implementation of abstract data types using object-oriented techniques and reusable libraries. (4 hrs lect, 2 hrs lab) CSCI 2901. Seminar I. (1.0 cr; prereq 1301, 1302; S-N only)
Familiarizes students with literature in the field, focusing on ethical issues in computing. Discussion and group work. Students analyze various articles or similarly published works, synthesize their contents, make formal presentations, and attend and evaluate the presentations of their peers.
CSCI 3401s. Models of Computing Systems. (M/SR; 5.0 cr; prereq 2101)
Basics of computing systems, models of networks and operating systems. Discussion of deadlock, scheduling, protection and security, data management, inter-computer communication, the OSI network model and how the three lower layers are instantiated in TCP/IP. (4 hrs lect, 2 hrs lab) CSCI 3501f. Algorithms and Computability. (M/SR; 5.0 cr; prereq 2101)
Models of computation (Turing machines, lambda calculus, deterministic and non-deterministic machines); approaches to the design of algorithms, determining correctness and efficiency of algorithms; complexity classes, NP-completeness, approximation algorithms. (4 hrs lect, 2 hrs lab) CSCI 3601. Software Design and Development. (M/SR; 5.0 cr; prereq 2101)
Design and implementation of medium- and large-scale software systems. Principles of organizing and managing such designs and implementations throughout their lifetime. Designing for modularity and software reuse; use of libraries. Dynamics of working in groups. Group lab work on a substantial software project. (4 hrs lect, 2 hrs lab)
CSCI 4400. Variable Topics in ComputingSystems. (M/SR; 2.0 cr [max 999.0 cr]; prereq 2901, 3401 or #; repeatable when topic changes;offered when feasible)
Current developments in computer networks, operating systems, system programming, computer architecture, parallel and distributed architectures, databases, artificial intelligence, graphics, approximation algorithms, artificial life, computer music, etc. CSCI 4401. Variable Topics in Computing Systems: Modern Databases. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
Introduction to the relational model, its strengths and weaknesses, and SQL. Overview of object-oriented databases and OQL. Survey of advanced and emerging database application areas including active and deductive databases, digital libraries, and data warehousing and data mining. CSCI 4402. Variable Topics in Computing Systems: TCP/IP Networks. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
Study of the characteristics of TCP/IP networks. Discussion and implementation of applications usually associated with TCP/IP networks. CSCI 4403. Variable Topics in Computing Systems: Data Mining. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
An introduction to a new field which tries to solve the problem of how to store (warehouse) and how to extract (mine) valid, useful and previously unknown data from a source (database or web) which contains an overwhelming amount of information. Algorithms applied will include searching for patterns in the data, using machine learning, and applying artificial intelligence techniques. CSCI 4404. Variable Topics in Computing Systems: Parallel Systems. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
Models of parallel computation, common algorithms used for parallel and/or distributed computations such as parallel prefix, pointer jumping, various divide-and-conquer methods, image processing, and parallel graph algorithms. Programs designed using PVM, the Parallel Virtual Machine software developed at Oakridge National Laboratories in Tennessee. CSCI 4405. Variable Topics in Computing Systems: Computer Architecture andOrganization. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
A review of current hardware technology, combinational and sequential logic, arithmetic circuits, datapaths, interrupts and caches. Introduces various forms of parallelism such as multiple functional units, pipelining and processor arrays; analytic and simulation-based models of architectural features. CSCI 4406. Variable Topics in Computing Systems: Wireless Data Networks. (M/SR; 2.0 cr; prereq 3401, &3903 or #)
Licensed vs. unlicensed carrier frequencies. Physical layer characteristics and protocols. Network topologies. Discussion of current and upcoming standards. Data privacy and security. CSCI 4407. Variable Topics in Computing Systems: Network Security. (M/SR; 2.0 cr; prereq 3401, 2901 or #)
Techniques for achieving security in multi-user computer systems and distributed computer systems. Includes topics from applied cryptography (secret-key, digital signatures), authentication schemes, intrusion detection (viruses), electronic commerce (payment protocols, electronic cash), virtual private networks and firewalls.
CSCI 4450. Variable Topicsin Computing Systems. (M/SR; 4.0 cr [max 999.0 cr]; prereq 3401; repeatable when topic changes; offeredwhen feasible)
Topics in computing systems such as computer networks, operating systems, system programming, computer architecture, parallel and distributed architectures, databases, artificial intelligence, graphics, approximation algorithms, artificial life, computer music. CSCI 4451. Variable Topics in Computing Systems: Distributed Systems. (M/SR; 4.0 cr; prereq 3401)
An introduction to distributed systems/computation. Topics include processes and threads, physical vs. logical clocks, interprocess communication and coordination, election algorithms, synchronization, distributed task scheduling, distributed shared memory, distributed file systems and replicated data management. CSCI 4452. Variable Topics in Computing Systems: Computer Networks. (M/SR; 4.0 cr; prereq 3401)
Principles of computer networks. Network topologies, protocols, routing, internetworking, security and privacy. CSCI 4453. Variable Topics in Computing Systems: Database Systems. (M/SR; 4.0 cr; prereq 3401)
Introduction to relational, object-relational and object database systems. Topics include the relational model, SQL and related query languages, JDBC and database applications programming, database design, query processing and optimization, indexing techniques, and transaction management. CSCI 4454. Systems: Robotics. (M/SR; 4.0 cr; prereq 3401 or #; offered when feasible)
An introduction to robotic systems including robot mechanics, algorithms in robotics, and sensor interfaces for autonomous mobile and arm robots. Concepts of kinematics and coordinate systems, real-time programming, embedded systems, pattern recognition algorithms, simulation environments, and subsumption architecture within the context of robotics applications are explored.
CSCI 4500. Variable Topics in Theory. (M/SR; 2.0 cr [max 999.0 cr]; prereq 2901, 3501 or #; repeatable when topic changes;offered when feasible)
Current developments in analysis of algorithms, theory of computation, distributed algorithms, parallel algorithms, approximation algorithms, graph theory, computational geometry, NP-completeness, etc. CSCI 4501. Variable Topics in Theory: 3-D Modeling. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Introduction to three-dimensional modeling in computer graphics. Topics include 3-D geometry, affine transformations, polygonal representation, constructive solid geometry, B-splines, viewing systems, clipping, hidden surface removal, Phong shading, and ray tracing. CSCI 4502. Variable Topics in Theory: Lambda Calculus. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Introduction to key formal model of computation. Topics include definitions and models of reduction, the Church-Rosser theorem, combinatory logic, fixed points, Church numerals, and typed lambda calculi. Discussion of the equivalence of the lambda calculus and the Turing machine model of computation. CSCI 4503. Variable Topics in Theory: An Introduction to Intelligent AgentTheory. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Survey of this new field of Artificial Intelligence. The focus will be on software agents that can perform tasks such as learning a user's preferences, organizing information, or making decisions for a user. Some background topics in Artificial Intelligence may be covered. The class will include a project using Java. CSCI 4504. Variable Topics in Theory: Machine Learning. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Study of the design of a computer system which can adapt and learn from its experience. Study of algorithms which train a machine to solve problems, often by using a small subset of the data for training purposes and then applying that knowledge to the entire data set. Examples are text understanding and speech recognition. Other methods such as decision tree learning, inductive learning, reinforcement learning, supervised learning and explanation-based learning will be covered. CSCI 4505. Variable Topis in Theory: Intelligent Tutoring Systems. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Intelligent Tutoring Systems (ITS) use techniques from Artificial Intelligence to build smarter systems to tutor or train people. The foundations of ITS along with a brief look at some of the current research in this field. May include presentations and/or a project. CSCI 4506. Variable Topics in Theory: Fuzzy Logic and Fuzzy Sets. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Fuzzy logic and fuzzy sets are used in expert systems, controllers, pattern recognition, databases, decision making, robotics and economics. The basic theory of fuzzy sets and fuzzy logic along with a brief survey of some of the current research. May include presentations and/or a project. CSCI 4507. Variable Topics in Theory: Data Compression. (M/SR; 2.0 cr; prereq 3501, &3903 or #)
Introduction to data compression (including lossy and lossless compression techniques), wavelets, differential encoding techniques (including pulse code and delta modulation), and subband coding with applications to speech, audio, and images. Compression standards such as the CCITT international standard and MPEG audio compression standard. CSCI 4508. Variable Topics in Theory: Algorithm Design. (M/SR; 2.0 cr; prereq 3501, 2901 or #)
Approaches to the design of efficient algorithms for solving a variety of practical problems such as string matching or those that can be modeled on a tree or graph. Techniques studied include dynamic programming, divide and conquer, greedy methods, backtracking, and approximation algorithms. CSCI 4509. Theory: Cryptographic Protocols. (M/SR; 2.0 cr; prereq 3501 or #; offered when feasible)
Overview of encryption algorithms, authentication, data integrity, and secure communication protocols. Mathematical foundations of cryptography, survey of protocols and their applications, including encryption tools in programming, secure data transmission in e-commerce.
CSCI 4550. Variable Topics in Theory. (M/SR; 4.0 cr [max 999.0 cr]; prereq 3501; repeatable when topic changes; offeredwhen feasible)
Topics in theory such as analysis of algorithms, theory of computation, distributed algorithms, parallel algorithms, approximation algorithms, graph theory, computational geometry, and NP-completeness. CSCI 4551. Variable Topics in Theory: Computational Geometry. (M/SR; 4.0 cr; prereq 3501)
An introduction to a field of computer science that uses geometry in order to design more efficient algorithms for many practical computer CSCI 4552. Variable Topics in Theory: Advanced Algorithms. (M/SR; 4.0 cr; prereq 3501)
Techniques for designing and analyzing efficient algorithms to solve a variety of practical problems. Some algorithmic techniques include dynamic programming, greedy methods, and amortized analysis. Other topics include graph algorithms, string matching, approximation algorithms, and NP-Completeness. CSCI 4553. Variable Topics in Theory: Evolutionary Computation and ArtificialIntelligence. (M/SR; 4.0 cr; prereq 3501)
Introduction to Evolutionary Computation as an Artificial Intelligence tool for developing solutions to problems that are difficult to describe precisely or solve formally, as well as comparisons with other AI techniques. Will include discussions of theoretical background and tools, implementation issues, and applications. CSCI 4554. Variable Topics in Theory: Cryptography. (M/SR; 4.0 cr; prereq 3501)
Theory and applications of cryptography. Overview of necessary mathematical concepts. Discussion of algorithms and protocols including public and private key encryption, authentication, and zero knowledge proofs. CSCI 4555. Variable Topics in Theory: Neural Networks and Machine Learning. (M/SR; 4.0 cr; prereq 3501)
Study of the underlying theory, structure, and behavior of neural networks and of how neural networks compare to and can be used to supplement other methods of machine learning. Methods such as decision tree learning, inductive learning, reinforcement learning, supervised learning, and explanation-based learning are examined. Analysis of the strengths and weaknesses of various approaches to machine learning. Includes an implementation project.
CSCI 4600. Variable Topicsin Programming and Languages. (M/SR; 2.0 cr [max 999.0 cr]; prereq 2901, 3601, or #; repeatable when topicchanges; offered when feasible)
Current developments in software engineering, requirements analysis, specification, software architectures, formal methods, program derivation, testing, parallel and distributed languages, parsing, optimization techniques, compiling, etc. CSCI 4601. Variable Topics in Programming and Languages: Design Patterns. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
Theory and application of object-oriented design patterns in the development of software systems. Survey of a variety of patterns. May include a group design and implementation project. CSCI 4602. Variable Topics in Programming and Languages: Embedded Systems. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
An overview of embedded computing systems. Topics include discussion of the capabilities and limitations of the hardware, embedded operating systems real-time constraints, design issues in building software for embedded systems, and methods to evaluate design tradeoffs between different technology choices. CSCI 4603. Variable Topics in Programming and Languages: Software Testing. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
A survey of concepts, principles, and techniques related to software testing and verification. Topics include inspections and reviews, black-box and white-box testing strategies, verification techniques, and the use of testing tools. CSCI 4604. Variable Topics in Programming and Languages: Graphical User Interfaces. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
An exploration into designing Graphical User Interfaces. Aspects of human-computer interaction will be discussed along with how to design good user interfaces. Students will complete a project using Java's Swing. CSCI 4605. Variable Topics in Programming and Languages: Refactoring. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
Introduction to methodologies for the long-term development and maintenance of software systems. Discussion of methods of fixing errors and extending functionality in a controlled manner that builds on and improves the underlying system design, as well as tools for regression testing to help catch introduced errors. There will be a significant programming component as well as change documentation and classroom presentations. CSCI 4606. Variable Topics in Programming and Languages: Client/Server Programming. (M/SR; 2.0 cr; prereq 3601, &3903 or #)
Survey of issues and technologies related to the development of client/server systems. Tiered architectures, client-side vs. server-side programming, and the role of middleware (e.g. CORBA), database systems and the World-Wide-Web/Internet in client/server systems. CSCI 4607. Variable Topics in Programming and Languages: Computer LanguageProcessing. (M/SR; 2.0 cr; prereq 3601, 2901 or #)
Overview of scanning and parsing techniques and tools and how they can be used to solve a variety of computer language processing problems such as translation between structured data formats, construction of programming tools such as formatters and cross-referencers, or the interpretation of command and scripting languages. CSCI 4608. Programming and Languages: Principles of Web Programming. (M/SR; 2.0 cr; prereq 2901, 3601 or #; offered when feasible)
Overview of programming languages and technologies for Web-based applications. Languages processed on the client side (such as Java applets, XML) and those processed on the server-side (such as Java servlets, CGI, PHP). Relevant Internet protocols and related efficiency and security issues.
CSCI 4650. VariableTopics in Programming and Languages. (M/SR; 4.0 cr [max 999.0 cr]; prereq 3601; repeatable when topic changes; offeredwhen feasible)
Topics in programming languages and program translation such as software engineering, requirements analysis, specification, software architectures, formal methods, program derivation, testing, parallel and distributed languages, parsing, optimization techniques, and compiling. CSCI 4651. Variable Topics in Programming and Languages: ProgrammingLanguages. (M/SR; 4.0 cr; prereq 3601)
History of programming languages, formal specification of syntax and semantics of programming languages from a variety of paradigms (procedural functional, logic-programming, object-oriented, and parallel paradigms), modern language features. CSCI 4652. Variable Topics in Programming and Languages: Compilers. (M/SR; 4.0 cr; prereq 3601)
Program translations from a variety of paradigms. Lexical analysis and parsing techniques, intermediate representations, type checking, code generation, error detection and recovery, optimization. CSCI 4653. Variable Topics in Programming and Languages: Software Engineering. (M/SR; 4.0 cr; prereq 3601)
Examination of software engineering techniques and methodologies. Topics include software life cycle models, analytical and software tools used in software engineering, software metrics, testing techniques, design techniques, planning and estimation methodologies, and issues related to the reusability, portability, and interoperability of software systems. Emphasis on the application of these techniques and methodologies to real world problems. Includes a team-based software development project. CSCI 4654. Variable Topics in Programming and Languages: Modern FunctionalProgramming. (M/SR; 4.0 cr; prereq 3601)
Survey of concepts, tools, and techniques from the realm of functional programming. Topics include higher order functions, currying, type systems, concurrency models, mechanisms for managing state, and methods of compilation and evaluation such as graph reduction and term rewriting. CSCI 4655. Variable Topics in Programming and Languages: Software Design andDevelopment II. (M/SR; 4.0 cr; prereq 3601)
Design and implementation of a medium-scale software system in an intensive, full-time lab setting where teams use object-oriented tools and agile development processes. Emphasis on the creation, evolution, and maintenance of system design. CSCI 4656. Progamming and Languages: Human-Computer Interaction and InterfaceDesign. (M/SR; 4.0 cr; prereq 3601 or #; offered when feasible)
Introduction to the design, evaluation, and implementation of interactive computing systems for human use with a particular emphasis on user interfaces. Possible domains include usability issues for desktop applications, embedded systems, and Web design. Student projects include evaluative studies and sample
CSCI 4901. Seminar II. (1.0 cr; prereq 2901, jr or sr; same semester registration for 3902 recommended;S-N only)
In-depth survey of literature in a specific computer-related field of the student's choice. Students analyze various articles or similarly published works, synthesize their contents, and present their work formally in a conference setting. Multiple writing and speaking experiences reviewed by both faculty and classmates. CSCI 4993f,s. Directed Study. (1.0-5.0 cr [max 999.0 cr]; prereq @; repeatable)
CSCI 4994Hf,s. Senior Honors Project. (1.0-5.0 cr [max 999.0 cr]; prereq participation in Honors Program, @; repeatable)
A substantial scholarly or creative work (at the undergraduate level) within the discipline. Successful completion of the senior honors project is one of the requirements for graduating from UMM "with honors." |