Computer Science (CSCI)


CSCI 101. Introduction to Computers. 3 Credits.

An overview of the fundamental concepts and applications of computer science. Topics include data storage, hardware, operating systems, and programming principles. Corequisite: CSCI 101T is recommended. F,S,SS.

CSCI 101T. Software Applications Tutorial. 1 Credit.

An introductory tutorial course to complement CSCI 101. Activities will include hands-on experience with operating systems and application software (including word processors, spreadsheets, and databases). Corequisite: CSCI 101 is recommended. On demand.

CSCI 120. Computer Programming I. 4 Credits.

An introduction to computer programming in a high-level language, with emphasis on problem solving and logical thinking. Students learn to design, implement, test, and debug programs for small-scale problems using elementary data types and control structures. Includes laboratory. On demand.

CSCI 130. Introduction to Scientific Programming. 4 Credits.

An introduction to scientific computing, with problem solving, algorithm development, and structured programming in a high-level language with an engineering and mathematical focus. Emphasis on learning how to design, code, debug, and document programs, using techniques of good programming style. Includes laboratory. F,S,SS.

CSCI 150. Introduction to Computer Science. 3 Credits.

This is an introductory course for prospective computer science majors as well as offering an introduction to computing for non-computer science majors. Students will receive a broad introduction to the discipline of computer science without the immersion into a programming language. Students will learn to write interactive Web-based programs. No previous computing or programming experience is assumed. On demand.

CSCI 160. Computer Science I. 4 Credits.

An introduction to computer science, with problem solving, algorithm development, and structured programming in a high-level language. Emphasis on learning how to design, code, debug, and document programs, using techniques of good programming style. Includes laboratory. F,S,SS.

CSCI 160L. Computer Prog I Lab.

Computer Programming I Lab.

CSCI 161. Computer Science II. 4 Credits.

A broadening of foundations for computer science with advanced concepts in computer programming. Includes an introduction to data structures, analysis of algorithms, and the theory of computation. Includes laboratory. Prerequisites: CSCI 130 or CSCI 160, and MATH 103 or MATH 107; concurrent enrollment in MATH 208 is recommended. F,S,SS.

CSCI 161L. Computer Prog II Lab.

Computer Programming II Lab.

CSCI 170. Computer Programming II. 4 Credits.

Advanced techniques in computer programming using a high-level language. Topics include the use of recursion, pointers, and fundamental data structures in developing small to medium-scale programs. Includes laboratory. Prerequisite: CSCI 120. On demand.

CSCI 199. Topics in Computing. 1-3 Credits.

Selected introductory-level topics in computing for students of all majors. Course may be repeated to 6 credits with different topics. Repeatable to 6 credits. On demand.

CSCI 230. Systems Programming. 3 Credits.

Focus on low level programming. Topics covered include pointers, memory management, code optimization, compiling and linking, and library management. Prerequisite: CSCI 161. S.

CSCI 242. Algorithms and Data Structures. 3 Credits.

Object-oriented implementations of complex data structures including lists, sets, trees, and graphs. Time and space analysis and classification of algorithms using upper bounds (big Oh), lower bounds (big Omega), and exact bounds (big Theta). Techniques for analysis of recursive algorithms including use of the "Master Theorem" for divide-and-conquer recurrences. Prerequisites: CSCI 161 and MATH 208. F,S.

CSCI 260. Advanced Programming Languages. 3 Credits.

Programming in a specific high-level language for students who are already proficient at programming in another high-level language. Course may be repeated for different languages. A student may not receive credit for both CSCI 260 and a 100-level programming course in the same language. Prerequisite: CSCI 161 or consent of instructor. Repeatable. F.

CSCI 289. Social Implications of Computer Technology. 3 Credits.

An introduction to the effects of computer technology on society and individuals and to ethical problems faced by computer professionals. Topics covered include privacy, the nature of work, centralization versus decentralization and the need for human factors analysis in the development of a new computer system. F.

CSCI 290. Cyber-Security and Information Assurance. 3 Credits.

An introduction covering the breadth of essential Cyber-Security and Information Assurance topics. Students will hone skills in observation, deduction, analysis, logical reasoning and critical thinking as they gain experience with non-technical and lightly technical aspects of Cyber-Security and Information Assurance through practical and real-world examples. S.

CSCI 297. Experiential Learning. 1-3 Credits.

A practical experience in which students offer their proficiency in computing as a resource or service for others. The experience may involve software development, software consulting and assistance, system administration, or instruction. Prerequisite: CSCI 161. Repeatable to 6 credits. S/U grading. F.

CSCI 299. Topics in Computer Science. 1-3 Credits.

Selected intermediate-level topics in computer science for students with some experience or previous courework in computing. Course may be repeated up to 6 credits with different topics. Repeatable to 6 credits. On demand.

CSCI 327. Data Communications. 3 Credits.

