Skip to Main Navigation. Each navigation link will open a list of sub navigation links.

Skip to Main Content

Apply to the University of Wyoming apply now
Visit Campus
Download UW Viewbook
Give to UW

University Catalog

Computer Science (COSC)

1000 Level | 2000 Level | 3000 Level | 4000 Level | 5000 Level

JumpLink1010. Introduction to Computer Science I. 4. Introduces the fundamental concepts of programming from an object-oriented perspective. Topics include simple data types, control structures, array and string data structures, algorithm development, and debugging techniques. Emphasizes good software engineering principles and developing fundamental programming skills in the context of a language that supports the object-oriented paradigm. 

1015. Introduction to Programming for Data Science. 3. [{none}<>Q] Provides an accelerated introduction to computing in the setting of Data Science. Topics include basic programming techniques; data transformation; computing with vectors, matrices, and data frames; data visualization; and text processing. Credit may not be earned for both COSC 1010 and COSC 1015. Priority given to Engineering Honors students. Prerequisite: grade of C or better in MATH 1400 or Level 4 or higher on the Math Placement Exam within one year prior to the start of the course.

1030. Computer Science I. 4. Continues the introduction to the methodology of programming from an object-oriented perspective. The course emphasizes basic software design, expands the students’ knowledge of programming language syntax, expands the students’ ability to think and design in an object-oriented paradigm. Introduces the students to UML, pseudocode, and simple planning for the design of software. Also introduces the students to templates and the C++ STL. Prerequisite: COSC 1010.

1100. Computer Science Principles and Practice. 3. Introduces use of computers for algorithmic problem solving. Studies scope, major contributions, tools and current status of computer science. Presentation of computer science principles; use of software packages and evaluation of their effectiveness; and elementary programming. Prerequisite: C or better in MATH 1400 or in any University Studies QB or Level 4 or higher on Mathematics Placement Exam. (Offered based on sufficient demand and resources)

1101. First-Year Seminar. 3. [{none}<>FYS]

1200. Computer Information Systems. 3. Introduces computers and information processing, computer systems and hardware, computer software, information processing systems, information systems and information resource management. Uses word processing, data base language and electronic spreadsheet program in hands-on exercises. Prerequisite: passing of Mathematics Placement Examination at Level 2 or equivalent.

JumpLink2000. Undergraduate Topics: Computer Science. 1‑3 (Max. 6). Elementary topics current in computer science. Prerequisite: consent of instructor. (Offered based on sufficient demand and resources)

2030. Computer Science II. 4. Builds on the introduction to object-oriented programming begun in COSC 1010 and 1030 with an emphasis on algorithms, data structures, and software engineering. Prerequisite: COSC 1030.

2150. Computer Organization. 3. Introduces students to the organization and architecture of computer systems, beginning with the standard von Neumann model and then moving forward to more recent architectural concepts. Prerequisite: COSC 1030.

2300. Discrete Structures. 3. Introduces the mathematical concepts that serve as foundations of computer science: logic, set theory, relations and functions, graphs (directed and undirected), inductively defined structures (lists and trees), and applications of mathematical induction. Provides an introduction to abstract and rigorous thinking in advanced mathematics and computer science. Cross listed with MATH 2300. Prerequisite: COSC 1030, MATH 2200 or 2350.

JumpLink3011. Introduction to Software Design. 3. Introduces the principles and practice of software design, including UML and design patterns. Uses case studies to illustrate design in action. Prerequisite: COSC 2030.

3015. Functional Programming. 3. Studies programming in the context of a functional language that emphasizes algorithmic strategies over syntactic detail. Prerequisites: COSC 2030 and 2300.

3020. Algorithms and Data Structures. 4. Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, algorithmic strategies, and an introduction to automata theory and its application to language translation. Prerequisites: COSC 2030 and COSC 2300.

3050. Ethics for the Computer Professional. 1. The proliferation of computers has had a profound effect on our society. Computing professionals must be aware of the social and ethical implications of our activities. Examines the codes of behavior related to computer science through readings, discussions and case studies. Prerequisites: junior standing and COSC major.

3100. Computer Science Education Seminar. 2. Provides an overview of the current social and research issues, technical trends and challenges facing computer science educators. Prerequisites: COSC 1030; Education major only.

