Computer Science (CSCI)

CSCI 105. Introduction to Cybersecurity. 3 Credits.

This course provides the foundation for understanding key issues faced and measures associated with protecting computer systems, networks, and information assets from cyber threats. Students also gain knowledge of the social, legal, ethical, and privacy implications of cybersecurity.

CSCI 114. Computer Applications. 3 Credits.

General introduction to computer concepts, operating systems, the internet, word processing, spreadsheets, database management, and presentation software. Credit awarded only for CSCI 114 or CSCI/MIS/TL 116, not both.

CSCI 122. Visual BASIC. 3 Credits.

Introduction to programming in the BASIC/Visual BASIC language.

CSCI 159. Computer Science Problem Solving. 3 Credits.

Computer-based problem solving techniques are introduced in the context of the Internet, including web-site development. Programming concepts, data structures and algorithms, as well as modeling techniques are discussed.

CSCI 160. Computer Science I. 4 Credits.

Introduction to computer science including problem solving, algorithm development, and structured programming in a high-level language. Emphasis on design, coding, testing, and documentation of programs using accepted standards of style. Prereq: MATH 105 or higher, or CSCI 159.

CSCI 161. Computer Science II. 4 Credits.

Continuation of CSCI 160 that emphasizes more advanced programming language features and basic data structures. Students will learn to incorporate advanced programming features such as Interfaces and Generics into the programs they develop. Prereq: CSCI 160.

CSCI 172. Intermediate Visual BASIC. 3 Credits.

Elements of Visual Basic for those with previous programming background. Topics include fundamental constructs, Active X controls, file processing, database management, and SQL. Prereq: one semester/experience in any programming language.

CSCI 177. Introduction to Information Technology. 3 Credits.

Introduction to basic concepts of information technology, including hardware, software and software. The course provides an overview of computing, storage, networking, and security topics.

CSCI 189. Skills for Academic Success. 1 Credit.

This course is designed to ease the transition for new students at NDSU. Students will learn skills and techniques used by successful college students. In addition to introducing the students to campus resources and governance, topics will include study techniques, time management, test taking, note taking, goal setting, wellness, stress management, and career orientation.

CSCI 194. Individual Study. 1-3 Credits.

CSCI 196. Field Experience. 1-15 Credits.

CSCI 199. Special Topics. 1-5 Credits.

CSCI 212. Self-Paced C++. 1 Credit.

Introduction to the C++ programming language. Students complete exercises and programming assignments at their own pace. Prereq: Programming skill in another language.

CSCI 213. Modern Software Development. 3 Credits.

This course provides students with exposure to, and practice with, a modern software development environment. Students do individual projects covering all the major phases of prescriptive software development including: requirements engineering, design, construction, testing and debugging. Prereq: CSCI 161 or CSCI 228.

CSCI 214. Self-Paced C. 1 Credit.

Introduction to the C programming language. Students complete exercises and programming assignments at their own pace. Prereq: CSCI 160.

CSCI 222. Discrete Mathematics. 3 Credits.

Sets, functions, relations, logic, methods of proof, mathematical induction, combinatorics, recurrence relations, generating functions. Prereq: CSCI 160 or CSCI 228.

CSCI 227. Computing Fundamentals in Python I. 3 Credits.

Introduction to programming concepts, with focus on flow control, basic data structures, and functions. The course is the first in a three-course sequence using the Python programming language. Coreq: MATH 103 or MATH 107.

CSCI 228. Computing Fundamentals in Python II. 3 Credits.

Introduction to programming concepts, with focus on the object-oriented programming paradigm, linear data structures, positional lists, iterators, and basic algorithm analysis. The course is the second in a three-course sequence using the Python programming language. Prereq: CSCI 227.

CSCI 229. Computing Fundamentals in Python III. 3 Credits.

Introduction to programming concepts, with focus on data structures and algorithms, including trees, search trees, hash tables, sorting algorithms, and graphs. The course is the third in a three-course sequence using the Python programming language. Prereq: CSCI 228.

CSCI 277. Introduction to UNIX. 3 Credits.

This course introduces students to the UNIX operating system environment. Topics include basic UNIX commands, operating system installation and administration, application installation, use of alternative shells, web servers, and system security. Cross-listed with MIS 277.

CSCI 291. Seminar. 1-3 Credits.

CSCI 292. Global Practicum: Study Abroad. 1-15 Credits.

Pre-Arranged study at accredited foreign institutions (study abroad), domestic institutions (National Student Exchange) or on approved study abroad programs. Pre-requisite: Sophomore standing and prior approval by International Student and Study Abroad Services and major department. Graded 'P'or 'F' (Undergraduate), or 'S' or 'U' (Graduate).

CSCI 294. Individual Study. 1-5 Credits.

CSCI 299. Special Topics. 1-5 Credits.

CSCI 305. Principles of Cybersecurity. 3 Credits.

This course helps students become familiar with cybersecurity concepts, principles, terminology, technologies, and skills. Major security topics covered include threats, malware attacks, hacking, spyware, firewalls, network defense, database security, intrusion detection systems, security policies. Additionally, students learn about cyberstalking, cyber terrorism, and information warfare. Prereq: CSCI 161 or CSCI 312.