An introduction to the concepts of data transmission, communication hardware and protocols, communication software and the design, performance and management of computer networks. Prerequisites: CSCI 230 and MATH 208. F.

CSCI 363. User Interface Design. 3 Credits.

A study of the design and implementation of user interfaces for software applications. Students will apply principles of interface design to build applications using a toolkit of graphical interface components. Required coursework includes a team project. Prerequisite: CSCI 161. F.

CSCI 364. Concurrent and Distributed Programming. 3 Credits.

This course focuses on concurrent object oriented programming and modern distributed/parallel programming models (such as OpenMP, CUDA, OpenCL and Actors). Students will utilize various high performance distributed computing technology. Topics covered will include shared and distributed memory systems, sockets, threads, and message passing. Prerequisites: CSCI 242 and CSCI 230. S, even years.

CSCI 365. Organization of Programming Languages. 3 Credits.

Compile and run time requirements of programming languages, parameter passing and value binding techniques. Vector and stack processing. Prerequisite: CSCI 242. S.

CSCI 370. Computer Architecture. 4 Credits.

Computer structure, machine presentation of numbers and characters, instruction codes and assembly systems. Introduction to hardware methodologies and software extensions to hardware in computers. Some topics on hardware and software selection will be discussed. Prerequisites: CSCI 230, EE 201, and EE 202. S.

CSCI 384. Artificial Intelligence. 3 Credits.

A survey of the applications and techniques of artificial intelligence. Topics include problem solving paradigms, tree searching, rule-based systems, theorem proving, knowledge representation, natural language processing, image processing, and computer learning. Prerequisite: CSCI 242. S.

CSCI 389. Computer and Network Security. 3 Credits.

This course introduces techniques for achieving security in multi-user standalone computer systems and distributed computer systems. Coverage includes host-based security topics (cryptography, instrusion detection, secure operating systems), network-based security topics (authentication and identification schemes, denial-of-service attacks, worms, firewalls), risk assessment and security policies. Prerequisite: CSCI 161. S.

CSCI 397. Cooperative Education. 1-2 Credits.

A practical work experience with an employer closely associated with the student's academic area. Arranged by mutual agreement among student, department, employer, and the UND Cooperative Education office. Repeatable to 6 credits. Prerequisites: Declared Computer Science major with 15 completed credits in CSCI including CSCI 161. Repeatable to 6 credits. S/U grading. F,S,SS.

CSCI 399. Topics in Computer Science. 1-3 Credits.

Selected topics in Computer Science which allow students to study specialized subjects. Repeatable to 12 credits. Prerequisite: Consent of instructor. Repeatable to 12 credits. On demand.

CSCI 427. Advanced Data Communications. 3 Credits.

Analysis of existing and future data communications technologies and protocols, including the modeling of realistic networked environments and the analysis of their performance. Prerequisites: CSCI 327. S, even years.

CSCI 435. Formal Languages and Automata. 3 Credits.

A study of automata, grammars, and Turing machines as specifications for formal languages. Computation is defined in terms of deciding properties of formal languages, and the fundamental results of computability and decidability are derived. Prerequisites: CSCI 242 and minimum second semester junior standing. F.

CSCI 445. Mathematical Modeling and Simulation. 3 Credits.

A study of various mathematical applications for digital computers, including the modeling, simulation and interpretation of the solution of complex systems. Prerequisites: CSCI 161 or CSCI 170, and MATH 166 and a statisitcs course. F, even years.

CSCI 446. Computer Graphics I. 3 Credits.

Introduction to computer graphics. Topics include display technology, light and color, 2D and 3D representations, image processing, ray-tracing, and computer animation. Prerequisites: CSCI 242, CSCI 363, and MATH 166. F, odd years.

CSCI 448. Computer Graphics II. 3 Credits.

A continuation of CSCI 446, topics covered include: history of games, game taxonomies, game design theory, computer game development, physics engines and AI engines. Prerequisite: CSCI 446. S, even years.

CSCI 451. Operating Systems I. 3 Credits.

Introduction to operating system theory and fundamentals. Topics include: multiprogramming, CPU scheduling, memory management methods, file systems, interprocess communication, and a survey of modern operating systems. Prerequisites: CSCI 242 and CSCI 370. F.

CSCI 452. Operating Systems II. 3 Credits.

A study of the implementation of operating systems and parts of operating systems, and development of system software. Prerequisites: CSCI 451. On demand.

CSCI 455. Database Management Systems. 3 Credits.

Database concepts, database administration, database design, and database performance, including the partial design of a DBMS application. Prerequisite: CSCI 242. S.

CSCI 457. Electronic Commerce Systems. 3 Credits.

A study of electronic commerce system architecture and electronic commerce content design and implementation. Topics include Internet basics, business issues, Web markup languages, static and dynamic Web programming,e-commerce content design and construction, and databases and host languages with embedded SQL such as JDBC. Prerequisite: CSCI 260. S, odd years.

