Florida State University Graduate Bulletin 2007-2009

Department of Computer Science

College of Arts and Sciences

Chair: David Whalley; Professors: Aggarwal, Baker, Burmester, Gallivan, Hawkes, Kohout, Mascagni, Whalley; Associate Professors: Banks, Liu, Schwartz, Tyson, Van Engelen, Yasinsac, Yuan; Assistant Professors: De Medeiros, Duan, Kumar, Srinivasan, Wang; Courtesy Professors: Conrad, Desmedt; Computing Resources Manager: Langley; Associates in Computer Science: Baldauf, Ford, Langley, Myers; Assistants in Computer Science: Chang, Lacher, Stoecklin; Assistant Scholar/Scientist: Le Van; Professors Emeriti: Lacher, Levitz

In computer science education, whether graduate or undergraduate, currency is essential. Computer science is an exceptionally fast-moving field, where knowledge is subject to rapid obsolescence and ideas progress swiftly from research to practice. The department, therefore, seeks to offer technical instruction that keeps on the cutting edge of new developments, while simultaneously providing each student with a core of intellectual tools that will never become obsolete. The department views skills in communication, mathematics, and algorithmic reasoning as central and the understanding of underlying principles as more important than familiarity with specific technical products. Still, direct hands-on experience is essential to mastering these skills and principles. If students are to be adequately prepared for careers in computer science, they should have extensive experience with machines and software that are state-of-the-art.

The Department of Computer Science offers graduate programs leading to the master of science and doctor of philosophy degrees. The department has a number of active research programs in a) core disciplines such as programming languages, compilers, real-time systems, networks, parallel computation, databases, fault tolerance, and foundations; b) scientific and engineering applications areas, including scientific problem solving environments and large-scale scientific computation and databases; c) computer and network security, including cryptography; and d) other areas, including neural networks, expert networks and fuzzy sets and systems. These research programs enjoy external support from agencies ranging from the National Science Foundation to the private sector.

Several research institutes and research centers have been established at the University. Some of our faculty members work closely with one of these, the School of Computational Science (SCS.) The SCS conducts university-based multidisciplinary research to develop new algorithms and numerical methods to exploit various supercomputer architectural characteristics. Partially funded by the U.S. Department of Energy, SCS consists of scientists, postdoctoral research fellows, graduate students, and supporting technical and administrative staff.

The Department of Computer Science has a full range of computing facilities available for a variety of instructional and research needs. Faculty and graduate students share high-performance workstations, file servers, and compute servers. Students and faculty whose research requires higher computational power have access to a variety of state-of-the-art machines, including supercomputers and computer clusters, across the University.

Other affiliated research laboratories include the following:

The Security and Assurance in Information Technology (SAIT) Laboratory is dedicated to synthesis of education and research through the combined focus on theory and application of information security techniques.

The Architecture and Compilers for Embedded Systems (ACES) Laboratory investigates a wide variety of issues related to embedded systems architecture. Tools are constructed to assist compiler writers in optimization and retargeting.

The Center for Applied Vision and Imaging Sciences (CAVIS) conducts research motivated by psychophysical data and neurophysiological findings to develop models for real-world problems.

The Large-Scale Experimental Network and Systems Laboratory investigates issues related to QoS routing, communication algorithms, and message passing libraries.

The Florida Cybersecuirty Institute conducts research in the areas of cybersecurity and cybercrime.

Other active research groups subjects include the following: brain imaging, realistic illumination, Web-based 3D simulation, tools for distributed applications, tools for weather forecasting, probabilistic networks, knowledge-based management decision tools, random number generation, Monte Carlo and Quasi-Monte Carlo methods, grid-based computing, POSIX/Ada Real-time systems, application of fuzzy relations and non-classical logics, modeling and simulation environments.

Requirements

Please review all college-wide degree requirements summarized in the "College of Arts and Sciences" chapter of this Graduate Bulletin.

Please refer to http://www.cs.fsu.edu/academics for the most current information.

A student who proposes to do graduate work in the department is required to take the aptitude test of the Graduate Record Examinations (GRE) and make a minimum combined score of 1100 with a minimum of 650 on the quantitative aptitude part.