CSCI 312. Survey of Programming Languages. 3 Credits.

This course provides an introduction to major types of programming languages including block-structured, object-oriented, dynamic, declarative and functional languages. For each of the languages, an example language other than the main teaching language will be selected. Credit awarded only for CSCI 312 or CSCI 372, not both. Prereq: CSCI 228.

CSCI 313. Software Development with Frameworks. 3 Credits.

This course provides students with an understanding of the full-stack development of real-world software application using software frameworks. Students will work in small teams to use an agile methodology to develop a full-stack application. Prereq: CSCI 161.

CSCI 336. Theoretical Computer Science. 3 Credits.

Parsing techniques, context-free languages, Turing machines, recursive and recursively enumerable languages, unrestricted grammars, unsolvable decision problems, computability, introduction to computational complexity. Prereq: CSCI 222.

CSCI 345. Topics on Personal Computers. 3 Credits.

Exploration of some aspects of personal computers not covered in other courses, varies each time it is offered. May be repeated. Prereq: CSCI 161.

CSCI 359. Networking. 3 Credits.

This course introduces students to the functionality and operations of networking. It covers the operations of networking equipment, such as hubs, switches, routers, access points and firewalls. Students will also learn about the OSI and TCP/IP models, ports, routing protocols and common networking services.

CSCI 366. Database Systems. 3 Credits.

Introduction to database systems, including database design, data modeling, storage structures, database theory, and the building of database applications. Prereq: CSCI 161.

CSCI 371. Web Scripting Languages. 3 Credits.

This course examines Scripting Languages and their applications. Emphasis will be placed on web scripting. A representative set of scripting languages will be covered. Prereq: CSCI 122 or CSCI 160 or CSCI 227 or ECE 173. Cross-listed with MIS 371.

CSCI 372. Comparative Programming Languages. 3 Credits.

Fundamental concepts of programming languages and inherent design choices are analyzed. The course focuses mainly on concepts of block-structured and object-oriented languages, but other languages, such as declarative and functional languages, also are discussed. Credit awarded only for CSCI 312 or CSCI 372, not both. Prereq: CSCI 161.

CSCI 374. Computer Organization and Architecture. 3 Credits.

This course provides an overview of the fundamentals of computer organization (physical design) and architecture (logical design) and relates this to contemporary design issues. Topics include machine level representation of data, assembly level organization, memory system organization and architecture, system connection, memory, input/output, instruction sets, CPU structure and functions and the control unit operation. Prereq: CSCI 160 or CSCI 227.

CSCI 377. Information Technology. 3 Credits.

Fundamental concepts of managing information technology, including installation, configuration, and maintenance tasks. Topics include management of network connectivity, storage, security, and logs. Data storage systems, virtualized systems, and enterprise systems, such as customer relationship management systems, are considered. Prereq: CSCI 277.

CSCI 379. Global Seminar. 1-6 Credits.

NDSU instructed experience or field study in a foreign country. Conducted in English for residence credit. Pre-requisite: Prior approval by International Student and Study Abroad Services and major department. May be repeated. Standard Grading.

CSCI 391. Seminar. 1-3 Credits.

CSCI 392. Global Practicum: Study Abroad. 1-15 Credits.

Pre-Arranged study at accredited foreign institutions (study abroad), domestic institutions (National Student Exchange) or on approved study abroad programs. Pre-requisite: Sophomore standing and prior approval by International Student and Study Abroad Services and major department. Graded 'P'or 'F' (Undergraduate), or 'S' or 'U' (Graduate).

CSCI 394. Individual Study. 1-5 Credits.

CSCI 396. Field Experience. 1-15 Credits.

CSCI 397. Fe/Coop Ed/Internship. 1-4 Credits.

CSCI 399. Special Topics. 1-5 Credits.

CSCI 403. Defensive Network Security. 3 Credits.

This course will cover the design, development and testing of network and software systems for defending computer systems and networks. Key areas of focus will be the development of secure software, software and software system decision making to ensure security and the use of software systems to protect and detect intrusions into computer networks. Prereq: CSCI 213 or ECE 275 or ME 213. {Also offered for graduate credit - See CSCI 603}.

CSCI 404. Ethical Hacking. 3 Credits.

This course teaches students how to test systems by viewing systems security from the bad actors' perspective in conducting system testing. The course prepares students to take the EC Council Certified Ethical Hacker examination. {Also offered for graduate credit - See CSCI 604.}.

CSCI 408. Malware Detection, Analysis and Threat Mechanisms. 3 Credits.

This course introduces students to the threats posed by malware and how to detect and combat it. Students will learn about how malware functions and study the techniques that are used to detect it. They will also learn about reverse engineering tools and techniques that can be used analyze malware. Prereq: CSCI 359. {Also offered for graduate credit - see CSCI 608.}.

CSCI 409. Cybersecurity Law and Policy. 3 Credits.