3340. Introduction to Scientific Computing. 3. Introduces basic numerical methods to solve scientific and engineering problems. Topics include: code structure and algorithms, basic numerical methods for linear systems, eigenvalue problems, interpolation and data fitting, nonlinear systems, numerical differentiation and integration. Cross listed with MATH 3340. Prerequisite: grade of C or better in MATH 2210.

3750. Linux Programming for System Applications. 3. Provide the necessary tools and skills to begin programming effectively on UNIX and Linux operating systems. Topics will include, shells and basic shell scripting, Linux utilities, editors, compilation, I/O and the file system, sockets and interprocess communication, and time permitting, threads. Prerequisites: COSC 2150 and COSC 2030.

3890. Engineering Honors Program Research Methods. 3. A general approach to scientific research and graduate school preparation. Topics will include: finding a research mentor, literature search skills, using the scientific method for approaching a research problem and developing a research methodology, writing a research funding proposal, delivering a research presentation and selecting and applying for graduate school. Restricted to College of Engineering Honors Program students. Cross listed with ARE/ATSC/CE/CHE/EE/ES/PETE 3890. Prerequisite: sophomore standing.

3900. Upper Division Topics in Computer Science. 1-3 (Max. 9). Individual or small group pursuit of interdisciplinary problems in the use of computers or study of topics of interest within industry. Prerequisite: consent of instructor. (Offered based on sufficient demand and resources)

3970. Internship in Computing. 1-3 (Max. 3). Allows students to gain practical experience in computing. A signed contract with a supervisor and departmental adviser must be completed before enrolling for the internship. Prerequisite: COSC 3020.

JumpLink4000. Topics in Computer Science for Educators. 1‑6 (Max. 12). Current computer science topics appropriate for K-12 teachers. Credit may not be applied to major requirements in computer science or management information systems. Prerequisite: graduate standing. (Offered based on sufficient demand and resources)

4010. Special Topics in Computer Science. 1‑3 (Max. 9). Individual or small group pursuit of interdisciplinary problems in the use of computers or study of advanced topics. (Maximum of 12 hours from 4010 and 5010 may be applied to graduate study.) Prerequisites: COSC 3020 concurrently and consent of instructor. (Offered based on sufficient demand and resources)

4100. Foundations of Computing. 3. Introduces several theoretical areas which are the basis of computer science. Languages and automata, computability, complexity, analysis of algorithms, logic, and the specification and correctness of programs. Prerequisite: COSC 3020.

4200. Computability and Complexity. 3. Introduction to theoretical study of computability and efficient computation. Finite-state and pushdown automata; turing machines and the Church-Turing thesis; undecidability, computational complexity; NP-completeness. Prerequisite: COSC 3020.

4210. Web Application Development. 3. The course covers the basics of developing data driven web applications. Topics include using responsive design for user interfaces, architectural patterns and frameworks, object-relational mapping, language-integrated queries, authentication, authorization, unit testing, using source control for code management, publishing web applications and cloud computing. Prerequisite: COSC 3011.

4220. Design and Implementation in Emerging Environments. 3. Students who have completed the analysis and design course extend their knowledge by implementing an information system in an emerging systems environment. Teams use project management principles to implement the system. Prerequisitee: COSC 4210.

4340. Numerical Methods for Ordinary and Partial Differential Equations. 3. Further develops the skills needed for computational problem solving and numerical analysis.  Topics addressed include: one-step and linear multistep methods for solving initial value problems; truncation errors, stability analysis, and convergence of the numerical methods; finite difference approximation for elliptic equations and initial boundary value problems; iterative methods for sparse linear systems.  Students typically complete a final project in this course. Cross listed with MATH 4340. Prerequisites: grade of C or better in MATH 2310 and MATH 3340.

4420. Advanced Logic. 3. Studies advanced topics in mathematical logic. Takes up such topics as: uninterpreted calculi and the distinctive contributions of syntax and semantics; metatheory, including completeness and consistency proofs; modal logic and semantics; logic as a philosophical tool. Dual listed with COSC 5420; cross listed with MATH/PHIL 4420. Prerequisite: PHIL 3420 or equivalent.

4450. Computer Graphics. 3. Introduction to computer graphics, an increasingly important area of computer science. Computer graphics, together with multimedia and the World Wide Web, offers exciting new possibilities for the design of human-computer interfaces. Presents the principles, techniques, and tools that enable these advances. Dual listed with COSC 5450. Prerequisites: COSC 3020 and MATH 2250.