CSCI 463. Software Engineering. 3 Credits.

This course teaches software engineering principles and techniques used in the specification, design, implementation, verification and maintenance of large-scale software systems. Major software development methodologies are reviewed. As development team members, students participate in a group project involving the production or revision of a complex software product. Prerequisites: CSCI 242 and CSCI 363. S.

CSCI 465. Principles of Translation. 3 Credits.

Techniques for automatic translation of high-level languages to executable code. Prerequisites: CSCI 365 and CSCI 370. F, odd years.

CSCI 491. Seminars in Computer Science. 1 Credit.

A course for advanced students. Repeatable to 3 credits. Prerequisite: Consent of instructor. Repeatable to 3 credits. S/U grading. F,S.

CSCI 492. Senior Project I. 2 Credits.

The first course in a two-semester sequence in which computer science majors undertake a culminating research or software development project. The course requires written documents, oral presentations, and peer review for the initial phases of the project, including a project proposal, a review of previous work, and a complete software design or research plan. Prerequisites: CSCI 242 and at least second-semester junior standing. Corequisites: Concurrent enrollment in CSCI 494 with student's CSCI capstone project adviser is recommended. F.

CSCI 493. Senior Project II. 2 Credits.

The second course in a two-semester sequence in which computer science majors undertake a culminating research or software development project. The course requires written documents and oral presentations/demonstrations for both a preliminary and a final review of the completed project. Student must be concurrently enrolled in at least 1 credit of CSCI 494 with their CSCI capstone project advisor. Prerequisite: CSCI 492. Corequisite: CSCI 494. S.

CSCI 494. Special Projects in Computer Science. 1-3 Credits.

A course for advanced students. 1-3 credits varying with the choice of project. May be repeated (6 credits maximum). Prerequisite: Consent of instructor. Repeatable to 6 credits. F,S.

CSCI 500. Graduate Orientation. 1 Credit.

A discussion of various research and applied computing projects. Continued enrollment required of all graduate students until a research/project topic and an advisor are selected. S/U grading.

CSCI 501. Topics in Computer Science. 1-3 Credits.

Selected topics from current developments in Computer Science. Repeatable to 3 credits. Prerequisite: Permission of department. Repeatable to 3 credits.

CSCI 513. Advanced Database Systems. 3 Credits.

A study of concurrency control, recovery, query processing and optimization, security, and new advancements including research issues in database systems. Prerequisite: CSCI 455.

CSCI 515. Data Engineering and Management. 3 Credits.

This course studies theoretical and applied research issues related to data engineering and management. Topics will reflect state-of-the-art and state-of-the-practice activities in the field. The course focuses on well-defined theoretical results and empirical studies that have potential impact on the acquisition, management, storage, and graceful degeneration of data, as well as in provision of data services. Prerequisite: CSCI 513.

CSCI 522. Theoretical Foundations of Computer Science. 3 Credits.

A selection of topics from theoretical computer science, possibly including formal languages, automata, other models of computation, and the theory of computability, decidability, and complexity. Prerequisite: CSCI 435.

CSCI 532. High Performance Computing and Paradigms. 3 Credits.

A study of current topics in threads, inter-process communication and synchronization, master-slave and peer designs for concurrency, client-server architectures, cluster/grid computing and massively parallel computer architectures. A considerabler amount of programming will be done in one or more of these environments. F, even years.

CSCI 537. Graduate Cooperative Education. 1-2 Credits.

A practical work experience in advanced computing, approved by the student's advisor. Requirements include a written report and an oral presentation upon completion of the work experience. Prerequisites: A minimum of 9 graduate credits in computer science and consent of the Department. S/U grading. On demand.

CSCI 543. Advanced Artificial Intelligence. 3 Credits.

Study and application of advanced and recent topics drawn from two or more areas of Artificial Intelligence: problem solving, knowledge representation, expert system, approximate reasoning, planning, machine learning, natural language processing and perception. Prerequisite: CSCI 365 or CSCI 384.

CSCI 544. Soft Computing. 3 Credits.

A study of the new computational paradigm and its techniques called Soft Computing, which stands between the pure/hard mathematical computing and a classical symbolic AI computing. The topic includes Fuzzy Logic, Neural Network, Evolutionary Algorithm, and/or Support Vector Machine. Prerequisite: Consent of instructor. S, even years.

CSCI 545. Discrete Dynamical Systems Modeling and Simulation. 3 Credits.

A study of various modeling methods applicable to large scale distributed and parallel systems. Topics include cellular automata, grid models, and chaos theory. Prerequisite: CSCI 445.

CSCI 546. Advanced Computer Graphics. 3 Credits.