This course will cover the laws and policy related to cybersecurity. This will include law and policy at the international, national and state levels. The impact of national and state law on corporate and institutional policies will be discussed and institutional policy development and implementation will be reviewed. Prereq: CSCI 213 or ECE 275 or ME 213. {Also offered for graduate credit - See CSCI 609}.

CSCI 410. Computer Crime and Forensics. 3 Credits.

This course covers the basic types of computer crimes. It introduces principles, techniques, tools, and practical skills necessary to perform rudimentary investigations of incidents in which computers play a significant or interesting role. Prereq: CSCI 161. {Also offered for graduate credit - see CSCI 610.}.

CSCI 411. Secure Software Development. 2 Credits.

Presents an approach to secure software systems design and development that tightly integrates security and systems design and software development (software engineering) together. It addresses the software development process from the perspective of a security practitioner. Prereq: CSCI 313.

CSCI 412. Mobile Software Engineering. 3 Credits.

This course is designed to introduce the student to the best practices of mobile software engineering for developing high-quality, reliable, and secure mobile apps. Prereq: CSCI 213 or CSCI 313.

CSCI 413. Principles of Software Engineering. 3 Credits.

An introduction to concepts of software engineering. Software development activities through a project. Lifecycle models, requirements, specification, design, implementation, and testing. Software quality, tools, and techniques. Prereq: CSCI 213 and CSCI 313. {Also offered for graduate credit - see CSCI 613.}.

CSCI 416. Software Architecture and Design. 3 Credits.

This course covers both architectural design and module design. Students receive practice in using a set of design patterns to produce software designs with several different types of architecture. Substantial presentation and practice with the UML modeling language are provided. Prereq: CSCI 313.

CSCI 419. Software Testing and Debugging. 3 Credits.

This course covers the goals, principles, practices, evaluations, and limitations of software testing and software debugging. Prereq: CSCI 313.

CSCI 420. Introduction to Data Science in Python. 3 Credits.

This course introduces the foundations of data science. It covers python tools for data acquisition, wrangling, analysis, and visualization. Prereq: CSCI 313 and CSCI 312 or CSCI 372.

CSCI 422. Fundamentals of Data Engineering. 3 Credits.

Learn the fundamentals of data engineering through lectures and hands on work. This cloud centric, project-oriented course will cover the concepts, tools, and skills required in all phases of the data engineering lifecycle, including data sourcing, storage, ingestion, transformation, and serving. Prereq: CSCI 366. {Also offered for graduate credit - see CSCI 622.}.

CSCI 425. Machine Learning. 3 Credits.

Introduction to Machine Learning methods, including supervised and unsupervised learning. Topics will include classification algorithms and unsupervised clustering techniques. Prereq: CSCI 122 or CSCI 160 or CSCI 227 or ECE 173 or ME 213. Dual-listing: CSCI 625.

CSCI 426. Introduction to Artificial Intelligence. 3 Credits.

Introduction to artificial intelligence for undergraduates. Includes basic AI concepts and techniques. Prereq: CSCI 222 and CSCI 372. {Also offered for graduate credit - see CSCI 626.}.

CSCI 428. Artificial Intelligence, Ethics, and the Environment. 3 Credits.

After an introduction to the topic of ethics in artificial intelligence, the course focuses on geospatial AI applications, and their ethics implications. The course includes a semester-long project in which students gain technical proficiency and ethical awareness related to geospatial AI. Prereq: CSCI 160. {Also offered for graduate credit - see CSCI 628.}.

CSCI 429. Network Applications and Environments. 3 Credits.

This course is devoted to the study of network services and the development of internet resources. Prereq: CSCI 161 or CSCI 228.

CSCI 430. Quantum Computation. 3 Credits.

Students will master the foundations of quantum computation and quantum information, including underlying physical concepts and practical applications. Topics covered include Quantum Bits (Qubits), Single and Multiple Qubit Gates, Quantum Circuits, Quantum Computation, Quantum Algorithms, and Quantum Computers. Graduate students enrolled will also to gain experience with programming and executing the standard quantum algorithms, such as Fourier Transform, Grover's, Shor's Algorithms using, e.g., IBM Quantum Experience platform. Prereq: PHYS 252. Cross-listed with PHYS 430. Dual-listing: CSCI 630.

CSCI 436. Intelligent Agents. 3 Credits.

Fundamentals of Intelligent Agents technology, agent communication languages, applications, and intelligent agents development. Prereq: CSCI 372. {Also offered for graduate credit - see CSCI 636.}.

CSCI 438. Simulation Models. 3 Credits.

Fundamental techniques involved in using a computer to simulate business, social, and industrial systems. Includes principles of random variate generation, statistical sampling, and design of experiments. Prereq: STAT 367. {Also offered for graduate credit - see CSCI 618.}.

CSCI 445. Software Projects Capstone. 3 Credits.

Presentations on the mechanics of working cooperatively as a team doing commercial software development. Students work in teams to deliver realistic work products to local businesses. Course presentations cover teamwork, software development pragmatics, and software documentation. Prereq: CSCI 313 and CSCI 366.