4550. Introduction to Artificial Intelligence. 3. A computational study of intelligent behavior. Focus is on intelligent agents, which could be software agents or robots. Covers how agents sense, reason, and act within their environment. Includes problem-solving, search, knowledge representation, planning, game playing, learning, and neural and belief networks. Dual listed with COSC 5550. Prerequisite: COSC 3020.

4555. Machine Learning. 3. Goal is to program machines to learn and improve their performance on their own, based on experience and/or data. First half covers machine learning techniques; second half covers applications. Dual listed with COSC 5555. Prerequisite: COSC 3020.

4560. Modern Robots and Softbots. 3. Popular agent designs: logic-based, biomimetic, and physicommimetic. Foundational issues on internal robot and softbot knowledge representations. Planning and control, followed by issues of how agents can reason and plan under real-world conditions of environmental uncertainty. Concludes with discussions about papers on modern robot and softbot applications, as well as invited lectures by graduate students and faculty. Dual listed with COSC 5560.

4570. Data Mining. 3. Examine methods that have emerged from artificial intelligence and statistics and proven to be of value in recognizing patterns and making predictions with large data sets. Will include both theory and practice while developing several projects. Prerequisite: COSC 4550.

4580. Honors Undergraduate Research. 3. An independent research experience for undergraduate students enrolled in the Engineering Honors Program. Before registering for this class, students are responsible for discussing their interests with faculty, identifying a willing research mentor, obtaining approval by said mentor, and communicating the student/faculty partnership tot he appropriate staff in their home department. Must be in the Engineering Honors Program. Cross listed with ATSC/BE/CE/CHE/ES/ESE/PETE 4580. Prerequisite: junior or senior standing.

4730. Mobile Application Programming. 3. Introduces development of applications on mobile devices. Presents the principles, techniques, and tools for developing mobile applications. Differences between desktop applications and mobile applications are discussed. Dual listed with COSC 5730. Prerequisite: COSC 3011 and COSC 3020.

4735. Advanced Mobile Programming. 3. Continues the development of applications on mobile devices. The focus is device sensors, such as camera, AR, VR, Bluetooth, embedded and connected devices. Dual listed with COSC 5735. Prerequisite: COSC 4730.

4740. Operating Systems Design. 4. Studies systems programming languages and computer systems design. Includes interacting processes, main storage management, procedure and data sharing, scheduling, deadlock problems and file management in batch processing and multi-programming systems. Operating system implementation. Prerequisite: COSC 2150 and COSC 3020.

4750. Systems Programming and Management. 3. Comparatively studies features found in commercial and experimental operating systems. Discusses issues in system-level programming and administration, including shell programming, file management, resource control, configuration and security. Advanced topics include multiprocessor and real-time operating systems. Prerequisite: COSC 2030.

4760. Computer Networks. 3. Examines network protocols using a top-down approach based on the Internet model. Course focuses on the application, transport, network and link layers. Also covers wireless communication. Discusses problems and current solutions regarding the efficient use of network resources in the global, multi-media Internet. Prerequisites: COSC 2150 and COSC 2030.

4765. Computer Security. 3. Introduces the topics of computer and network security and provides a foundation to allow students to identify, analyze, and solve computer security problems. Prerequisite: COSC 3020.

4780. Principles of Programming Languages. 3. Introduces the methods of analysis and design of programming languages. Covers syntax, typing schemes and the semantics (denotational and operational) in the context of functional and imperative programming languages. Students build interpreters to explore the implications of the different constructs on computational behavior. Prerequisites: COSC 3015.

4785. Compiler Construction 1. 3. Theory and implementation of interpreters and compilers. Compiler topics include lexical analysis, top-down and bottom-up parsing methods, symbol tables, and code generation from a block-structured language with recursion and parameters. Project uses compiler writing tools. Dual listed with COSC 5785. Prerequisites: COSC 2150 and COSC 3020.

4820. Database Systems. 3. Provides comprehensive coverage of the problems involved in database design, in-depth coverage of data models and database languages. Students acquire practical skills of conceptual/logical database design and general familiarity with the problems and issues of database management. Prerequisite: COSC 2030.

