Return to search
Term: Winter 2025
Term: Winter 2025
- CS 102 - Artificial Intelligence Literacy
- This course, for students of any major, introduces students to the fundamental concepts of artificial intelligence (AI), its applications, and its implications on society. It covers the basics of machine learning, data analytics, AI tools, improving productivity with AI, AI bias and limitations, ethical implications, and responsible AI use. Students will gain insights into the current state of AI technology and its potential future developments. Letter grade only.
- CS 105 - Computing Tools I
- This course introduces development tools critical for work in computer science, informatics, and engineering. Topics include command line tools and shell commands, editing and transforming files, and managing files and collaborating with other people with version control. Letter grade only.
- CS 110 - Computer Science Principles
- Introduction to algorithmic thinking and object-oriented programming for students with little or no prior programming experience. Emphasis on graphical programming, object-oriented problem solving, and basic Java concepts. Letter grade only.
- CS 112 - Computer And Internet Literacy
- Provides a broad introduction to World Wide Web and Internet-related software, including email, HTML, telnet, and FTP. Includes discovery of ethical and privacy issues in e-commerce. Letter grade only.
- CS 122 - Programming For Engineering And Science
- Introduces computer programming for engineers, scientists, and math majors. Emphasizes problem solving, algorithms, and structured programming. Letter grade only.
- CS 122L - Programming For Engineering And Science Lab
- Provides guided practical experience with applied engineering and science-oriented programming problems. Letter grade only.
- CS 126 - Computer Science I
- Introduces foundational principles of computer science including object-oriented fundamentals. Letter grade only.
- CS 126L - Computer Science I Lab
- Guided practical experience with applied programming problems, development environments, and development techniques and methodologies. Must be taken in conjunction with CS 126 lecture. Letter grade only.
- CS 136 - Computer Science II
- Intermediate computer science, emphasizing algorithm design, object-oriented programming, and data structures. Letter grade only.
- CS 136L - Computer Science II Lab
- Guided practical experience with applied programming problems, development environments, and development techniques and methodologies. Must be taken in conjunction with CS 136 lecture. Letter grade only.
- CS 199 - Special Topics
- Foundations of intellectual inquiry. In-depth study of a substantive problem. Letter grade only. May be repeated for a maximum of 6 units.
- CS 200 - Computer Organization
- Binary representation of information in digital computers. An introduction to digital logic design, computer architectures, microprocessor architectures and assembly language programming. Letter grade only.
- CS 205 - Computing Tools II
- This course covers intermediate development tools critical for work in computer science, informatics, and engineering. Topics include using shell commands to search and transform files, subprocess management using pipes and redirection, resolving conflicts in version control systems, and using common code collaboration tools. Letter grade only.
- CS 212 - Web Programming I
- Introduces web programming while emphasizing the creation of interactive and dynamic websites. Topics include HTML, CSS, JavaScript, and client-server website programming. Letter grade only.
- CS 249 - Data Structures
- Design, analysis, and implementation techniques of abstract data types such as sets, lists, trees, heaps, and graphs. Letter grade only.
- CS 299 - Special Topics
- In-depth study of an aspect, concept, or problem. Letter grade only. May be repeated for a maximum of 6 units.
- CS 301 - Computers And Society
- Exploration of issues that deal with the societal and ethical implications of widespread use of computer technology. Letter grade only.
- CS 301H - Computers And Society - Honors
- Exploration of issues that deal with the societal and ethical implications of widespread use of computer technology. Letter grade only.
- CS 305 - Computing Tools III
- This course introduces advanced development tools critical for work in computer science, informatics, and engineering. Topics include deploying remote services, advanced project management tools, and advanced shell scripting. Letter grade only.
- CS 312 - Web Programming II
- Web Programming II builds on Web Programming I (CS212) by exploring more advanced topics in web application design. Topics include Model-View-Controller website design, template systems, and RESTful web services. Letter grade only.
- CS 315 - Automata Theory
- Finite and infinite models leading to an understanding of computability. Letter grade only.
- CS 345 - Database Systems
- Basic concepts in database systems, including data manipulation language and data definition language. The relational model and its implementation will be covered in depth together with an overview of SQL. Letter grade only.
- CS 345H - Database Systems - Honors
- Basic concepts in database systems, including data manipulation language and data definition language. The relational model and its implementation will be covered in depth together with an overview of SQL. Letter grade only.
- CS 377 - Mobile Application Development
- Mobile devices have enabled perhaps the greatest expansion of popular computing access since the advent of the internet itself, and have created a large and vibrant new sector in the software development economy. At the same time, programming mobile devices has introduced a range of new challenges for the software developer, ranging from the limited amount of real estate on mobile screens, limited input and interaction techniques, unstable or intermittent network access, and significant power consumption limits. This elective course provides those students interested in working in this exciting sector with hands-on training in mobile app development principles, frameworks, and concepts. It is complementary to the subsequent CS477 Advanced Interfaces course, which examines user interface design and usability evaluation in more depth. Letter grade only.
- CS 386 - Software Engineering
- Involves applying software engineering and software architecture principles and techniques in the construction of complex computer programs in a team setting. Individualized and team writing and oral presentation tasks. Ethical issues. Letter grade only.
- CS 386H - Software Engineering - Honors
- Involves applying software engineering and software architecture principles and techniques in the construction of complex computer programs in a team setting. Individualized and team writing and oral presentation tasks. Ethical issues. Letter grade only.
- CS 389 - Cooperative Education
- Individualized preplanned cooperative employment experience related to your field of study or career objectives. Department consent required. Pass-Fail only. May be repeated for up to 12 units of credit. Please complete the Cooperative Education Proposal form and obtain signatures of approval BEFORE registering. https://policy.nau.edu/policy/Documents/Cooperative_Education_Form_121317.pdf
- CS 396 - Principles Of Languages
- Intensive study of the underlying linguistic principles, constructs, and mechanisms associated with diverse programming paradigms. Letter grade only.
- CS 396H - Principles Of Languages - Honors
- Intensive study of the underlying linguistic principles, constructs, and mechanisms associated with diverse programming paradigms. Letter grade only.
- CS 399 - Special Topics
- In-depth study of an aspect, concept, or problem within a program of study. Letter grade only. May be repeated for a maximum of 6 units.
- CS 408 - Fieldwork Experience
- Individualized supervised field experience in an appropriate agency or organization. Pass/Fail only. No repeat limit.
- CS 413 - Virtual Worlds
- Explores the data modeling, visualization, and simulation of abstract environments. Topics include data organization, freeform and tile-based 2D and 3D graphics techniques, collision physics, AI, and networked game infrastructures. Letter grade only.
- CS 413H - Virtual Worlds - Honors
- Explores the data modeling, visualization, and simulation of abstract environments. Topics include data organization, freeform and tile-based 2D and 3D graphics techniques, collision physics, AI, and networked game infrastructures. Letter grade only.
- CS 414 - 3d Game Development
- Introduces the concepts and production pipelines associated with 3D game development. Topics include affine transformations, polygonal models, textures, environments, animation, positional sound, physics, and visual effects. Small teams will create game prototypes that synthesize concepts into practice. Letter grade only.
- CS 421 - Algorithms
- Order notation; design techniques such as divide and conquer, greedy, and dynamic programming; advanced data structures; and time- and space-complexity analysis. Introduces NP completeness. Letter grade only.
- CS 430 - Computer Graphics
- Explores algorithms and geometric models for two and three dimensional objects and surfaces including geometric transformations, subdivision surfaces, implicit surfaces, fractals, particle systems, ray tracing and real time rendering techniques. Co convenes with CS 530. Letter grade only.
- CS 430H - Computer Graphics - Honors
- Explores algorithms and geometric models for two and three dimensional objects and surfaces including geometric transformations, subdivision surfaces, implicit surfaces, fractals, particle systems, ray tracing and real time rendering techniques. Co convenes with CS 530. Letter grade only.
- CS 440 - Software Architecture
- Exploration of the design of software architectures, including foundational concepts, architectural styles, architecture description languages and modeling notations, domain-specific architectures, product-line architectures, and the role of architecture and architects in the software engineering process. Co-convened with CS 540. Letter grade only.
- CS 450 - Parallel Programming
- Parallel computing is a widespread technology because of the invention of multi-core processors. For instance, many consumer electronics such as laptops, and smart phones contain multiple CPU cores that can be programmed to execute a program faster than only using a single core. Why do we care about CPU cores in smart phones and other modern computers? CPU clock speeds have become stagnant. Consequently, the number of processors packed onto a single chip continues to increase. No longer can an individual wait for a faster (e.g., higher clock speed) processor to be released to decrease the time it takes to run a program or to improve program responsiveness. Instead, computational resources need to be carefully exploited to reduce the time it takes to execute a program. Given the ubiquitous nature of multi-core computers, there is great demand for programmers that know how to exploit parallel architectures in industry, academia, and government labs. This course introduces students to parallel computing concepts in addition to a hands-on experience using key technologies and approaches used to program multi-core and many-core architectures. Students will learn about program optimization and performance evaluation for sequential and parallel programs. The hands-on approach is intended to ensure that students matriculating from the course will have the confidence needed to address the challenges of parallel computing in the real-world. Types of parallel programs that will be studied include shared-memory programs for the CPU and an introduction to programming the many-core GPU architecture. We will use NAU's cluster, Monsoon, for the GPU component of the course, heavily using the C programming language. Co convened with CS 550. Letter grade only.
- CS 453 - Gpu Programming
- This course introduces students to general purpose computing on graphics processing units (GPGPU). Graphics processing units (GPUs) are parallel processors which typically contain thousands of low-powered cores. Therefore, the utility of GPUs has extended beyond graphics rendering, where they can be used for general purpose computation. This course will examine key concepts in GPU programming for general purpose computation. Co-convened with CS 553. Letter grade only.
- CS 453H - Gpu Programming - Honors
- This course introduces students to general purpose computing on graphics processing units (GPGPU). Graphics processing units (GPUs) are parallel processors which typically contain thousands of low-powered cores. Therefore, the utility of GPUs has extended beyond graphics rendering, where they can be used for general purpose computation. This course will examine key concepts in GPU programming for general purpose computation. Letter grade only.
- CS 460 - Computer Networks
- Concepts and implementation of computer networks: applications, architecture, protocol layers and protocols, internetworking and addressing, case studies. Co-convenes with CS 560. Letter grade only.
- CS 465 - Distributed Systems
- The course covers important topics related to distributing state and computation across computer networks, e.g. time in networks, distributed coordination/consistency, transaction processing, replication, load balancing/distribution, P2P networks etc. Co-convened with CS 565. Letter grade only.
- CS 470 - Artificial Intelligence
- Introduces fundamental principles of artificial intelligence, including knowledge representation, planning, game playing, learning, and genetic algorithms. Co-convened with CS 570. Letter grade only.
- CS 470H - Artificial Intelligence - Honors
- Introduces fundamental principles of artificial intelligence, including knowledge representation, planning, game playing, learning, and genetic algorithms. Letter grade only.
- CS 472 - Unsupervised Machine Learning
- Machine Learning and Artificial Intelligence have become ubiquitous parts of modern society. This course, an extension of CS470, explores the topic of unsupervised learning - when data may not be labeled to support supervised learning methods. Such topics include clustering, Gaussian mixture models, change point detection, and dimensional reduction. Co-convened with CS 572. Letter grade only.
- CS 476 - Requirements Engineering
- Covers all aspects of professional project initiation, including elicitation and validation of requirements, risk and feasibility analysis, resource estimation, and formal representation of final requirements. Must be taken immediately before you take CS 486C. Cross-listed with SE 476. 1 hr. lecture, 3 hrs. lab. Letter grade only.
- CS 477 - Human-computer Interaction
- Explores design and construction of modern graphical user interfaces, including event models, client-server interaction, and interface design and usability evaluation. Co-convened with CS 577. Letter grade only.
- CS 480 - Operating Systems
- Theory behind operating systems; scheduling, memory management, I/O and concurrency. Letter grade only.
- CS 481 - Compilers
- Theory and techniques of constructing compilers for programming languages. Letter grade only.
- CS 485 - Undergraduate Research
- Original research under the supervision of a research adviser. Department consent required. Pass/Fail or Letter grade. May be repeated for up to 12 units of credit.
- CS 485H - Undergraduate Research - Honors
- Original research under the supervision of a research adviser. Department consent required. Pass/Fail or Letter grade. May be repeated for up to 12 units of credit.
- CS 486C - Capstone Experience
- Implementation of sponsor-accepted proposal culminating in an oral presentation, product demonstration, and formal report. Topics include project management, software architecture and design, software implementation, testing, and documentation. Must be taken in the year in which you graduate. Cross-listed with SE 486C. 3 hrs. lecture, 3 hrs. lab. Letter grade only.
- CS 486CH - Capstone Experience - Honors
- Implementation of sponsor-accepted proposal culminating in an oral presentation, product demonstration, and formal report. Topics include project management, software architecture and design, software implementation, testing, and documentation. Must be taken in the year in which you graduate. 3 hrs. lecture, 3 hrs. lab. Letter grade only.
- CS 497 - Independent Study
- Individualized approach to selected topics by guided reading and critical evaluation. May not exceed 6 units. Department consent required. Letter grade or Pass/Fail. Please complete the Independent Study Proposal form and obtain signatures of approval BEFORE registering. https://nau.edu/wp-content/uploads/sites/26/Independent_Study_Form_FINAL-3.pdf
- CS 497H - Independent Study - Honors
- Individualized approach to selected topics by guided reading and critical evaluation. May not exceed 6 units. Department consent required. Letter grade or Pass/Fail. Please complete the Independent Study Proposal form and obtain signatures of approval BEFORE registering. https://nau.edu/wp-content/uploads/sites/26/Independent_Study_Form_FINAL-3.pdf
- CS 499 - Contemporary Developments
- Examines recent trends and investigations in a selected area of a particular major field of study. Letter grade only. No repeat limit.
- CS 500 - Data Structure Foundations
- This course introduces common tools and foundational concepts, skills, and techniques employed to create algorithmic solutions to a variety of problems. Upon successful completion of this course, students will have an enhanced understanding of fundamental programming as well as algorithmic and standardized data structure implementation. Letter grade only.
- CS 501 - Programming Paradigms
- This course introduces common tools as well as foundational concepts, skills, and techniques employed in software development. The application of these tools, concepts, skills, and techniques as guided by a logical problem-solving process and critical thinking to create algorithmic solutions to a variety of problems is the central emphasis of this course. The course also explores the theory behind programming languages and their design and implementation. Topics covered include the essence of algorithms, the Python language as a medium for algorithmic expression, principles for the effective creation and maintenance of programs, concepts and theory of programming languages. Letter grade only.
- CS 502 - Computer Science I For Teachers
- This course is specially designed for teachers (both current and future) and introduces to foundational principles of computer science including object-oriented fundamentals. It equips students with a comprehensive understanding of common abstractions in Computer Science for Education. It serves as a valuable resource for educators aiming to integrate computer science concepts into their teaching practices. Pass/Fail only.
- CS 503 - Foundations For Teaching Computer Science
- This course aims to prepare current and future teachers to teach Computer Science (CS) concepts and CS elements useful in STEM classes to High School and Middle School youth. The course will cover various approaches that can be used to effectively teach CS concepts to young learners. It will cover topics such as pedagogical approaches, instructional strategies, and classroom management techniques that are specifically geared toward young learners. The course will also explore ways to integrate CS into other STEM classes to make them more engaging and accessible. Pass/Fail only.
- CS 504 - Web Programing For Teachers
- Introduces teachers to foundations of software development principles with focus on web programming. Emphasizes creating reactive, highly usable web sites. Introduces HTML forms, Perl scripting, Java applets, servlets, and JSP. Pass/Fail only.
- CS 505 - Discovering Informatics
- This course is specifically designed for teachers, both current and future, with a focus on practical applications of data analysis in STEM classrooms. It offers valuable learning opportunities in the foundations of informatics, an interdisciplinary field that combines computer science, programming, and data analysis skills to address real-world problems across various domains, including the natural sciences, business, and the arts. Throughout this course, participants will concentrate on solving problems derived from areas that have a substantial impact on human and environmental health. Importantly, no prior programming experience is required, making it accessible to students from diverse backgrounds and majors. Pass/Fail only.
- CS 506 - Data Wrangling And Management
- This course covers the fundamental principles and practices of data wrangling and management. Students will learn how to acquire, clean, transform, and organize data to prepare it for analysis. The course will also explore data integration, manipulation, visualization, and best practices for ensuring data quality and integrity. By the end of this course, students will have the skills necessary to handle real-world data challenges and apply data management techniques effectively. Letter grade only.
- CS 530 - Advanced Computer Graphics
- Explores advanced topics related to computer graphics. Algorithms for drawing 2D and 3D primitives are introduced. 3D topics including geometric transformations, the representation of curves and surfaces, constructive solid geometry, ray tracing and OpenGL syntax and programming are also explored. Co-convened with CS 430. Letter grade only.
- CS 540 - Advanced Software Architecture
- Graduate level exploration of the design of software architectures, including foundational concepts, architectural styles, architecture description languages and modeling notations, domain-specific architectures, product-line architectures, and the role of architecture and architects in the software engineering process. Co-convened with CS 440. Letter grade only.
- CS 550 - Parallel Programming
- Parallel computing is a widespread technology because of the invention of multi-core processors. For instance, many consumer electronics such as laptops, and smart phones contain multiple CPU cores that can be programmed to execute a program faster than only using a single core. Why do we care about CPU cores in smart phones and other modern computers? CPU clock speeds have become stagnant. Consequently, the number of processors packed onto a single chip continues to increase. No longer can an individual wait for a faster (e.g., higher clock speed) processor to be released to decrease the time it takes to run a program or to improve program responsiveness. Instead, computational resources need to be carefully exploited to reduce the time it takes to execute a program. Given the ubiquitous nature of multi-core computers, there is great demand for programmers that know how to exploit parallel architectures in industry, academia, and government labs. This course introduces students to parallel computing concepts in addition to a hands-on experience using key technologies and approaches used to program multi-core and many-core architectures. Students will learn about program optimization and performance evaluation for sequential and parallel programs. The hands-on approach is intended to ensure that students matriculating from the course will have the confidence needed to address the challenges of parallel computing in the real-world. Types of parallel programs that will be studied include shared-memory programs for the CPU and an introduction to programming the many-core GPU architecture. We will use NAU's cluster, Monsoon, for the GPU component of the course, heavily using the C programming language. Co-convened with CS 450. Letter grade only. Recommended: A previous course in Data Structures.
- CS 551 - Advanced Mechanized Reasoning About Programs
- Advanced coverage of formal reasoning about programs, including proving properties about programming languages and programs, the formalization of programming language semantics, and mechanizing the verification of program correctness. Letter grade only.
- CS 552 - High Performance Computing
- Principles of high performance computing in the distributed-memory environment. In distributed-memory, processes have their own private memory space and communicate via message passing. The course will use the C programming language, Linux, the command line, and the University's cluster, Monsoon. Letter grade only.
- CS 553 - Gpu Programming
- This course introduces students to general purpose computing on graphics processing units (GPGPU). Graphics processing units (GPUs) are parallel processors which typically contain thousands of low-powered cores. Therefore, the utility of GPUs has extended beyond graphics rendering, where they can be used for general purpose computation. This course will examine key concepts in GPU programming for general purpose computation. Co-convened with CS 453. Letter grade only.
- CS 560 - Computer Networks
- Concepts and implementation of computer networks: applications, architecture, protocol layers and protocols, internetworking and addressing, case studies. Co-convenes with CS 460. Letter grade only.
- CS 565 - Distributed Systems
- Concepts and implementation of distributed systems; distribution of application logic and resources/resource access, notion of time, coordination and consistency, middleware, case studies. Co-convened with CS 465. Letter grade only.
- CS 567 - Advanced Software Assurance
- This course covers the theory and implementation of using a planned and systematic set of activities to ensure that software processes and products conform to requirements, standards, and procedures. A special emphasis is placed on the safety of software. Letter grade only.
- CS 570 - Advanced Intelligent Systems
- Introduces fundamental principles of artificial intelligence, as well as exploration of current research themes and challenges in areas including knowledge representation, planning, game playing, learning, and genetic algorithms. Co-convened with CS 470. Letter grade only.
- CS 572 - Unsupervised Machine Learning
- Machine Learning and Artificial Intelligence have become ubiquitous parts of modern society. This course, an extension of CS570, explores the topic of unsupervised learning - when data may not be labeled to support supervised learning methods. Such topics include clustering, Gaussian mixture models, change point detection, and dimensional reduction. Co-convened with CS 472. Letter grade only.
- CS 573 - Interpretable Machine Learning
- This course introduces students to interpretable machine learning algorithms, which can be used to make accurate predictions from big data sets, while being interpretable in terms of what properties of the data are most important or relevant for making the prediction. Topics include sparse linear models (greedy selection and L1 regularization), decision trees, nearest neighbors, and model-agnostic methods which can be used to interpret predictions of any learning algorithm (such as neural networks). Letter grade only.
- CS 577 - Human-computer Interaction
- Explores design and construction of modern graphical user interfaces, including event models, client-server interaction, and interface design and usability evaluation. Co-convenes with CS 477. Letter grade only. Prerequisite: CS 249.
- CS 599 - Contemporary Developments
- Examines recent trends and investigations in a selected area of a particular field of study. May be offered no more than three times before being submitted for a permanent course number. May be repeated for credit. Letter grade only.
- CS 601 - Computer Science Seminar
- This seminar series focuses on research and skills training in computer science. The goal of the seminar is to expose students to computer science research being conducted inside SICCS, in addition to preparing students for successfully completing their literature review, which is the first major milestone in the Informatics & Computing PhD program. Letter grade only. May be repeated for up to 2 units of credit.
- CS 608 - Fieldwork Experience
- Supervised field experience in an appropriate agency, organization, or situation. Department consent required. Pass/fail only. May be repeated for up to 12 units of credit.
- CS 685 - Graduate Research
- Individualized directed research on selected topics. Pass-fail or letter grade, depending on department policy. May be repeated for credit.
- CS 697 - Independent Study
- Individualized directed study on selected topics. Note that no more than 3 units may be included on a master's plan in education. Department consent required. Pass-fail or letter grade, depending on departmental policy. No repeat limit. Please complete the Independent Study Proposal form and obtain signatures of approval BEFORE registering. https://nau.edu/wp-content/uploads/sites/26/Independent_Study_Form_FINAL-3.pdf
- CS 699 - Thesis
- Individualized directed research, writing, and oral defense of selected thesis topic. Department consent. Pass-fail only. May be repeated as needed. Prerequisite: Admission to master's program.