2014-2015 Catalog

Computer Science

http://www.cs.und.edu

FACULTY: Desell, Grant (Graduate Director), Hu, Kim, Liu, Marsh (Chair), O’Neil and Reza

Degrees Granted: Master of Science (M.S.) and Doctor of Philosophy (Ph.D.)

The Department of Computer Science offers graduate study leading to the Master of Science degree, thesis and non-thesis options, a combined degree, and the Doctor of Philosophy in Scientific Computing (emphasizing the development of software, the science and the technology required to support Computational Science). The department is a part of the John D. Odegard School of Aerospace Sciences, which provides unique opportunities for research by faculty and graduate students. There is strong interest within the department in the areas of artificial intelligence, computer security, database, image processing, internet applications, networks, object oriented design, operating systems, simulation, software engineering, and theoretical computer science.

Details pertaining to admission requirements, degree requirements and courses offered can be found in the Degree section.

Master of Science (M.S.)

Mission Statement and Program Goals

The mission of the Computer Science Department’s graduate program is to serve as a center for intellectual and educational development that promotes critical and logical thinking, and the mastery of a student focused Computer Science curriculum. The graduate program strives to give all students a solid foundation in the core areas of computer science, to prepare students for research and study beyond the master’s level, and to prepare students for careers in computing and software development.

In support of this mission, a curriculum has been developed which encourages a formal, abstract, theoretical, and practical approach to the study of computer science, while providing students with experience on state-of-the-art equipment. A number of hardware and software computing platforms are available to students.

Goal 1: Students will acquire a broad knowledge of theoretical and applied topics in computer science and develop communication skills.

Goal 2: Students will develop creative thinking, problem solving and research skills, and acquire expertise in a specific computer science domain.

Combined Degree Program (B.S./M.S.)

To encourage undergraduate computer science students to extend their studies to include a graduate degree, the Computer Science Department has a combined program which permits students to earn both B.S. and M.S. degrees in the discipline. This program allows students to designate two three-credit hour courses to count for both degrees. The two three-credit hour courses designated for both degrees must not have been completed at the time of application and they must have graduate course standing.

Students may be admitted to the Computer Science Combined Degree Program after completion of 90 credit hours towards the B.S. degree with a GPA of at least 3.0, and before completion of the B.S. degree.

Completed applications must be received at the School of Graduate Studies by May 15 for Fall semester admittance and August 15 for Spring semester admittance. A complete applicaton includes:

  1. School of Graduate Studies application and application fee
  2. Three letters of reference
  3. Statement of Purpose
  4. Transcripts
  5. Program of Study - Computer Science Combined Degree

The student is admitted to the School of Graduate Studies upon the completion of 125 credit hours toward the B.S. degree with a GPA of 3.0 or higher. Students in the program may opt to be awarded their B.S. and M.S. degrees sequentially or at the same time.

Scientific Computing Doctor of Philosophy (Ph.D.)

Mission Statement and Program Goals

The mission of the Computer Science Department’s graduate program is to serve as a center for intellectual and educational development that promotes critical and logical thinking, and the mastery of a student-focused Computer Science curriculum. The graduate program strives to prepare students to become lead or supporting researchers in any branch (bioinformatics, atmospheric science, software design, etc) of Computational Science.

Given the breadth of disciplines served by scientific computing and the wide range of experience we expect students to bring to the program, the curriculum has been designed such that the student will gain invaluable “practice experience” by experiencing first-hand the needs of practitioners in that particular field. A number of hardware and software computing platforms are available to students.

Goal 1: Graduates will be prepared to become experts in the fields of Computational Science.

Goal 2: Graduates will be proficient in the use of use of high-performance computing platforms and computing techniques.

 

Master of Science (M.S.)

Admission Requirements

  1. Bachelor’s degree, normally in Computer Science.
  2. Overall undergraduate GPA of at least 2.85.
  3. Graduate Record Examination General Test or an undergraduate degree from a CSAB/ABET accredited degree program in Computer Science.
  4. Satisfy the School of Graduate Studies’ English Language Proficiency requirements as published in the graduate catalog.
  5. International applicants who have received their bachelor’s or master’s degree in the United States or English-speaking Canada are not required to submit the TOEFL or IELTS.

Applicants with a background in mathematics, science or engineering will also be considered if they are adequately prepared in the field of computer science.

Students who do not meet all of these prerequisites may be admitted in Qualified or Provisional status with the obligation of meeting the remaining requirements early in their graduate study.

Degree Requirements

Students seeking the Master of Science degree must satisfy all general requirements set forth by the School of Graduate Studies as well as particular requirements set forth by the Computer Science Department.

Required Core Courses - 12 credits (2 courses from each group):