CSCI 450. Cloud Computing. 3 Credits.

This course will acquaint students with various topics and technologies on cloud computing and provide them with a working knowledge for working and building these systems. Prereq: CSCI 312 or CSCI 372. Dual-listing: CSCI 650.

CSCI 453. Linear Programming and Network Flows. 3 Credits.

Linear programming models and applications, primal and dual formulations, computational procedures; introduction to networks, maximum flow, and shortest path problems. Prereq: MATH 265. {Also offered for graduate credit - see CSCI 653.}.

CSCI 455. Networking and Parallel Computation. 3 Credits.

This course provides students with an understanding of networking and multi-programming. Students will write some multi-programs. Prereq: CSCI 213, CSCI 313 and CSCI 366. {Also offered for graduate credit - See CSCI 655.}.

CSCI 459. Foundations of Computer Networks. 3 Credits.

This is an introduction to fundamental concepts for the design and analysis of broadband networks. Topics include resource allocation, routing, congestion control, medium access, scheduling, and multicast. Concepts are applied to state-of-the-art systems and protocols such as current and future Internet protocols. Prereq: CSCI 374 or ECE 374. {Also offered for graduate credit - see CSCI 659.}.

CSCI 462. Mobile and Wireless Networks. 3 Credits.

This course provides students with an understanding of networking and multi-programming with a focus on mobile and wireless networks. Topics include wireless transmission characteristics, mobility management, wireless local area networks, ad hoc and sensor networks, and cellular networks. Students will write some multi-programs. Prereq: CSCI 313 and CSCI 366. {Also offered for graduate credit - see CSCI 662.}.

CSCI 467. Algorithm Analysis. 3 Credits.

Design, correctness, and analysis of algorithms and data structures. Prereq: MATH 166, CSCI 161 and CSCI 222 or MATH 270. {Also offered for graduate credit - see CSCI 667.}.

CSCI 469. Network Security. 3 Credits.

Cryptography and its application to network and operating system security; authentication; email, web, IP, and wireless security; firewalls and intrusion detection techniques; security threats and countermeasures; legal and ethical issues. Prereq: CSCI 222, CSCI 459, C/C++ or JAVA. {Also offered for graduate credit - see CSCI 669.}.

CSCI 473. Foundations of the Digital Enterprise. 3 Credits.

This course is designed to familiarize individuals with current and emerging electronic commerce technologies using the Internet. Prereq: junior standing.

CSCI 474. Operating Systems Concepts. 3 Credits.

How operating systems manage the resources of a computer. Topics include processes, concurrency, scheduling, deadlocks, memory allocation, virtual and secondary storage. Prereq: CSCI 374 or ECE 374.

CSCI 476. Cloud Systems Administration. 3 Credits.

Concepts of virtualized systems using Linux Containers, KVM and OpenStack. Topics include hypervisor installation, networking and storage, and virtual machine life cycle management, as well as solutions for scalability, monitoring, and performance tuning. Prereq: CSCI 277.

CSCI 477. Object-Oriented Systems. 3 Credits.

Introduction to the concepts and advantages of object-oriented computer systems. Introduces exercises with at least one such language. Prereq: CSCI 372. {Also offered for graduate credit - see CSCI 677.}.

CSCI 479. Introduction to Data Mining. 3 Credits.

Introduction to data mining includes basic data mining techniques, querying, spreadsheet data mining, data warehouses, evaluation techniques, knowledge discovery in databases, examples and a survey of advanced techniques. Prereq: Basic database course (e.g. CSCI 366 or CSCI 468). {Also offered for graduate credit - see CSCI 679.}.

CSCI 485. Autonomous Command and Artificial Intelligence for Robots and Other Cyber-Physical Systems. 3 Credits.

This course will cover the command and control of multi-robot systems. This will include the process of onboard decision making, considering both planning-based and real time decisions. Artificial intelligence techniques for robotic systems will be covered as will the application of similar techniques to non-robot cyber-physical systems. Prereq: CSCI 213 or ECE 275 or ME 213. {Also offered for graduate credit - See CSCI 685.}.

CSCI 488. Human-Computer Interaction. 3 Credits.

Survey of the methodologies and alternatives used in developing and evaluating human-computer interfaces. Prereq: CSCI 313. {Also offered for graduate credit - see CSCI 688.}.

CSCI 489. Social Implications of Computers. 3 Credits.

Capstone course for Computer Science. Presentation and discussion of several ethical and social issues that have arisen from the introduction of the computer including copy-protected software and liability for computer software errors. Prereq: CSCI 312 or CSCI 372. Dual-listing: CSCI 689.

CSCI 491. Seminar. 1-5 Credits.

CSCI 492. Global Practicum: Study Abroad. 1-15 Credits.

Pre-Arranged study at accredited foreign institutions (study abroad), domestic institutions (National Student Exchange) or on approved study abroad programs. Pre-requisite: Sophomore standing and prior approval by International Student and Study Abroad Services and major department. Graded 'P'or 'F' (Undergraduate), or 'S' or 'U' (Graduate).