Unless specifically admitted into the part-time graduate program, all students are required to maintain full-time enrollment (excluding Summer) in courses related to their program of studies throughout the entire program of study (except the term of graduation.) The student must receive a grade of "B–" or better on all graduate courses counting toward the graduate degree.

All candidates for doctoral degrees in the department are required to participate in teaching activities at some time during their graduate careers unless waived by the department chair. All students participate in an exit interview with the chair or associate chair during the term of graduation.

Master's Degree

The department offers three majors at the master's level: computer science, information security, and software engineering. Each major offers thesis, project and course-based options.

Upon admission to the master of science (MS) program, students automatically are placed in the computer science major. Once enrolled, a student interested in one of the specialized majors then may apply to that major for admission. However, all DoD and NSF scholarship for service students are placed in the Information Security track upon admission.

In all majors, a student must complete thirty-two (32) semester hours in computer science courses numbered 5000 or above, including approved CIS 5930 and CIS 6930. Supervised teaching, supervised research, seminars, directed individual study, and courses with prefix CGS are excluded. As part of the thirty-two (32) semester hours, each student is required to take CIS 5935, Introductory Seminar on Research (2), and at least one course from each of the following three core areas to satisfy the area requirements:

Software

CEN 5035 Software Engineering (3)

COP 5570 Advanced Unix Programming (3)

COP 5621 Compiler Construction (3)

Systems

CDA 5155 Computer Architecture (3)

CEN 5515 Data and Computer Communications (3)

COP 5611 Operating Systems (3)

Theory

COT 5310 Theory of Automata and Formal Languages (3)

COT 5405 Advanced Algorithms (3)

COT 5507 Analytical Methods (3)

Additional course requirements are associated with the specialized majors.

Information Security Major

A student in the information security major is required to take the following courses; those marked with a "*" also satisfy the area requirements:

CEN 5515 Data and Computer Communications (3)*

CIS 5357 Network Security, Active and Passive Defenses (3)

CIS 5370 Computer Security (3)

CIS 5371 Cryptography (3)

CIS 5930 Applied Security (3)

plus one of the following courses:

CDA 5140 Fault Tolerance and Reliability (3)

COP 5570 Advanced Unix Programming (3)*

COP 5611 Operating Systems (3)*

COT 5310 Theory of Automata and Formal Languages (3)*

COT 5405 Advanced Algorithms (3)*

COT 5410 Complexity of Algorithms (3)

Please refer to http://www.cs.fsu.edu/academics for admission details.

Software Engineering (SE) Major

A student in the software engineering (SE) major is required to take CEN 5035, Software Engineering (3), which also satisfies the software area requirement. A plan of study will be developed by the student and the major professor. A student in this major must have a minimum of one year of full-time equivalence of documented software engineering experience involving actual work as a salaried member of a software development team. This major is currently offered only at the Panama City campus.

Please refer to http://www.cs.fsu.edu/current/grad for admissions and professional experience details.

Thesis, Project and Course-based Master of Science Degrees

For each major, a student must select one of the three options (thesis, project, or course-based) to complete the degree. Each option has a specific number of required courses as well as other requirements, as described below.

Thesis Option

In any major, a student under the thesis option must take, in addition to CIS 5935, Introductory Seminar on Research (2), eight (8) courses (twenty-four [24] semester hours) at or above the 5000 level, plus at least six (6) semester hours of CIS 5970r, Thesis. At most, six (6) semester hours of CIS 5970r may be counted toward the required thirty-two (32) semester hours for the Master of Science (MS) degree. The eight (8) courses must include at least one (1) course from each core area as described above. Approved CIS 5930/6930 courses are counted among these, but supervised teaching, supervised research, seminars, directed individual study (DIS), and CIS 5915 may not be included. The thesis is defended by registering for CIS 8976, Master's Thesis Defense (0).

The student in the thesis option is required to propose and create an individual thesis topic of appropriate focus, size and complexity and to write a document discussing it. The thesis is to be written in accordance with the University standards. Upon completion, a thesis must be defended successfully to the department in an open forum and be approved by the major professor and supervisory committee. An electronic version of the thesis must be submitted to the departmental webmaster and the Office of Graduate Studies.