4840. Software Engineering. 3. Extends the ideas of software design and development from the introductory programming sequence to encompass the problems encountered in large-scale programs. Topics include software engineering techniques from the technical and managerial perspectives, with a strong emphasis on software design. Prerequisites: COSC 3020 and 3011.

4950. Senior Design I. 1. Students choose a senior design project, investigate alternate solutions and submit a preliminary project design. Periodic oral and written project progress reports are required. Prerequisites: COSC 3011 and COSC 3020.

4955. Senior Design II. 2. Students complete the senior design project partially designed in COSC 4950. Successful communication of the details of the solution through written documents and oral presentations will be required. Prerequisite:  COSC 4950.

JumpLink5000. Seminar in Computer Science. 1-3. (Max. 10). One or more current research areas in computer science are investigated. Prerequisite: consent of instructor.

5010. Graduate Topics in Computer Science. 1-6 (Max. 12). Individual or small group pursuit of computer science research areas. (Max. of 12 hours from COSC 4010 and COSC 5010 may be applied to graduate study). Prerequisites: graduate standing and consent of instructor.

5050. Research Writing in Computer Science. 3. Instruction in methods for performing and reporting research in the field of computer science. The primary task is preparation of a research paper; to that end, the class covers how to collect and analyze previously published work, generate and develop a research topic, and present research results in acceptable written form. Prerequisites: graduate standing, consent of instructor.

5110. Analysis Of Algorithms. 3. Analysis of algorithms to determine their time and space requirements. Beginning with data structures such as lists, stacks, trees, and sets and their implementations. The class then analyzes specific algorithms for internal sorting, hashing, and string search. Offered fall semester of even numbered years. Prerequisites: COSC 3020 or equivalent and consent of the department.

5120. Theory Of Computation. 3. Models of computation, the Church-Turing thesis, computable functions, decidable and enumerable sets, unsolvable problems, correctness of programs, and complexity of computation. The theory of computation provides precise answers to the fundamental questions of computer science: Which problems can be solved by machine computation and which can be solved using a reasonable amount of computer resources. Prerequisite: COSC 4100.

5200. Computational Complexity. 3. Study of efficient computation and computational intracability. Time and space complexity; P, NP, and the polynomial-time hierarchy; reductions and completeness; randomized complexity; non-uniform complexity; approximation algorithms and inapproximability. Prerequisite: COSC 4100 or COSC 4200.

5220. Languages and Automata. 3. The study of regular, context-free, and context-sensitive languages and their relations to finite-state, pushdown and linear-bounded automata. Context-free language recognition. The halting problem and decidability results. Prerequisite: COSC 4100.

5310. Computational Methods in Applied Sciences I. 3. First semester of a three-semester computational methods series. Review of iterative solutions of linear and nonlinear systems of equations, polynomial interpolation/approximation, numerical integration and differentiation, and basic ideas of Monte Carlo methods. Comparison of numerical techniques for programming time and space requirements, as well as convergence and stability. Cross listed with MATH 5310. Prerequisites: MATH 3310, COSC 1010.