CSCI 493. Undergraduate Research. 1-6 Credits.

CSCI 494. Individual Study. 1-5 Credits.

CSCI 496. Field Experience. 1-15 Credits.

CSCI 499. Special Topics. 1-5 Credits.

CSCI 603. Defensive Network Security. 3 Credits.

This course will cover the design, development and testing of network and software systems for defending computer systems and networks. Key areas of focus will be the development of secure software, software and software system decision making to ensure security and the use of software systems to protect and detect intrusions into computer networks. {Also offered for undergraduate credit - See CSCI 403}.

CSCI 604. Ethical Hacking. 3 Credits.

This course teaches students how to test systems by viewing systems security from the bad actors' perspective in conducting system testing. The course prepares students to take the EC Council Certified Ethical Hacker examination. {Also offered for undergraduate credit - See CSCI 404.}.

CSCI 608. Malware Detection, Analysis and Threat Mechanisms. 3 Credits.

This course introduces students to the threats posed by malware and how to detect and combat it. Students will learn about how malware functions and study the techniques that are used to detect it. They will also learn about reverse engineering tools and techniques that can be used analyze malware. {Also offered for undergraduate credit - see CSCI 408.}.

CSCI 609. Cybersecurity Law and Policy. 3 Credits.

This course will cover the laws and policy related to cybersecurity. This will include law and policy at the international, national and state levels. The impact of national and state law on corporate and institutional policies will be discussed and institutional policy development and implementation will be reviewed. {Also offered for undergraduate credit - See CSCI 409}.

CSCI 610. Computer Crime and Forensics. 3 Credits.

This course covers the basic types of computer crimes. It introduces principles, techniques, tools, and practical skills necessary to perform rudimentary investigations of incidents in which computers play a significant or interesting role. {Also offered for undergraduate credit - see CSCI 410.}.

CSCI 613. Principles of Software Engineering. 3 Credits.

An introduction to concepts of software engineering. Software development activities through a project. Lifecycle models, requirements, specification, design, implementation, and testing. Software quality, tools, and techniques. {Also offered for undergraduate credit - see CSCI 413.}.

CSCI 616. Software Architecture and Design. 3 Credits.

This course covers both architectural design and module design. Students receive practice in using a set of design patterns to produce software designs with several different types of architecture. Substantial presentation and practice with the UML modeling language are provided. {Also offered for undergraduate credit - see CSCI 416.}.

CSCI 618. Simulation Models. 3 Credits.

Fundamental techniques involved in using a computer to simulate business, social, and industrial systems. Includes principles of random variate generation, statistical sampling, and design of experiments. {Also offered for undergraduate credit - see CSCI 418.}.

CSCI 620. Introduction to Data Science in Python. 3 Credits.

This course introduces the foundations of data science. It covers python tools for data acquisition, wrangling, analysis, and visualization. It also includes hands-on experience through a research project. {Also available for undergraduate credit - see CSCI 420.}.

CSCI 622. Fundamentals of Data Engineering. 3 Credits.

Learn the fundamentals of data engineering through lectures and hands on work. This cloud centric, project-oriented course will cover the concepts, tools, and skills required in all phases of the data engineering lifecycle, including data sourcing, storage, ingestion, transformation, and serving. Dual-listing: CSCI 422.

CSCI 625. Machine Learning. 3 Credits.

Introduction to Machine Learning methods, including supervised and unsupervised learning. Topics will include classification algorithms and unsupervised clustering techniques. {Also offered for undergraduate credit - see CSCI 425.}.

CSCI 628. Artificial Intelligence, Ethics, and the Environment. 3 Credits.

After an introduction to the topic of ethics in artificial intelligence, the course focuses on geospatial AI applications, and their ethics implications. The course includes a semester-long project in which students gain technical proficiency and ethical awareness related to geospatial AI. {Also offered for undergraduate credit - see CSCI 428.}.

CSCI 630. Quantum Computation. 3 Credits.

Students will master the foundations of quantum computation and quantum information, including underlying physical concepts and practical applications. Topics covered include Quantum Bits (Qubits), Single and Multiple Qubit Gates, Quantum Circuits, Quantum Computation, Quantum Algorithms, and Quantum Computers. Graduate students enrolled will also to gain experience with programming and executing the standard quantum algorithms, such as Fourier Transform, Grover's, Shor's Algorithms using, e.g., IBM Quantum Experience platform. Cross-listed with PHYS 630. Dual-listing: CSCI 430.

CSCI 636. Intelligent Agents. 3 Credits.

Fundamentals of Intelligent Agents technology, agent communication languages, applications, and intelligent agents development. {Also offered for undergraduate credit - see CSCI 436.}.

CSCI 641. Introduction to Computer Science Education. 3 Credits.

This course provides an overview of the main areas of Computer Science Education to students. The Active-Learning-Based Teaching Model, Research in Computer Science Education, Teaching Methods in Computer Science Education, and Lab-Based Teaching is addressed. Most of the methods and ideas presented can be easily adapted to the teaching of any computer science topic in any framework and any level, from middle school through high school to the university level.