Group 1
CSCI 522Theoretical Foundations of Computer Science3
CSCI 532High Performance Computing and Paradigms3
CSCI 565Advanced Software Engineering3
CSCI 575Analysis of Algorithms3
Group 2
CSCI 513Advanced Database Systems3
CSCI 543Advanced Artificial Intelligence3
CSCI 551Distributed Operating Systems3
CSCI 555Computer Networks3

Non-Thesis Option (32 credit hours):

  1. The core of required courses (12 credits).
  2. Six elective courses (18 credits). CSCI 500 Graduate Orientation and CSCI 566 Software Engineering Project may not be used as electives. Only three credits of CSCI 591 Directed Studies may be used as an elective.
  3. CSCI 997 Independent Study, in a format suitable for publication (2 credits).
  4. Successful completion of a written comprehensive examination in the four areas.
  5. Preparation of an oral presentation of the study (CSCI 997 Independent Study) to the advisor, Graduate Program Committee, and interested faculty and students.

Thesis Option (30 credit hours):

  1. The core of required courses (12 credits).
  2. Four elective courses (12 credits). CSCI 500 Graduate Orientation and CSCI 566 Software Engineering Project may not be used as electives. Only three credits of CSCI 591 Directed Studies may be used as an elective.
  3. Thesis (6 credits).
  4. Successful completion of a written comprehensive examination in the four areas.
  5. A final oral examination, which includes a defense of the thesis to the Faculty Advisory Committee, and intersted faculty and students.
  1.  

 

Scientific Computing Doctor of Philosophy (Ph.D.)

Admission Requirements

  1. Master’s degree, normally in an engineering or science related field with an overall graduate GPA of at least 3.25 (on a 4.0 scale), or a Bachelor’s degree, normally in an engineering or science related field with an overall undergraduate GPA of at least 3.00 (on a 4.0 scale) and the Graduate Record Examination General Test.
  2. Prerequisites:
    • Expertise in a high level language and a basic knowledge of data structures.
    • Basic knowledge of formal languages, automata, and computability.
    • Basic knowledge of computer architecture or operating systems.
    • Basic knowledge of calculus, statistics, and linear algebra.
  3. Satisfy the School of Graduate Studies’ Englsh Language Proficiency requirements as listed in the Graduate Academic Information section.

The department recognizes that the prerequisite expertise identified above may be acquired in several ways. Students who do not meet all of the requirements may be admitted to qualified status with the obligation of meeting the remaining requirements early in their graduate study.

Degree Requirements

All students are required to obtain interdisciplinary graduate training. This requirement may be met by:

  1. Taking two course clusters from the computational category and one course cluster from an applications category, or
  2. Taking three course clusters from the computational category and conducting dissertation research in an applications category in the applicable department.
    • Course clusters must be approved by the student’s Faculty Advisory Committee.
    • Students may, with approval of the Computer Science Department’s Graduate Committee, design their own applications category cluster.
    • The student’s Faculty Advisory Committee must include one member from the applicable applications cluster or dissertation research.
    • The Computer Science Department’s Graduate Committee must approve the Faculty Advisory Committee membership.
    • Students who have a degree in a field other than Computer Science are not required to obtain interdisciplinary graduate training. These students are required to take three computational category course clusters. In addition, the student’s Faculty Advisory Committee will comprise only Computer Science faculty.

Students with approved Bachelor’s degree:

  • Complete 51-66 credit hours of coursework.

  • Complete eight of the core courses.

Students with approved Master degree:

  • Complete 27-39 credit hours of coursework.

  • Complete four of the core courses.

Elective courses: CSCI 500 Graduate Orientation and CSCI 566 Software Engineering Project may not be used as electives. Only 3 credits of CSCI 591 Directed Studies may be used as an elective.

Successful completion of a written qualifying examination taken within the first two years of admittance into the program.

CSCI 599Research1-21
CSCI 999Dissertation1-12

Final oral examination, which includes a defense of the dissertation.

Core courses:

CSCI 513Advanced Database Systems3
CSCI 522Theoretical Foundations of Computer Science3
CSCI 532High Performance Computing and Paradigms3
CSCI 543Advanced Artificial Intelligence3
CSCI 551Distributed Operating Systems3
CSCI 555Computer Networks3
CSCI 565Advanced Software Engineering3
CSCI 575Analysis of Algorithms3

Core Clusters:

Computational Clusters:

