This is an archived copy of the 2014-15 catalog. To access the most recent version of the catalog, please visit http://bulletin.ndsu.edu.

Computer Science (CSCI)

CSCI 114. Microcomputer Packages. 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 116, not both.

CSCI 116. Business Use of Computers. 4 Credits.

Exploration of how microcomputers are used in business. Use of word processing, spreadsheet, database, graphing, and telecommunication applications. Credit awarded only for CSCI 114 or CSCI 116, not both.

CSCI 122. Visual BASIC. 3 Credits.

Introduction to programming in the BASIC/Visual BASIC language.

CSCI 125. Beginning COBOL. 3 Credits.

Introduction to programming in the COBOL language.

CSCI 126. Beginning FORTRAN. 3 Credits.

Introduction to programming in the FORTRAN language. Prereq: MATH 103 or MATH 107.

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.

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

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.

CSCI 227. Computing Fundamentals I. 3 Credits.

Two-semester sequence focused on problem solving and writing computer programs in a modern high-level programming language in a state-of-the-art programming environment. Second semester includes an introduction to the object-oriented programming paradigm. Prereq: MATH 103 or MATH 107.

CSCI 228. Computing Fundamentals II. 3 Credits.

Two-semester sequence focused on problem solving and writing computer programs in a modern high-level programming language in a state-of-the-art programming environment. Second semester includes an introduction to the object-oriented programming paradigm. Prereq: CSCI 227.

CSCI 275. Digital Systems I. 3 Credits.

Introduction to number systems, combinational circuits, and sequential circuits. 3 lectures. Prereq: MATH 105. Cross-listed with ECE 275. F, S.

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. Study Abroad. 1-15 Credits.

CSCI 294. Individual Study. 1-5 Credits.

CSCI 299. Special Topics. 1-5 Credits.

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. Prereq: CSCI 228.

CSCI 313. Software Development for Games. 3 Credits.

This course provides students with an understanding of agile software development. Students work in small teams to use an agile methodology to develop a computer game. Prereq: CSCI 213.

CSCI 315. System Analysis and Design. 3 Credits.

Introduction to the front end of the software development life cycle. Includes various modern concepts, techniques, and tools for analyzing and designing well-structured software systems. Prereq: CSCI 160.

CSCI 316. System Testing and Maintenance. 3 Credits.

Introduction to the back end of the software development life cycle. Includes various modern concepts, techniques, and tools for testing and maintaining software systems. Prereq: CSCI 315.

CSCI 336. Theoretical Computer Science II. 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 335.

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

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. Prereq: CSCI 213.

CSCI 373. Assembly Programming. 3 Credits.

Machine language, assembly language, and related hardware concepts, assembly language programming, macros and subroutines, system facilities and macros. Prereq: CSCI 160. Cross-listed with ECE 373.

CSCI 374. Computer Organization and Architechure. 3 Credits.

Organization and structure of the major sections of a computer: CPU, memory, and I/O system organization and implementation issues. Prereq: CSCI 213. Cross-listed with ECE 374.

CSCI 379. Study Tour Abroad. 1-6 Credits.

CSCI 391. Seminar. 1-3 Credits.

CSCI 392. Study Abroad. 1-15 Credits.

CSCI 394. Individual Study. 1-5 Credits.

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

CSCI 399. Special Topics. 1-5 Credits.

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 161. {Also offered for graduate credit - see CSCI 613.}.

CSCI 415. 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 313, CSCI 366.

CSCI 418. 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 426. Introduction to Artificial Intelligence. 3 Credits.

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

CSCI 428. Computational Techniques for Environmental Sustainability. 3 Credits.

This course covers computational technology that is relevant for work in sustainability. Geo-spatial data management, statistical concepts for data mining, and computational modeling techniques, are discussed in the context of environmental sustainability. Prereq: CSCI 161. {Also offered for graduate credit - see CSCI 628.}.

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 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 448. Digital Image Processing. 3 Credits.

Introduction to fundamental principles and techniques of digital image processing; image enhancement, image compression, and image analysis. Emphasis on hands-on experience in using software development packages and implementation of various image processing algorithms. Prereq: CSCI 372, MATH 166. {Also offered for graduate credit - see CSCI 648.}.

CSCI 450. Cloud Computing. 3 Credits.