Project Option

In any major, a student under the project option must take, in addition to CIS 5935, Introductory Seminar on Research (2), nine (9) courses (twenty-seven [27] semester hours) at or above the 5000 level, plus at least three (3) semester hours of CIS 5915r, Graduate Software Project. At most three (3) semester hours of CIS 5915 may be counted toward the required thirty-two (32) semester hours for the Master of Science (MS) degree. The nine (9) courses must include at least one from each of the core areas described above. Approved CIS 5930/6930 courses are counted among these, but supervised teaching, supervised research, seminars, directed individual study (DIS), and CIS 5970 may not be included. The student also must register for CIS 8974, Master's Project Defense (0), to defend the project. An electronic version of the project must be submitted to the departmental webmaster.

Course-based Option

In any major, a student under the course-based option must take, in addition to CIS 5935, Introductory Seminar on Research (2), ten (10) courses (thirty [30] semester hours) at or above the 5000 level, including at least one course from each of the three core areas detailed above. A student must have an average of at least "B+" for the three required core area courses in order to graduate under the course-based option. Approved CIS 5930/6930 courses count toward the 10-course requirement, but supervised teaching, seminars, directed individual study (DIS), supervised research, CIS 5915 and CIS 5970 may not be included. A student must also register for CIS 8966, Master's Comprehensive Examination (0).

Supervisory Committee

For the thesis and project options, it is the student's responsibility to form a supervisory committee regardless of his or her selected major. No later than the beginning of work on the thesis or project, the student must secure the consent of an eligible computer science faculty member to serve as the major professor. In consultation with the major professor, the student must secure the consent of at least two additional graduate faculty members to serve as the supervisory committee, chaired by the major professor.

Doctoral Degree

The doctor of philosophy is regarded as a research degree and is awarded on the basis of accomplishment in a recognized specialty in computer science. Such accomplishment should include scholarly mastery of the field, significant contributions to new knowledge in the field, and written and oral communication skills appropriate for the field.

The requirements for the PhD include course work; a master's degree in computer science or equivalent; passing the preliminary examination; successfully defending a dissertation prospectus; and successfully defending a dissertation. A PhD student may be admitted to candidacy only after completing the master's degree, or the equivalent, and passing the doctoral preliminary exam.

Course Requirements

The doctoral student shall complete at least two (2) courses in each of the three core areas (software, systems, and theory) from those required for the master's degree. Equivalent courses taken at other institutions must be approved by the Portfolio Review Committee. At least twelve (12) courses beyond those required for a BS degree in computer science must be taken at the 5000- or 6000-level. Details are given at http://www.cs.fsu.edu/academics. The doctoral student also must complete at least twenty-four (24) hours of CIS 6980r, Dissertation. A student may enroll in CIS 6980r only after being admitted to candidacy. Additionally, the student must have completed CIS 5935, Introductory Seminar on Research (2).

Student Portfolio

All students admitted to the program are required to compile and keep current a portfolio containing information relevant to the student's progress in the program, e.g., curriculum vitae, courses taken and grades received, sample programming and writing assignments, any professional publications, and semester activity reports. Guidelines for preparing the portfolio are published by the Department of Computer Science, and are available at http://www.cs.fsu.edu/academics.

The portfolio is evaluated annually by the departmental portfolio evaluation committee. This committee consists of a core that is appointed by the department chair, together with any other department faculty with doctoral directive status who elect to participate. After each annual evaluation, the portfolio evaluation committee will recommend whether the student should continue in the program.

Before a student is admitted to PhD candidacy, the portfolio must be defended orally and include at least one example of writing by the student. This may be a research paper that has been accepted for a conference or journal. It may also be a project paper or thesis whose content and writing are judged by the portfolio evaluation committee to be of publication quality.

Major Professor and Supervisory Committee

As early as is feasible in the student's program, the student should identify an area for dissertation research and secure an informal agreement with a faculty member to serve as the student's major professor. This agreement should include an understanding as to the area and timeline of the dissertation research. This agreement is formalized when the department chair appoints that faculty member to serve in this capacity. In a similar manner the student must secure agreements with, and the chair must approve, the remaining members of the student's supervisory committee. This committee must consist of: two (2) additional faculty members of the department; and one (1) member of the graduate faculty in another department. In addition, the chair will appoint a member to serve as departmental representative. All members must hold doctoral directive status.