The computing clusters contain related courses that provide depth of knowledge in specialized computing systems or methods.

  1. Software Engineering Cluster: Software engineering combines the ideas from engineering, management, and math disciplines in order to improve our ability to build complex software systems on time and within the budget. Requires any three of the following courses:
    CSCI 463Software Engineering3
    CSCI 562Formal Specification Methods3
    CSCI 565Advanced Software Engineering3
    CSCI 582Software Architecture3
  2. Data Management Cluster: The cluster enhances a student’s knowledge in data engineering and management. It includes the study of database systems, data management, data mining and data warehousing, digital libraries and information retrieval and systems.
    Requires the following three courses:
    CSCI 455Database Management Systems3
    CSCI 513Advanced Database Systems3
    CSCI 515Data Engineering and Management3
  3. Artificial/Computational Intelligence Cluster: The goal of this track is to provide the student with both classical and advanced topics in artificial and computational intelligence. It includes the study of problem solving methods, approximate reasoning, machine learning, decision making, data mining and other application techniques. Requires the following three courses:
    CSCI 543Advanced Artificial Intelligence3
    CSCI 544Soft Computing3
    CSCI 554Applications in AI/Computational Intelligence3
  4. Distributed Systems Cluster: The goal for this track is to provide the student with an understanding of the hardware technologies (hardware, network, and storage devices) required to develop a machine suitable for high performance computing. Requires the following three courses:
    CSCI 427Advanced Data Communications3
    CSCI 551Distributed Operating Systems3
    CSCI 555Computer Networks3
  5. High Performance Computing Cluster: The cluster provides an understanding of the system architecture (hardware, network, and storage devices) and the software technologies (MPI, PVM, and Java) required to create a system capable of high performance computing. Requires the following three courses:
    CSCI 452Operating Systems II3
    CSCI 532High Performance Computing and Paradigms3
    CSCI 575Analysis of Algorithms3
  6. Graphics and Visualization Cluster: The goal of this track is for the student to master the OpenGL graphics library, to develop a working understanding of signal and image processing techniques, and to be able to apply those skills to the visualization of results generated by complex computer simulations. Requires the following three courses:
    CSCI 446Computer Graphics I3
    CSCI 448Computer Graphics II3
    CSCI 547Scientific Visualization3
  7. Modeling and Simulation Cluster: In this cluster the student will study the various techniques for developing mathematical models and software simulations to predict the behavior of complex physical phenomena. Requires the following three courses:
    MATH 460Mathematical Modeling3
    CSCI 445Mathematical Modeling and Simulation3
    CSCI 545Discrete Dynamical Systems Modeling and Simulation3
Application Clusters

The application clusters provide exposure to specific scientific disciplines that commonly make use of scientific computing methods. In addition to the clusters listed here, other clusters may be defined by the Faculty Advisory Committee with approval of the Computer Science Department’s Graduate Committee.

  1. Computational Mathematics Cluster: This cluster provides an understanding of the computational methods used to solve complex mathematical problems on a digital computer. Requires three graduate level mathematics courses. Possible courses are:
    MATH 461Numerical Analysis3
  2. Computational Chemistry Cluster: This cluster provides an understanding of the mathematical tools used to solve several major classes of problems in modern theoretical chemistry on a digital computer. Requires three graduate level chemistry courses. Possible courses include:
    CHEM 470Thermodynamics & Kinetics3
    CHEM 471Quantum Mechanics & Spectroscopy3
    CHEM 530Chemical Thermodynamics3
    CHEM 534Quantum and Computational Chemistry3
  3. Computational Physics Cluster: This cluster provides an understanding of the mathematical tools used to solve current problems in modern physics on a digital computer. Requires the following courses:
    PHYS 402Computers in Physics3
    PHYS 509Methods of Theoretical Physics3
    Select one of the following:3
    Introduction to Astrophysics
    Introduction to Astrophysics II
    Methods of Theoretical Physics
    Solid State Physics
    Solid State Physics II
    Quantum Mechanics
    Quantum Mechanics
    Theory Electricity Magnetism
    Theory of Electricity and Magnetism
    Statistical Physics
    Analytical Mechanics
  4. Atmospheric Sciences Cluster: This cluster provides an understanding of the mathematical tools used to solve several major classes of problems in modern atmospheric sciences on a digital computer. Requires the following courses:
    ATSC 505Advanced Atmospheric Dynamics3
    ATSC 530Numerical Weather Prediction3
    Select one of the following:3
    Atmospheric Data Analysis
    Measurement Systems
    Statistical Methods in Atmospheric Science
    Advanced Surface Transportation Weather
    Current/Special Topics in Meteorology

Courses

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.

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.

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-3 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.

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.

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. 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.

CSCI 996. Continuing Enrollment. 1-12 Credits.

CSCI 997. Independent Study. 2 Credits.

CSCI 998. Thesis. 1-9 Credits.

CSCI 999. Dissertation. 1-12 Credits.

F,S,SS.


Undergraduate Courses for Graduate Credit

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, 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. S, odd years.

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. F,S.

Office of the Registrar

Tel: 701.777.2711
1.800.CALL.UND
Fax: 701.777.2696

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