The course discusses various topics and technologies related to Cloud Computing. Topics include distributed system models and enabling technologies, computer cluster, virtual machines, design of cloud computing platforms, cloud programming and software environments. Prereq: CSCI 372. {Also offered for graduate credit - see 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 454. 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 453, STAT 367. {Also offered for graduate credit - see CSCI 654.}.

CSCI 458. Microcomputer Graphics. 3 Credits.

Information on the techniques by which computers generate images of 2 and 3D objects. Principles to guide the use of computer graphics to enhance human-computer interaction. Prereq: CSCI 372, MATH 146 or MATH 165. {Also offered for graduate credit - see CSCI 658.}.

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. {Also offered for graduate credit - see CSCI 659.}.

CSCI 460. Dynamic Programming. 3 Credits.

Basic principles and algorithms of dynamic programming as applied to sequential decision problems in CS and OR. Prereq: MATH 166. {Also offered for graduate credit - see CSCI 660.}.

CSCI 462. Mobile and Wireless Networks. 3 Credits.

Fundamental concepts and technologies of mobile and wireless networks. Topics include wireless transmission characteristics, mobility management, wireless local area networks, ad hoc and sensor networks, and cellular networks. Prereq: CSCI 366 and CSCI 372. {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 468. Database Systems Design. 3 Credits.

Overview of the maintenance and manipulation of databases. Includes a large project in C++. Prereq: CSCI 366. {Also offered for graduate credit - see CSCI 668.}.

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: CSCI 372.

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.

CSCI 475. 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. Prereq: CSCI 474 or equivalent. {Also offered for graduate credit - see CSCI 675.}.

CSCI 476. Computer Forensics. 3 Credits.

This course 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 474 or instructor approval. {Also offered for graduate credit - see CSCI 676.}.

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 488. Human-Computer Interaction. 3 Credits.

Survey of the methodologies and alternatives used in developing and evaluating human-computer interfaces. Prereq: CSCI 372. {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 372. {Also offered for graduate credit - see CSCI 689.}.

CSCI 491. Seminar. 1-5 Credits.

CSCI 492. Study Abroad. 1-15 Credits.

CSCI 494. Individual Study. 1-5 Credits.

CSCI 496. Field Experience. 1-15 Credits.

CSCI 499. Special Topics. 1-5 Credits.

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. A term paper for graduate students. {Also offered for undergraduate credit - see CSCI 413.}.

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 626. Introduction to Artificial Intelligence. 3 Credits.

Introduction to artificial intelligence for undergraduates. Includes basic AI concepts and techniques. {Also offered for undergraduate credit - see CSCI 426.}.

CSCI 628. Computational Techniques for Environmental Sustainability. 3 Credits.

This course covers computational technology that is relevant for work in sustainability. Geo-spatial data management, statistical concepts for data mining, and computational modeling techniques, are discussed in the context of environmental sustainability. {Also offered for undergraduate credit - see CSCI 428.}.

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 648. Digital Image Processing. 3 Credits.

Introduction to fundamental principles and techniques of digital image processing; image enhancement, image compression, and image analysis. Emphasis on hands-on experience in using software development packages and implementation of various image processing algorithms. {Also offered for undergraduate credit - see CSCI 448.}.

CSCI 650. Cloud Computing. 3 Credits.

The course discusses various topics and technologies related to Cloud Computing. Topics include distributed system models and enabling technologies, computer cluster, virtual machines, design of cloud computing platforms, cloud programming and software environments. {Also offered for undergraduate credit - see 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 658. Microcomputer Graphics. 3 Credits.

Information on the techniques by which computers generate images of 2 and 3D objects. Principles to guide the use of computer graphics to enhance human-computer interaction. {Also offered for undergraduate credit - see CSCI 458.}.

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 660. Dynamic Programming. 3 Credits.

Basic principles and algorithms of dynamic programming as applied to sequential decision problems in CS and OR. {Also offered for undergraduate credit - see CSCI 460.}.

CSCI 662. Mobile and Wireless Networks. 3 Credits.

Fundamental concepts and technologies of mobile and wireless networks. Topics include wireless transmission characteristics, mobility management, wireless local area networks, ad hoc and sensor networks, and cellular networks. {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 668. Database Systems Design. 3 Credits.

Overview of the maintenance and manipulation of databases. Includes a large project in C++. {Also offered for undergraduate credit - see CSCI 468.}.

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 676. Computer Forensics. 3 Credits.

This course 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 476.}.

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 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 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. Advanced Intelligent Systems. 3 Credits.

This course acquaints students with intelligent systems to provide them with working knowledge for building these systems. The course describes expert systems, fuzzy logic, neural networks, evolutionary computation, swarm intelligence, and multi-agent systems.

CSCI 737. System Simulation. 3 Credits.

Systems, models, discrete event simulation models, queuing systems, fundamental statistics of simulation. Prereq: CSCI 653.

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 theDigital 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 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 802. Performance Evaluation. 3 Credits.

Examination of basic techniques used to evaluate multi-programming systems. Both queuing models and other analytical approaches are constructed with simulation and direct measurements of actual systems.

CSCI 808. Foundations of Programming. 3 Credits.

Introduction to formalisms, in which computer programs are considered as mathematical objects, including weakest precondition and predicate calculus.

CSCI 822. Compiler Construction. 3 Credits.

Design and structure of complex grammars, lexical analysis, parsers, semantic data structures, and code generating and optimization. Construction of a simple compiler.

CSCI 834. Expert Systems. 3 Credits.

Examination of types of expert systems, their powers and limitations. Students write their own expert 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 861. Integer Programming. 3 Credits.

Integer linear programs and modeling, theory and algorithms, duality and relaxation, cutting plane and branch-and-bound methods, combinational problems, total unimodularity, matching and matroids. Prereq: CSCI 653.

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 879. Advanced Data Mining. 3 Credits.

Advanced data mining includes in-depth coverage of Association Rule Mining (ARM), Classification and Clustering. The course is designed for those interested in doing research in data mining. Prereq: CSCI 679.

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 899. Doctoral Dissertation. 1-15 Credits.