The supervisory committee is responsible for approving an individual program of study, possibly including additional course requirements, and verifying that the student satisfies the following departmental requirements.

Student Portfolio Defense

All students admitted to the program but not yet admitted to candidacy, are required to compile and keep current a portfolio containing information relevant to the student's progress in the program. In particular, the results of taking the GRE Computer Science area exam must be included. Other required contents of the portfolio, submission dates, and guidelines for preparing the portfolio are at http://www.cs.fsu.edu/academics/.

The portfolio of any student not yet in candidacy is reviewed annually by the departmental Portfolio Review Committee (PRC). This committee consists of a core that is appointed by the Department Chair and normally meets in the spring. Feedback to the student on the contents of the portfolio and on progress toward admission to candidacy is provided after each review.

The final review occurs in conjunction with the defense of the portfolio. Thus, when a student and his or her major professor agree the portfolio is complete, the student should register for the Doctoral Qualifying Exam, CIS 8962 (0) for the next semester. At most, students can register for the Qualifying Exam twice. A student either passes or fails; there is no conditional pass.

Area Examination

The area examination (CIS 8964) covers the student's intended area of research. It has both written and oral parts. Both parts of the examination are conducted by the student's supervisory committee, which may delegate the responsibility to a larger area committee. It is strongly recommended that the student write an area survey paper as part of this exam. The oral part is open to all department faculty members having doctoral status who elect to participate. The oral part of the examination is held in an open forum that other students are invited to attend and is followed by a closed session if the committee so desires. Students who do not pass the area exam may be advised to retake it at a later time. A student who changes to a new research area after having previously passed this exam will be required to stand for a further exam over the new area. At most, a student can fail the exam once.

Normal expectations are that the portfolio defense occurs prior to taking the area exam or at least in the same semester as the area exam. A doctoral student should have taken the area exam within two semesters (including summer) of passing the QE.

Admission to Candidacy

In order to be advanced to candidacy for the doctoral degree, the student must:

Prospectus

The student must formally propose the research to comprise the dissertation to his or her supervisory committee in the form of a prospectus. The prospectus should consist of much of the background work for the dissertation, including:

  1. A thorough literature review
  2. Theory, preliminary computational results, and/or bases for the feasibility of the research
  3. A proposal for research to be completed for the dissertation

In addition, as an appendix to the prospectus, publication plans should be presented. The research proposed should make clear and substantial advances in the state of knowledge in computer science, and the publication plans should be designed to affirm the quality and nature of the research. Publication should be in nationally recognized conferences and journals in the field. The prospectus must be successfully defended before the student's supervisory committee in an open meeting.

Dissertation

After completing the research proposed in the prospectus, the student must write a dissertation. The dissertation represents the fulfillment of the proposals made in the prospectus. The dissertation document must comply with all current University standards for style. The dissertation must be successfully defended before the student's committee in an open meeting. The dissertation must be successfully defended within five (5) years of passing the preliminary exam.

Definition of Prefixes

CAP—Computer Application Development

CDA—Computer Design/Architecture

CEN—Computer Software Engineering

CGS—Computer General Studies

CIS—Computer Science and Information Systems

CNT—Computer Networks

COP—Computer Programming

COT—Computing Theory

Graduate Courses

CAP 5415. Principles and Algorithms of Computer Vision (3). Prerequisite: COP 4530. This course examines the basic computational principles and algorithms to extract information from images and image sequences. Topics include imaging models, linear and nonlinear filtering, edge detection, stereopsis and motion estimation, texture modeling, segmentation and grouping, and deformable template matching for recognition.

CAP 5605. Artificial Intelligence (3). Prerequisite: COP 4530. Introduction, representing knowledge, controlling attention, exploiting constraints, basic LISP programming, basic graph searching methods, game-playing and dealing with adversaries, understanding vision, theorem proving by computer, computer programs utilizing artificial intelligence techniques.