An introduction to advanced topics in computer graphics. Included are light and color theory, image processing and compression, spatial-frequency transformations, raytracing, sampling theory, and topics of current interest. Prerequisites: CSCI 466 and MATH 265. S, even years.

CSCI 547. Scientific Visualization. 3 Credits.

This course will conduct a detailed study of visualization techniques useful in the analysis of engineering and scientific data. Topics include the study of physical models; methods of computational science; two-and three-dimensional data types; visual representation schemes for scalar, vector, and tensor data; isosurface and volume visualization methods; visual monitoring and interactive steering. Prerequisites: CSCI 466 and CSCI 546. On demand.

CSCI 551. Distributed Operating Systems. 3 Credits.

A study of operating systems in the context of distributed systems and distributed processing. Topics include: interprocess communication, process synchronization, distributed file systems and memory management, performance measurement and evaluation. A modern distributed processing system will be examined. Prerequisites: CSCI 370, CSCI 451; and one of the following: CSCI 327, CSCI 427 or CSCI 555.

CSCI 554. Applications in AI/Computational Intelligence. 3 Credits.

A continuous study of the computational paradigms of Soft Computing in the field of Computational Intelligence. The topics include the applications of the various soft computing techniques in Computational Intelligence as well as more evolutionary algorithms in Swarm Intelligence. Prerequisite: CSCI 544. F, even years.

CSCI 555. Computer Networks. 3 Credits.

A study of new and developing network architectures and communication protocols. Broadband technologies will be considered including BISDN, ATM networks, and other high-speed networks. Prerequisite: CSCI 327.

CSCI 562. Formal Specification Methods. 3 Credits.

A foundational course that introduces several formal specification techniques for construction and analysis of software artifacts. Included are rigorous program development, abstract specifications of modules, and modeling of concurrent and distributed software. Prerequisites: CSCI 435 and CSCI 463.

CSCI 565. Advanced Software Engineering. 3 Credits.

A study of current topics related to the design and implementation of large software systems. Course content may vary with instructor and student interest. Potential topics include: software testing and validation, programming environments, program metrics and complexity, design methodologies, software reliability and fault tolerance. Prerequisite: CSCI 463.

CSCI 566. Software Engineering Project. 3-6 Credits.

The complete development of a useful software product, including specifications, design, documentation, coding, testing and verification. Students may work in teams. The project is supervised by the students' Independent Study Advisor. This course may not be used as an elective for the thesis option in computer science. Repeatable to 6 credits. Prerequisite: CSCI 463. Repeatable to 6 credits.

CSCI 575. Analysis of Algorithms. 3 Credits.

The time and space complexity of classical computer algorithms is analyzed. NP hard and NP complete problems are characterized and illustrated. Prerequisite: CSCI 435.

CSCI 582. Software Architecture. 3 Credits.

Software architecture is a fairly young sub-discipline within software engineering; it is aimed at shifting the designer's focus from algorithmic control structure to interactive interrelations among components. This course, among other things, will expose students to the concepts of design, design of design, principles and state-of-the-art methods and techniques in software architectures, which include the discussion of architectural patterns (or styles), domain specific architectural design, formal architectural description languages (ADLs), software connectors (simple and composite), architectural analysis, and middleware and component-based software development. Prerequisites: CSCI 463 and CSCI 435.

CSCI 588. Data Structure, Algorithms, and Software Design in C++. 3 Credits.

This course is intended for the Scientific Computing Ph.D students. The course attempts to introduce C++ via laboratory sessions. More specifically, this course tries to incorporate Data Structures and Algorithms in C++ as well as Software Design in C++. During these sessions the students are introduced to C++ concepts using a series of examples. Having examined the examples given in the session and having understood the concepts covered, the student should be able to complete open-ended problems. This course assumes no prior knowledge of C++.

CSCI 591. Directed Studies. 1-3 Credits.

An investigation of some specific area by an individual or small group of students working closely with a member of the graduate faculty. 1-3 credits in each graduate degree program. Prerequisites: Graduate standing and consent of instructor. Repeatable to 6 credits. F,S,SS.

CSCI 599. Research. 1-6 Credits.

This course is intended for Ph.D students to obtain credit for their research efforts. Repeatable to 21 credits. Repeatable to 21 credits. S/U grading.

CSCI 996. Continuing Enrollment. 1-12 Credits.

Continuing Enrollment. Repeatable. S/U grading.

CSCI 997. Independent Study. 2 Credits.

Independent Study.

CSCI 998. Thesis. 1-9 Credits.

Thesis. Repeatable to 9 credits.

CSCI 999. Dissertation. 1-12 Credits.

Dissertation. Repeatable to 12 credits. F,S,SS.

Office of the Registrar

Tel: 701.777.2711
Fax: 701.777.2696

Twamley Hall Room 201
264 Centennial Drive Stop 8382
Grand Forks, ND 58202-8382