Computer Science Department Catalog

It is the responsibility of the student to become informed and to observe all regulations and procedures required by the program the student is pursuing. Ignorance of a rule does not constitute a basis of waiving that rule. The Undergraduate Catalog & Graduate Catalog, current at the time of the student’s most recent admission gives the academic requirements the student must meet to graduate.

Computer Science Syllabi

CSCI 101 Intro to Computer Science 
This course is an introduction to the building blocks of Computer Science. Students will engage in activities that show how computing changes the world and impacts daily lives. 

CSCI 102 Intro to Computer Science Lab
This course is designed as a complementary lab-based course to accompany CSCI 101 and provide additional practice and support to students who are new to programming. 

CSCI 200 Foundational Programming Concepts & Design
This course teaches students C++, how to manage memory properly & efficiently at run time, the principles of object-oriented programming, and how to create an algorithm using data structures & abstraction to solve a problem. 

CSCI 220 Data Structures and Algorithms
This course teaches students the design and construction of data structures such as hash tables, trees, heaps, and graphs, analysis of operations on data structures, and design and analysis of algorithms on data structures such as graph search and minimum spanning tree algorithms.

CSCI 250 Python Computing: Building a Sensor System
This course will teach students the skills needed for data collection, analysis, and visualization on a small, embedded device (e.g., Raspberry Pi).

CSCI 274 Introduction to the Linux Operating System
This course will teach students how to become more proficient with using a Linux operating system from the command line. 

CSCI 303/DSCI 503 Intro and Advanced Data Science
This course will teach students the core skills needed for gathering, cleaning, organizing, analyzing, interpreting, and visualizing data. 

CSCI 306 Software Engineering
This course is intended to make you a better software programmer by introducing the processes and considerations of Software Engineering. 

CSCI 341 Computer Organization
This course introduces computer organization and design, focusing on the hardware software interface.

CSCI 358 Discrete Mathematics 
This course is an introductory course in discrete mathematics, covering the following topics: logic, proofs, sets, recursion, counting, probability, graphs, relations and functions. 

CSCI 370 Advanced Software Engineering
Advanced Software Engineering, also known as field session, is a capstone course in which students apply their coursework knowledge to a challenging applied problem in computer science. 

CSCI 390 Programming Challenges II
This course is the second of three courses in the Programming Challenges sequence which covers problem solving patterns and paradigms found in technical interviews and programming competitions. 

CSCI 395 Industry Exploration II
This course provides students an opportunity to explore different career paths in the computer science industry. Each week students will visit with a local company that hires a number of computer scientists. 

CSCI 400 Principles of Programming Languages 
This course will take a broader view of programming languages, and study the key concepts and techniques that allow developers to implement languages such as Java or C. 

CSCI 403 Database Management 
This course is all about the construction, design, and use of databases. 

CSCI 406 Algorithms
This course will naturally appeal to those of you who are mathematically oriented with interests in problem solving and programming competitions. 

CSCI 423 Computer Simulation
A first course in computer simulation using formal learning groups and emphasizing the rigorous development of simulation applications. 

CSCI 441 Computer Graphics 
This course focuses on the basic 3D rendering and modeling techniques. 

CSCI 442 Operating Systems
This course introduces the essential concepts in the design and implementation of operating systems: what they can do, what they contain, and how they are implemented.

CSCI 444 Advanced Computer Graphics 
This is an advanced computer graphics course, focusing on modern rendering and geometric modeling techniques. 

CSCI 445 Web Programming 
This course is for programmers who want to develop web-based applications. It covers basic website design extended by client-side and server-side programming. 

CSCI 448 Mobile Application Development 
This course covers basic and advanced topics in mobile application development. Students will design and develop complete applications. 

CSCI 470 Introduction to Machine Learning 
This course is designed to bridge the concepts from class for several different general machine learning concepts to real world applications and create a product that connects customers to the project.  

CSCI 471 Computer Networks I 
This introduction to computer networks covers the fundamentals of computer communications. While the Application and Physical layers will be covered the course will focus on the Transport, Network and Link Layers. 

CSCI 473/573 Human Centered Robotics 
This course focuses on the new field of Human-Centered Robotics (HCR), bridging together research and application of methodology from robotics, human-machine interaction, and cognitive psychology. 

CSCI 475 Information Security & Privacy
This course provides a hands-on introduction to the principles and best practices in information and computer security. 

CSCI 478 Introduction to Bioinformatics
Bioinformatics is an interdisciplinary area relating to Computer Science, Data Science, Molecular Biology, Biochemistry, etc. This course bridges the gap between life sciences and computer sciences. 

CSCI 498A/598B Augmented Reality 
This course provides a comprehensive overview of augmented reality (AR) concepts and techniques and teaches how to develop AR applications, i.e., creating and blending virtual content seamlessly with the real world. 

CSCI 555/455 Game Theory & Networks 
This course gives an introduction to fundamental concepts of game theory with a focus on the applications in networks.

CSCI 560 Fundamentals of Computer Networks
This fully online course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. 

CSCI 561 Theory of Computation 
In this course, we will both study fundamental results of computational theory and reduce theory to practice through projects that implement and apply key algorithms of theoretical computer science. 

CSCI 562 Applied Algorithms and Data Structures
CSCI 562 is a second class on algorithms that is appropriate for advanced undergraduates or graduate students. It first builds on the undergraduate Mines course on Algorithms CSCI 406, covering important material on graph algorithms and NP completeness that could be completed in 406.  

CSCI 565 Distributed Computing Systems 
This course is an introduction to distributed systems. We will study distributed systems principles associated with time, mutual exclusion, distributed snapshot, coordination, fault tolerance, consensus, transactions, group communication, and replication. 

CSCI 572 Computer Networks II
This course explores how networking is continuing to evolve to support new environments, and challenges in building networked systems. 

CSCI 580 Advanced High Performance Computing 
This course provides students with knowledge of the fundamental concepts of high performance computing as well as hands-on experience with the core technology in the field.

CSCI 585 Information Security and Privacy
This course provides an introduction to the principles and best practices in information security and privacy.