CAP 5615. Artificial Neural Networks (3). Prerequisite: Senior or graduate standing in science or engineering. Introduction to various aspects of artificial neural networks, with emphasis on elements of design of trainable systems. Topics include linear and nonlinear neurons, linear associators, multilayer networks, and the back-prop algorithm. Theory, simulation techniques, and applications will be covered.

CAP 5632. Automated Reasoning (3). This course covers the principles of automated reasoning and mechanical theorem proving. Topics include propositional logic, predicate logic, Skolem standard forms, Herbrand's Theorem, various resolution principles and methods, the logical basis of Prolog, and the interactive theorem prover Otter.

CAP 5638. Pattern Recognition (3). Prerequisites: Knowledge of probability and at least one programming language. Applications of mathematical tools, in particular, probabilistic, algebraic, and linguistic tools, to problems in pattern recognition and classification. Feature selection procedures, syntactic pattern recognition. Applications of fuzzy set theory to pattern recognition and classification.

CDA 5140. Fault Tolerance and Reliability (3). Prerequisite: CDA 5155. Basic definitions; self-checking circuits; error detection measures; interconnection networks; test generation and testability; distributed fault tolerance systems; software fault tolerance; fault tolerance and VLSI; error recovery.

CDA 5155. Computer Architecture (3). Prerequisite: CDA 3101. Computer system components; microprocessor and minicomputer architecture; stack computers; parallel computers; overlap and pipeline processing; networks and protocols; performance evaluation; architecture studies of selected systems.

CEN 5000. Knowledge Management and Data Engineering (3). Prerequisite: COP 5710. A survey of techniques and tools representing the transition from database management to knowledge management; database architecture and models; fuzzy databases; construction of knowledge bases.

CEN 5035. Software Engineering (3). Prerequisites: CEN 4010, COP 4020, 4531. Survey of software engineering and a detailed study of topics from requirements analysis and specification, programming methodology, software testing and validation, performance and design evaluation, software project management, and programming tools and standards.

CEN 5055. Project Development (3). Prerequisite: CEN 5035. This course deals with the planning, design, validation and implementation of a large scale project using IEEE deliverables, state-of-the-art software engineering techniques, and analysis and design project reviews and evaluations prior to implementation in the Graduate Software Project.

CEN 5064. Advanced Software Design (3). Prerequisites: CEN 5035. This course concentrates on the design of software systems after requirements engineering has been completed. The course offers education in techniques such as architectural design, pattern integration, and refactorings.

CEN 5066. Software Engineering in Graphics (3). Prerequisite: CAP 4730. Software engineering techniques as applied to graphical concepts based on ISO 7942, the Graphical Kernal Systems (GKS). Particular topics include binding times, concept coupling, segments, transformations, passive/active graphics, clipping. A class project is required.

CEN 5515. Data and Computer Communications (3). Prerequisite: CDA 3101. Overview of networks; data communications principles; data link layer; routing in packet switched networks; flow and congestion control; multiple access communication protocols; local are network protocols and standards; network interconnection; transport protocols; integrated services digital networks (narrowband and broadband); switching techniques and fast packet switching.

CEN 5720. Computer-Human Interaction (3). Prerequisite: COP 4530. Systematic analysis of user needs and activities from the point of view of the actual user. Design and implementation of effective, user-friendly software. Methods of analysis. Performance and interface of programs. User anxiety and convenience.

CGS 5067. Advanced Navigating the Internet (3). (S/U grade only.) Basic Unix; World Wide Web, Netscape, Lynx, UseNet News, Wais, Mime, Netfind, Traceroute, X.500 directory services, Xv, and HTML programming. Projects include developing Internet tours via the World Wide Web and developing WWW pages for government agencies, community organizations, and businesses. Topology of Florida State University's campus network and the Tallahassee Metropolitan Network.

CGS 5266. Digital Design (3). (S/U grade only.) Prerequisite: MAD 2104 or 3107. For graduate non-majors and graduate majors needing foundational work in computer sciences; credit may not be applied toward a graduate degree in computer science. Boolean algebra and switching functions; gates and IC modules; combinational systems, their simplification and decomposition; symmetric functions; threshold logic; sequential machines; analysis and synthesis; design of digital networks and logic systems.