CSCI 642. Problem Solving in Computer Science Education. 3 Credits.

Introduction of essential Computer-Science concepts related to problem solving through a study of several different approaches. Specific problem-solving techniques such as Sequential Logic, Decision Logic, Looping Logic, and popular data structures are studied in detail. The course will focus on algorithms development and modeling techniques that can be applied to many different programming languages.

CSCI 643. Introduction to Computer Programming. 3 Credits.

The course provides foundational skills to write computer programs in a contemporary programming language. Students will be introduced to computer science problem-solving, algorithm development, and structured programming in a high-level language. Emphasis on design, coding, testing, and documentation of programs using accepted standards of style.

CSCI 644. Data Structures and Algorithms. 3 Credits.

This course introduces data structures and algorithms used in a contemporary programming language. Students will be introduced to linear and hierarchical data structures including arrays, linked lists, stacks, queues and binary trees. Emphasis will be placed on computer science problem-solving, algorithm development and algorithm analysis. Prereq: CSCI 643.

CSCI 650. Cloud Computing. 3 Credits.

This course will acquaint students with various topics and technologies on cloud computing and provide them with a working knowledge for working and building these systems. Dual-listing: CSCI 450.

CSCI 653. Linear Programming and Network Flows. 3 Credits.

Linear programming models and applications, primal and dual formulations, computational procedures; introduction to networks, maximum flow, and shortest path problems. {Also offered for undergraduate credit - see CSCI 453.}.

CSCI 654. Operations Research. 3 Credits.

Deterministic and probabilistic models of operations research: networks and project management, dynamic programming, non-linear programming, inventory, queuing, reliability, stochastic processes, and simulation. Prereq: CSCI 653. {Also offered for undergraduate credit - see CSCI 454.}.

CSCI 655. Networking and Parallel Computation. 3 Credits.

This course provides students with an understanding of networking and multi-programming. Students will write some multi-programs. {Also offered for undergraduate credit - See CSCI 455.}.

CSCI 659. Foundations of Computer Networks. 3 Credits.

This is an introduction to fundamental concepts for the design and analysis of broadband networks. Topics include resource allocation, routing, congestion control, medium access, scheduling, and multicast. Concepts are applied to state-of-the-art systems and protocols such as current and future Internet protocols. {Also offered for undergraduate credit - see CSCI 459.}.

CSCI 662. Mobile and Wireless Networks. 3 Credits.

This course provides students with an understanding of networking and multi-programming with a focus on mobile and wireless networks. Topics include wireless transmission characteristics, mobility management, wireless local area networks, ad hoc and sensor networks, and cellular networks. Students will write some multi-programs. {Also offered for undergraduate credit - see CSCI 462.}.

CSCI 667. Algorithm Analysis. 3 Credits.

Design, correctness, and analysis of algorithms and data structures. {Also offered for undergraduate credit - see CSCI 467.}.

CSCI 669. Network Security. 3 Credits.

Cryptography and its application to network and operating system security; authentication; email, web, IP, and wireless security; firewalls and intrusion detection techniques; security threats and countermeasures; legal and ethical issues. Prereq: CSCI 659, C/C++ or JAVA. {Also offered for undergraduate credit - see CSCI 469.}.

CSCI 675. Operating Systems Design. 3 Credits.

Advanced operating systems topics such as protection, errors, and distributed systems. Case studies of representative operating systems. Students work in small teams to implement their own basic operating systems. {Also offered for undergraduate credit - see CSCI 475.}.

CSCI 677. Object-Oriented Systems. 3 Credits.

Introduction to the concepts and advantages of object-oriented computer systems. Introduces exercises with at least one such language. {Also offered for undergraduate credit - see CSCI 477.}.

CSCI 679. Introduction to Data Mining. 3 Credits.

Introduction to data mining includes basic data mining techniques, querying, spreadsheet data mining, data warehouses, evaluation techniques, knowledge discovery in databases, examples and a survey of advanced techniques. Prereq: Basic database course (e.g. CSCI 668 or CSCI 765). {Also offered for undergraduate credit - see CSCI 479.}.

CSCI 685. Autonomous Command and Artificial Intelligence for Robots and Other Cyber-Physical Systems. 3 Credits.

This course will cover the command and control of multi-robot systems. This will include the process of onboard decision making, considering both planning-based and real time decisions. Artificial intelligence techniques for robotic systems will be covered as will the application of similar techniques to non-robot cyber-physical systems. {Also available for undergraduate credit - See CSCI 485.}.

CSCI 688. Human-Computer Interaction. 3 Credits.

Survey of the methodologies and alternatives used in developing and evaluating human-computer interfaces. {Also offered for undergraduate credit - see CSCI 488.}.

CSCI 689. Social Implications of Computers. 3 Credits.

Capstone course for Computer Science. Presentation and discussion of several ethical and social issues that have arisen from the introduction of the computer including copy-protected software and liability for computer software errors. {Also offered for undergraduate credit - see CSCI 489.}.

CSCI 690. Graduate Seminar. 1-3 Credits.