5345. Computational Methods in Applied Sciences III. 3. Third semester of a three-semester computational methods series with emphasis on numerical solution of problems displaying sharp fronts and interfaces (nonlinear conservation laws, Hamilton-Jacobi equations. Cross listed with MATH 5345. Prerequisite: MATH/COSC 5340.

5420. Advanced Logic. 3. Studies advanced topics in mathematical logic. Takes up such topics as: uninterpreted calculi and the distinctive contributions of syntax and semantics; metatheory, including completeness and consistency proofs; modal logic and semantics; logic as a philosophical tool. Dual listed with COSC 4420; cross listed with COSC/MATH 5420. Prerequisite: PHIL 3420 or equivalent; graduate standing.

5450. Computer Graphics. 3. Introduction to computer graphics, an increasingly important area of computer science. Computer graphics, together with multimedia and the world-wide web, offers exciting new possibilities for the design of human-computer interfaces. Presents the principles, techniques, and tools that enable these advances. Dual listed with COSC 4450. Prerequisites: COSC 3020, MATH 2250.

5540. Computer Vision. 3. Provides students with an understanding of applying computer methodologies to process two-dimensional and three-dimensional images. Primary areas of investigation are image preprocessing, knowledge representation, pattern recognition and motion understanding. Prerequisites: COSC 3020, MATH 2205, MATH 2250.

5550. Introduction to Artificial Intelligence. 3. A computational study of intelligent behavior. The focus is on intelligent agents, which could be software agents or robots. Covers how agents sense, reason, and act within their environment. Includes problem-solving, search, knowledge representation, planning, game playing, learning, and neural and belief networks. Dual listed with COSC 4550. Prerequisite: COSC 3020.

5555. Machine Learning. 3. To program machines to learn and improve their performance on their own, based on experience and/or data.  The first part covers machine learning techniques.  The second part covers applications. Dual listed with COSC 4555. Prerequisite: COSC 3020.

5560. Modern Robots and Softbots. 3. Begins with a presentation of popular agent designs: logic-based, biomimetic, and physicomimetc. Presents foundational issues on internal robot and softbot knowledge representations. Planning and control are then covered, followed by issues of how agents can reason and plan under real-world conditions of environmental uncertainty. Concludes with discussions about papers on modern robot and softbot applications, as well as invited lectures by graduate students and faculty in the UW COSC and ECE departments. Dual listed with COSC 4560.

5730. Mobile Application Programming. 3. Introduces development of applications on mobile devices. Presents the principles, techniques, and tools for developing mobile applications. Differences between desktop applications and mobile applications are discussed. Dual listed with COSC 4730. Prerequisite: COSC 3020.

5735. Advanced Mobile Programming. 3. Continues the development of applications on mobile devices. The focus is device sensors, such as camera, AR, VR, Bluetooth, embedded and connected devices. Dual listed with COSC 4735. Prerequisite: COSC 4730.

5750. Distributed Computing Systems. 3. Provides an in-depth study of distributed computing systems, including both architecture and software issues. Topics include concepts of distributed computing, communication primitives, distributed operating systems, distributed file management, and distributed programming languages. Particular attention is paid to modeling and analysis of distributed systems and algorithms. Programming projects and research papers are assigned. Prerequisite: COSC 5740.

5785. Compiler Construction I. 3. Theory and implementation of interpreters and compilers. Compiler topics include lexical analysis, top-down and bottom-up parsing methods, symbol tables, and code generation for a block-structured language with recursion and parameters. Project uses compiler writing tools. Dual listed with COSC 4785. Prerequisites: COSC 2150 and COSC 3020.

5790. Compiler Construction II. 3. Advanced topics concerning the front end of a programming language compiler, the description and implementation of features found in the back end of a compiler, and the run time environment. Topics include data type checking, global data flow analysis, flow graph reduction, local and global code optimization, and code generation. Reports on recent research papers. Prerequisite: COSC 4785 or 5785.

5820. Database Systems. 3. Provides comprehensive coverage of the problems involved in database design, in-depth coverage of data models and database languages. Students acquire practical skills of conceptual/logical database design and general familiarity with the problems and issues of database management. Prerequisite: COSC 3020.

5825. Advance Data Systems. 3. Provides comprehensive coverage of the problems involved in database system design and an in-depth examination of contemporary structures and techniques used in modern database management systems and database applications. Prerequisite: COSC 4820.

5920. Continuing Registration: On Campus. 1-2. (Max 16). Prerequisite: advanced degree candidacy.

5940. Continuing Registration: Off Campus. 1-16 (Max. 16). Prerequisite: advanced degree candidacy.

5959. Enrichment Studies. 1-3 (Max. 3). Designed to provide an enrichment experience in a variety of topics. Note: credit in this course may not be included in a graduate program of study for degree purposes.

5960. Thesis Research. 1-12 (Max. 24). Designed for students who are involved in research for their thesis project.  Also used for students whose coursework is complete and are writing their thesis. Prerequisite: enrollment in a graduate degree program.

5980. Dissertation Research. 1-12 (Max. 48). Designed for students who are involved in research for their dissertation project. Also used for students whose coursework is complete and are writing their dissertation. Prerequisite: enrollment in a graduate level degree program.

5990. Internship. 1-12 (Max. 24). Prerequisite: graduate standing.

1000 E. University Ave. Laramie, WY 82071
UW Operators (307) 766-1121 | Contact Us | Download Adobe Reader

Accreditation | Virtual Tour | Emergency Preparedness | Employment at UW | Gainful Employment | Privacy Policy | Harassment & Discrimination | Accessibility Accessibility information icon