CGS 5267. Principles of Computer Organization (3). (S/U grade only.) Prerequisites: COP 3330; MAD 2104 or 3107. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Basic computer structure and design, register transfer and micro operations, central processor organization, microprogramming, arithmetic processor design, input-output, memory organization, virtual memory, microprocessors and microcomputer architecture.

CGS 5275. Assembly and Machine Language (2). (S/U grade only.) Prerequisite: COP 4530. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Basic machine organization; number systems and data representation; assembly language programming, including calling conventions for procedures; floating point arithmetic; interrupts and exception handling; advanced architectural features and alternative architectures.

CGS 5409 Object-Oriented Programming in C++ for Non-majors (2). Topics include basics of C++ language, objects and classes, programming with classes, constructors and destructors, dynamic memory allocation, function and operator overloading, master classes, the class iostream, base and derived classes, and templates. May not be applied toward a degree in computer science.

CGS 5425. Object-Oriented Programming with Data Structures (3). (S/U grade only.) Prerequisites: COP 3330; MAD 2104 or 3107. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Structured and object-oriented programming; invariant relations, stepwise refinement; text processing, internal sorting methods, linear tables, pointers and linked data structures, recursive programming and recursion elimination, sequential file processing; trees and graphs; program verification and running time analysis; application of concepts through programming projects.

CGS 5426. Programming Language Concepts (3). (S/U grade only.) Prerequisites: COP 3331, 4530. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. A survey of programming languages and language features and an introduction to compilers. Languages to be discussed include FORTRAN, Pascal, Ada, PL/1, APL, and LISP. An oral presentation is required.

CGS 5427. Algorithm Design and Analysis (3). (S/U grade only.) Prerequisites: COP 4530; MAD 2104, or 3107. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Techniques for the analysis of computer algorithms; examples of well-designed algorithms and associated data structures; principles of algorithm design and application of programming projects.

CGS 5428. Relational Database Theory (3). (S/U grade only.) Prerequisite: COP 3330; MAD 3104 or 3107. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Basic file organization methods, indexed files, multi-key processing; architecture of database management systems; relational, hierarchical network, and semantic database models; normalization, distributed databases and file systems; practical use of a DBMS and the building of a database application.

CGS 5429. Introduction to Computer Theory (3). (S/U grade only.) Prerequisites: COP 3331; MAD 3105 or 3107. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Regular expressions; regular, context-free, context-sensitive, and unrestricted grammars; foundations of language theory; finite automata and linear grammars; pushdown automata; Turing machines and non-solvability.

CGS 5469. FORTRAN for Graduate Non-specialists (3). (S/U grade only.) Prerequisite: A course in differential integral calculus. General introduction, computers and systems, rudiments of FORTRAN, basic data types, arithmetic expressions and assignment statements, basic control statements, arrays, problem solving by computer, subprograms, further data types, formatted input/output.

CGS 5765. Principles of Operating Systems (3). (S/U grade only.) Prerequisites: CDA 3101; COP 4530. For graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Design principles of batch multi-programming and time-sharing operating systems. Linking, loading, input-output systems, interacting processes, storage management, process and resource control, file systems.

CIS 5357. Network Security, Active and Passive Defenses (3). Prerequisites: COP 4530; MAD 2104 or 3107, or permission of instructor. This course covers threats to computer networks, network vulnerabilities, techniques for strengthening passive defenses, tools for establishing an active network defense, and policies for enhancing forensic analysis of crimes and attacks on computer networks. Topics include private and public key cryptography, digital signatures, secret sharing, security protocols, formal methods for analyzing network security, electronic mail security, firewalls, intrusion detection, Internet privacy, and public key infrastructures. A research paper or project is required.

CIS 5370. Computer Security (3). Prerequisites: CGS 3408; COP 3502, 4610, or permission of instructor. Topics in this course include computer security threats and attacks, covert channels, trusted operating systems, access control, entity authentication, security policies, models of security, database security, administering security, physical security and TEMPEST, and brief introductions to network security and legal and ethical aspects of security. A research paper or project is required.