CSCI 695. Field Experience. 1-15 Credits.

CSCI 696. Special Topics. 1-5 Credits.

CSCI 702. Survey of Cybersecurity. 3 Credits.

This course provides students with an overview of the key concepts and areas of cybersecurity. It is designed to provide an accelerated overview of the field to graduate students to facilitate more in-depth instruction and research inquiry in specific areas, informed by knowledge of the whole field. Students will also learn how to utilize this broad knowledge to synthesize and evaluate network defense plans.

CSCI 706. Data-Driven Security. 3 Credits.

This course will cover the use of data science techniques such as data preparation, feature selection, exploratory data analysis, visualization and machine learning to efficiently manipulate, analyze and gain valuable insights from cyber security data.

CSCI 707. Usable Security and Privacy. 3 Credits.

Introduce human-centric methodology and principles/guidelines on secure interaction design. Cover evaluation methods in Human Computer Interaction to measure usability issues in security and privacy systems.

CSCI 712. Mobile Software Engineering. 3 Credits.

This course introduces recent advancements in mobile software engineering tools and techniques, in addition to the best practices for building high-quality, reliable, and secure mobile apps.

CSCI 713. Software Development Processes. 3 Credits.

This course is designed as a breadth course on the software engineering process. Basic concepts are reviewed and reassured to create a basis for higher concepts and techniques.

CSCI 714. Software Project Planning and Estimation. 3 Credits.

This course is designed to introduce the student to concepts and techniques of how to plan for a software project. This includes time and effort estimation, planning and teaming the project, and managing the development activities. Prereq: CSCI 713.

CSCI 715. Software Requirements Definition and Analysis. 3 Credits.

This course is designed to make the student able to identify and capture requirements for a software system and be able to document and assess the requirements. Prereq: CSCI 713.

CSCI 716. Software Design. 3 Credits.

This course covers both architectural design and module design. Students receive practice using a set of patterns to produce software designs with several different types of architecture. Substantial presentation and practice with the UML modeling language is provided. Prereq: CSCI 713.

CSCI 717. Software Construction. 3 Credits.

This course covers the fundamentals of software construction including programming and evaluation of the source code. Students receive a good grounding in and extensive practice with the comprehensive libraries associated with a modern programming language. Prereq: CSCI 713.

CSCI 718. Software Testing and Debugging. 3 Credits.

This course covers the goals, practices, evaluation and limitations of software testing and software debugging. Students receive practice in developing and using test plans and various testing and debugging techniques. Prereq: CSCI 713.

CSCI 724. Survey of Artificial Intelligence. 3 Credits.

Survey of major areas of AI including theorem proving, heuristic search, problem solving, computer analysis of scenes, robotics, natural language understanding, and knowledge-based systems.

CSCI 728. Computer Graphics. 3 Credits.

Principles and algorithms used in computer graphics packages. Emphasis on raster graphics, clipping, hidden-surface elimination, ray-tracing, radiosity.

CSCI 732. Introduction To Bioinformatics. 3 Credits.

An introduction to the principles of bioinformatics including information relating to the determination of DNA sequencing. Prereq: STAT 661. Cross-listed with MATH 732 and STAT 732.

CSCI 736. Computational Intelligence. 3 Credits.

This course acquaints students with computational intelligence techniques to provide them with working knowledge for applying these approaches. The course describes neural networks, evolutionary computation, swarm intelligence, fuzzy logic and reasoning, and expert systems and shows how these can be applied.

CSCI 741. Algorithm Analysis. 3 Credits.

Algorithm design and analysis, asymptotic analysis, worst and average case, recurrences, generating functions, divide-and-conquer, the greedy method, search and traversal, backtracking, branch-and-bound.

CSCI 760. Dynamic Programming. 3 Credits.

Dynamic programming as an algorithm design method, formulating and solving problems using dynamic programming, deterministic and stochastic problems in OR and CS.

CSCI 765. Introduction to Database Systems. 3 Credits.

Basic database concepts, models, management facilities, data structures, storage structures, data definition languages, data manipulation languages, normalization, operator implementation algorithms, transactions, correctness, reliability, distribution, performance analysis.

CSCI 771. Software Development Project I. 3 Credits.

The first half of a two semester software development project done as the capstone activity of the Master of Software Engineering program. Student does a one page project proposal, a requirements specification document, and a design specification document. Prereq: CSCI 713, CSCI 715, CSCI 716, and CSCI 718.

CSCI 772. Software Development Project II. 3 Credits.

The second half of a two semester software development project required as the capstone activity of the Master of Software Engineering program. Student submits a test plan, complete testing results, the project source code, and a user manual. Prereq: CSCI 771.

CSCI 773. Foundations of the Digital Enterprise. 3 Credits.

This course covers current and emerging digital technologies, including web development, security, server management, and privacy.

CSCI 774. Topics of the Digital Enterprise. 3 Credits.

Topics in database, networks, cryptology, security, and software engineering as they apply to the digital enterprise. Recommended: CSCI 783.

CSCI 778. Computer Networks. 3 Credits.

