Return to search

Term: Spring 2024

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 451 - Mechanized Reasoning About Programs
Introduction to 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. Co-convened with CS 551. 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 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 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 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 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.