CIS 5371. Cryptography (3). Prerequisite: MAD 3105. This course addresses issues of modern cryptography covering theory and practice. Algorithms such as the RSA, ElGamal, and the Digital Signature Standard are covered in depth.

CIS 5406. Computer and Network Administration (3). Prerequisite: COP 4610. UNIX user commands and shell programming. Problem solving and diagnostic methods, system startup and shutdown, device files and installing devices, disk drives and file systems, NFS, NIS, DNS, sendmail. Managing a WWW site, managing UNIX software applications, system security, performance tuning. Legal and professional issues, ethics and policies.

CIS 5900r. Directed Individual Study (1–4). (S/U grade only.) May be repeated to a maximum of twelve (12) semester hours.

CIS 5910r. Supervised Research (1–5). (S/U grade only.) Cannot be applied to the master's degree. May be repeated to a maximum of five (5) semester hours.

CIS 5915r. Graduate Software Project (1–9). (S/U grade only.) Prerequisite: consent of instructor. May be repeated for a total of no more than twelve (12) semester hours while completing a suitable software project for the master's project option.

CIS 5920r. Colloquium (1). (S/U grade only.) Series of lectures given by faculty and visiting computer scientists. May be repeated up to a maximum of ten (10) semester hours.

CIS 5930r. Selected Topics in Computer Science (1–3). May be repeated to a maximum of twelve (12) semester hours.

CIS 5935. Introductory Seminar on Research (2). (S/U grade only.) A series of lectures given by faculty on the research being conducted by the Department of Computer Science. Other lectures include guidelines on the preparation of the doctoral portfolio, and on the use of library research tools.

CIS 5940r. Supervised Teaching (1–5). (S/U grade only.) May be repeated to a maximum of five (5) semester hours.

CIS 5970r. Thesis (1–9). (S/U grade only.) A minimum of six (6) semester hours of credit is required.

CNT 5415. Applied Computer and Network Security (3). In this course, students familiarize themselves with current and emerging threats to the security of computer systems and networks, including viruses, worms, and network intrusion; and with techniques for the prevention, detection, and recovery from such attacks, such as firewalls, intrusion detection systems, secure coding practices, and others. Attack and defense mechanisms are studied in a systematic way to develop students' practical and analytical skills to identify and correct or mitigate threats to computer systems and networks.

COP 5385. Reactive Systems and Hierarchical State Machines (3). Prerequisites: COP 4530, 4610. This course covers the theory of hierarchical state machines (HSM) and the use of HSM to model and implement reactive systems (RS). Implementations of HSM in C, C++, and Java are explored. HSM are applied for modeling and implementing RS, including real-time, multi-threaded, and embedded systems. Selected articles from the rapidly expanding literature and an advanced project are included. Permission of instructor required for students with credit for CEN 4xxx.

COP 5570. Advanced UNIX Programming (3). Prerequisite: COP 4610. UNIX and C standards, file I/O, file access and attributes, directories, the standard I/O library, systems administration files, the process environment, process control, process relationships, signals, terminal I/O, daemon processes, interprocess communication, and pseudo terminals.

COP 5611. Operating Systems (3). Prerequisites: CDA 3101, COP 4610, and introductory probability or statistics. Design principles of batch, multiprogramming, and time-sharing systems; distributed systems; problems of concurrency.

COP 5621. Compiler Construction (3). Prerequisites: CDA 3101; COP 4020; COT 4420. This course serves as an introduction to compiling, elements of language theory, syntax-directed translation, lexical analysis, symbol tables, LR(k) parsing, intermediate code generation, code optimization, code generation, error detection and recovery. There will also be a number of significant programming projects in this course.

COP 5622. Advanced Topics in Compilation (3). Prerequisite: COT 5300. In-depth study of the following topics: attribute grammars and attribute grammar processors, formal methods of semantic analysis, generalized tree transformers, code selection, analysis and optimization, and error analysis and recovery.

COP 5641. Kernel and Device Driver Programming (3). Prerequisites: COP 4610, 5570, or permission of instructor. This course covers internals of the Linux operating system kernel, including virtual and physical memory management, scheduling, and device drivers. Focus is also placed on kernel modules, hardware interfaces, char and block devices, kernel debugging, interrupt handling, and memory mapping. Laboratory exercises include modifying example modules and project developing a new device driver.