Examination of computer networks using the ISO-OSI model as a framework. Practical and theoretical issues are explored in modems, codes, error, impairments, modulation, protocols, and interfaces.

CSCI 779. Advanced Machine Learning. 3 Credits.

Advanced level of modern machine learning technologies and methods, specifically deep neural networks and to apply these machine learning and data mining skills to various applications. Python and coding experience are required.

CSCI 783. Topics In Software Systems. 3 Credits.

Includes an area of computer science not otherwise treated in computer science courses. Varies each time offered. May be repeated.

CSCI 787. Topics in Operations Research. 3 Credits.

Includes an area of operational research not considered in other courses. Varies each time offered. May be repeated.

CSCI 790. Graduate Seminar. 1-3 Credits.

CSCI 791. Temporary/Trial Topics. 1-5 Credits.

CSCI 793. Individual Study/Tutorial. 1-5 Credits.

CSCI 795. Field Experience. 1-15 Credits.

CSCI 796. Special Topics. 1-5 Credits.

CSCI 797. Master's Paper. 1-3 Credits.

CSCI 798. Master's Thesis. 1-10 Credits.

CSCI 834. Knowledge Based Systems. 3 Credits.

Examination of types of knowledge-based systems, their powers and limitations. Students create their own knowledge-based system. Prereq: CSCI 724.

CSCI 835. Neural Networks. 3 Credits.

Introduction to the parallel processing paradigms that have been developed recently including neuronetworks and genetic algorithms. Students will work on projects using these tools. Prereq: CSCI 724. Cross-listed with PSYC 774 and IME 774.

CSCI 842. Algorithms and Complexity. 3 Credits.

Linear and nonlinear recurrences, algebraic problems, fast Fourier transforms, lower bound theory, computational geometry, the classes P and NP-completeness, Cook's theorem, NP-hard problems. Prereq: CSCI 741.

CSCI 845. Formal Methods for Software Development. 3 Credits.

The course is a high level course with the aim of formal representation to be able to formally assess characteristics of software. The formal representations are based on the theoretical foundations of computer sciences such as set theory, logic or graph theory. Prereq: CSCI 713.

CSCI 846. Development of Distributed Systems. 3 Credits.

This course is an advanced course in software engineering aiming at strategies and solutions of distributed systems. It assumes the knowledge of software engineering and particularly design and implementation of software systems, then builds on these concepts to how distributed systems are designed and implemented. Prereq: CSCI 713.

CSCI 847. Software Complexity Metrics. 3 Credits.

This course covers complexity metrics for the entire software lifecycle. Students gain experience in using requirements metrics, design metrics, program metrics, test metrics, and planning metrics. The effectiveness and limitations of metrics in all these areas are emphasized. Prereq: CSCI 718.

CSCI 848. Empirical Methods in Software Engineering. 3 Credits.

This course will cover the basics of Empirical Software Engineering. It will focus on the need for collecting metrics and building models as well as the concepts involved in design experiments. Prereq: CSCI 713.

CSCI 858. Bioinformatics Data Mining. 3 Credits.

Techniques and objectives of data mining for biological data with focus on diverse data sources including graphs, sequences and text. Preparation for research in bioinformatics with focus on functional genomics problems. Prereq: CSCI 732.

CSCI 859. Computational Methods in Bioinformatics. 3 Credits.

An introduction to computer science and operations research methods and algorithms that are used for analysis and solution of optimization and other models in bioinformatics.

CSCI 862. Network Flows. 3 Credits.

Theory and algorithms for network flow optimization including network representation data structures, basic change methods, maximum flow, shortest path, minimum cost problems, and generalized networks. Prereq: CSCI 653.

CSCI 866. Database System Internals. 3 Credits.

Transaction management, processing; correctness; recoverability; serializability (conflict and view); concurrency control (2PL, BTO, SGT, multiversion); recovery; distributed systems (correctness, recovery, replication); query processing and optimization. Prereq: CSCI 765.

CSCI 880. Methods of Optimization. 3 Credits.

Elements of convex analysis, constrained and unconstrained multi-dimensional linear and nonlinear optimization theory and algorithms, convergence properties and computational complexity. Prereq: CSCI 653. Cross-listed with MATH 880.

CSCI 885. Topics in Computer Architecture. 3 Credits.

Includes an area of computer architecture not considered in other courses. Varies each time offered. May be repeated.

CSCI 889. Topics in Theoretical Computer Science. 3 Credits.

Includes an area of theoretical computer science not considered in other courses. Varies each time offered. May be repeated.

CSCI 893. Individual Study/Tutorial. 1-5 Credits.

CSCI 895. Field Experience/Practicum. 1-15 Credits.

CSCI 898. Continuing Enrollment. 1-9 Credits.

For graduate students who have completed all necessary credits of course work including thesis (798) and dissertation (899) on their approved Plan of Study, but who have not yet completed and submitted their thesis or dissertation. This course does not count towards the credit requirements for the degree and is not financial aid eligible. Department consent required to enroll.

CSCI 899. Doctoral Dissertation. 1-15 Credits.