COP 5642. RealTime Systems Theory and Practice (3). Prerequisites: COP 4610 or 5570. This course addresses the theoretical foundations and practical techniques for the design and implementation of real-time computer systems. Topics include applicable scheduling theory, the use of computers for controlling real-time processes and the use of real-time operating system. Laboratory work includes writing software to control a physical device with hard-timing constraints and analysis of scheduling performance by simulation. A term project and report are required.

COP 5725. Database Systems (3). Prerequisites: COP 4020, 4531, 4610, 4710. Use of a generalized database management system; characteristics of database systems; hierarchical, network, and relational models; file organizations.

COP 5818. Distributed Applications Development (3). Prerequisite: COP 3252. Programming of distributed Web applications using Java database connectivity, servlets, Java server pages, remote method invocation, and enterprise Java beans (both session and entity beans); use of the Sun Microsystems Java 2 Enterprise Edition development platform either directly or through an integrated development environment such as IBM's Websphere.

COT 5310. Theory of Automata and Formal Languages (3). Prerequisites: COP 4020; COT 4420. Formal models of computation; automata; formal languages, their relationships, decidable and undecidable problems.

COT 5315. Programming Language Foundations (3). Prerequisites: COP 4020; MAD 3105. Topics in this course include conceptual subtleties in programming languages; formal specification of syntax and semantics; and issues in the design and implementation of programming languages.

COT 5405. Advanced Algorithms (3). Prerequisite: COP 4531. This course covers algorithms, formal proofs of correctness, and time complexity analysis for network flow problems, approximation of NP hard combinatorial optimization problems, parallel algorithms, cache-aware algorithms, randomized algorithms, computational geometry, string algorithms, and other topics requiring advanced techniques for proof of correctness or time/space complexity analysis.

COT 5410. Complexity of Algorithms (3). Prerequisites: COP 4531, MAD 3105 or 3107. Formal methods for the analysis of algorithm complexity, application to specific algorithms, lower bounds, asymptotically optimal algorithms, Reducibilities, NP completeness, and other classifications of hard problems.

COT 5507. Analytic Method in Computer Science (3). Prerequisite: COP 4531. This course teaches computer science students the fundamental discrete mathematics required for serious graduate work in Algorithms and Theoretical Computer Science. It specifically covers topics in recurrent problems, sums, integer functions, elementary number theory, binomial coefficients, special numbers, and generating functions.

COT 5540. Logic for Computer Science (3). Prerequisite: COT 4420. Syntax, semantics, and proof theory of propositional logic and first order languages; prenex normal form; Gentzen systems; resolution for propositional logic; elements of PROLOG and program verification.

CAP 6417. Theoretical Foundations of Computer Vision (3). Prerequisite: CAP 5415. This course covers theoretical foundations of computer vision. By formulating vision as an inference process, approaches to vision are presented and analyzed systematically. Topics include Marr's computational vision paradigm, regularization theory, Bayesian inference framework, pattern theory, and visual learning theories.

CIS 6900r. Directed Individual Study (1–12). (S/U grade only.) May be repeated to a maximum of twenty-four (24) semester hours.

CIS 6930r. Advanced Topics in Computer Science (1–3). May be repeated to a maximum of twelve (12) semester hours.

CIS 6935r. Advanced Seminar in Computer Science (1). This is an advanced seminar in computer science. May be repeated, and duplicate registration allowed during the same term, for a total of 12 semester hours.

CIS 6980r. Dissertation (1–12). (S/U grade only.)

CIS 8962. Doctoral Qualifying Examination (0). (P/F grade only.) May be repeated twice at most.

CIS 8964. Doctoral Preliminary Examination (0). (P/F grade only.)

CIS 8966. Master's Comprehensive Examination (0). (P/F grade only.)

CIS 8974. Master's Project Defense (0). (P/F grade only.)

CIS 8976. Master's Thesis Defense (0). (P/F grade only.)

CIS 8985. Defense of Dissertation (0). (P/F grade only.)