Florida State University 2008-2009 General Bulletin Undergraduate Edition
Department of Computer Science
College of Arts and Sciences
Chair: David Whalley; Professors: Aggarwal, Baker, Burmester, Gallivan, Hawkes, Mascagni, Whalley; Associate Professors: Liu, Schwartz, G. Srinivasan, Tyson, Van Engelen, Yasinsac, Yuan; Assistant Professors: Duan, Kumar, Li, Wang, Zhang; Courtesy Professors: de Medeiros, Desmedt, Evans, Jones; Associates in Computer Science: Baldauf, Lacher, Langley, Myers, Stoecklin, A. Tyson; Assistant in Computer Science: Chang; Professors Emeriti: Kohout, 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 stays 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 undergraduate and graduate programs leading to the Bachelor of Science (BS) and Bachelor of Arts (BA) degrees, and the Master of Science (MS) and Doctor of Philosophy (PhD) 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. Several of our faculty members work closely with one of these, the School of Computational Science (SCS). It was established as a University-based multidisciplinary program 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 students share multiple groups of high-performance workstations, file servers, and computer servers over departmental LANs. Students and faculty whose research requires greater computational power have a variety of such research equipment and may access other machines, including supercomputers and computer clusters, across the University.
Other affiliated research laboratories and research groups 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, Compilers and Embedded Systems (ACES) Laboratory investigates a wide variety of issues related to its namesake fields. Tools are also constructed to assist architects and compiler writers for these investigations.
- The Vision (CAVIS) Laboratory conducts research motivated by psychophysical data and neurophysiological findings to develop models for real-world problems.
- The Large-scale Experimental Networks and Systems (LENS) Group investigates issues in networking and systems such as QoS routing, communication algorithms, overlay networks, performance analysis, and message passing libraries.
- The Florida Cybersecurity Institute (FCI) is a joint venture of the Florida Department of Law Enforcement (FDLE), Florida State University (FSU), and the National White Collar Crime Center (NW3C). It conducts research and educational activities in support of cybersecurity and cybercrime analysis and investigation.
Active research groups also study 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, and modeling and simulation environments.
Degrees Offered
The Department of Computer Science offers programs leading to the Bachelor of Science (BS) and Bachelor of Arts (BA) degrees, the Master of Science (MS) and Master of Arts (MA) degrees, and the Doctor of Philosophy (PhD) degree in Computer Science (CS). At the bachelor and master levels, programs of study are available for those who plan to work toward higher degrees, as well as for students planning on careers as computing professionals.
The department also offers a combined BS/MS degree program, designed for academically strong students who wish to pursue an accelerated program culminating in a BS and a MS degree in computer science. Students who have reached junior status and have at least a 3.5 GPA (overall and in CS/mathematics courses) should contact the departmental adviser for more information.
The department also offers an interdisciplinary BS degree in computational biology in conjunction with the Department of Biological Science. The purpose of this interdisciplinary major is to provide a top-notch educational program for students interested in the areas of computational biology and bioinformatics. The program seeks to achieve two goals: 1) to develop an understanding of the issues associated with developing biologically meaningful computational models, and 2) to give students the broad-based education that is needed to create a set of models directed toward solving a practical biomedical problem.
In addition, the computer science department offers an interdisciplinary BS degree in Computer Criminology. This program teaches students to understand the emerging problem of computer-related crime as well as how computers can assist in the prevention, detection, and apprehension of computer-crime perpetrators.
Accreditation
The undergraduate degree program in computer science, including both the computer science and software engineering majors, is accredited as a computer science degree program by the Computer Accreditation Commission of ABET, 111 Market Place, Suite 1050, Baltimore, MD, 21202-4012; (410) 347-7700. Note that this accreditation is specifically for the computer science degree program and is not applicable to the computational biology degree program or the computer criminology degree program. Note also that the software engineering major within the computer science degree program is not accredited as a software engineering degree program by the ABET Engineering Accreditation Commission.
Distance Learning
The undergraduate degree program in Computer Science is available through Internet-supported distance learning. Certain limitations regarding students seeking admission to upper-division studies in the Computer Science Department apply. For more information contact Florida State University's Office for Distributed and Distance Learning at http://learningforlife.fsu.edu/apps/.
Honors in the Major
The Department of Computer Science offers a program in honors in the major to encourage talented juniors and seniors to undertake independent and original research as part of the undergraduate experience. For requirements and other information, see the "University Honors Office and Honor Societies" chapter of this General Bulletin.
Computer Skills Competency
All undergraduates at Florida State University must demonstrate basic computer skills competency prior to graduation. As necessary computer competency skills vary from discipline to discipline, and each major determines the courses needed to satisfy this requirement. Undergraduate majors in computer science satisfy this requirement by earning a grade of "C" or higher in COP 4530.
State of Florida Common Program Prerequisites
The State of Florida has identified common course prerequisites for this University degree program. Specific prerequisites are required for admission into the upper-division program and must be completed by the student at either a community college or a state university prior to being admitted to this program. Students may be admitted into the University without completing the prerequisites, but may not be admitted into the program.
The following lists the common prerequisites or their substitutions necessary for admission into this upper-division degree program:
- COP XXXX (introductory programming in Ada, C, C++, or PASCAL or equivalent language)
- MAC X311
- MAC X312
- PHY X048/X048L or PHY X048C
- PHY X049/X049L or PHY X049C
- Two science courses (six [6] semester hours) for science majors
College Requirements
Please review all college-wide degree requirements summarized in the "College of Arts and Sciences" chapter of this General Bulletin.
Requirements for the Degree Program in Computer Science
The undergraduate program in computer science is limited access. For each admission cycle (academic year) a minimum GPA is established by the Department of Computer Science. In addition, students must have completed the State of Florida Common Course Prerequisite (MAC X311 and COP XXXX, Introductory Programming in C/C++ or Java) with a grade of "C" or better in order to be considered for entrance. Upon entrance into the program, the student must maintain a 2.35 GPA to remain in good standing in the major.
A student who has accumulated more than five grades below "C" (including grades of "U") in mathematics, statistics, natural science, or computer science courses taken for college credit at Florida State University or elsewhere, whether repeated or not, will not be permitted to continue as a major in the department.
Currently, there are two majors for the CS Bachelor's degree: computer science (CS), and software engineering (SE). A distance-learning version of these majors is offered through the Panama City campus.
Note: The term "major" as used to describe the software engineering program is often called a "track" or "option" in other states or at other universities. In the following listing of requirements, courses that are required for only one major are marked with the major abbreviation in parentheses.
A grade of "C" or better must be earned in each of the following courses: CDA 3100, 3101; CEN 4020, CEN 4021; COP 3014, 3330, 3353, 4020 (CS); 4530, 4531, 4610, 4710; COT 4420(CS);CEN 4425(SE); MAC 2311, 2312; MAD 2104, 3105; SPC 2600; STA 4442.
In addition, the student must complete at least eleven (11) semester hours of computer science electives, at least nine (9) semester hours of which must be at the 4000 level. Additionally, SE major students must take an advanced math elective. For the CS major, one of the 4000 level computer science electives may be replaced with an advanced math elective. The advanced math elective must be a mathematics or statistics course with a prerequisite of calculus or discrete mathematics. One of the computer science electives must cover an additional programming language not presented in the other required course offerings. All CGS courses, individual instruction courses such as CIS 3949r Internship in Computer Science, and CIS 4900 Directed Individual Study will not count toward the CS electives. The student must complete PHY 2048C, 2049C, and three (3) additional semester hours of science in a discipline other than physics. All courses used to satisfy the science requirement must be identified as "For Science Majors" within the Liberal Studies Program (or have such a course as a prerequisite). Approval is to be requested prior to registration for the elective courses. All students are required to complete an exit survey for both the Department of Computer Science and the College of Arts and Sciences during their term of graduation. These forms may be obtained from the Academic Coordinator's Office (Room 203C Love Building). Students following this degree will complete a total of at least one hundred twenty (120) semester hours in order to satisfy all University and major requirements.
The required collateral courses in mathematics, physics, and statistics constitute an acceptable interdisciplinary minor for students in the Computer Science degree program. Students may contact the undergraduate adviser for information concerning other acceptable minors.
Note: These requirements are subject to change. Please refer to http://www.cs.fsu.edu/current/undergrad/ for the most current information.
Requirements for the Degree Program in Computational Biology
The common prerequisites for this program are currently being determined. Lower-division students should complete the 1000 and 2000-level science and calculus courses listed below. The undergraduate program in computational biology has the following requirements. Note that students must complete all applicable university and college requirements. All courses applicable to the major must be completed with a grade of "C" or better.
From the biological sciences, students must complete BSC 2010, BSC 2011, PCB 3063, and PCB 4674, for a total of eighteen (18) hours. In addition, six (6) hours of biological science elective credits must be chosen from: BOT 4394, BSC 2010L, BSC 2011L, BSC 4613, MCB 4403, MCB 4403L, PCB 3134, PCB 3743, PCB 4024, PCB 4233, PCB 4253, and PCB 4843.
From the computer science department, students must complete CDA 3100, COP 3014, COP 3330, COP 3353, and COP 4530, for a total of sixteen (16) hours. In addition, three (3) hours of computer science elective credit must be chosen from: CDA 3101, COP 4531, COP 4710 and COT 4420.
For the capstone courses, students must complete BSC 4933r and CIS 4930r for a total of six (6) hours. In addition, the following must be completed: Mathematics/Statistics: MAC 2311, MAC 2312, MAD 2104 and STA 2171 totaling fifteen (15) hours; Physics: PHY 2048C or PHY 2053C and PHY 2049C or PHY 2054C totaling eight (8) or ten (10) hours; Chemistry: CHM 1045, CHM 1045L, CHM 1046 and CHM 1046L totaling eight (8) hours.
Requirements for the Degree Program in Computer Criminology
The undergraduate program in computer criminology has the following requirements. All students must complete all applicable university and college requirements. All courses applicable to the major must be completed with a grade of "C" or better.
From the computer science department, students must complete the following core: COP 3014, COP 3353, COP 3330 and CDA 3100 totaling ten (10) hours. A total of twelve (12) elective hours must be completed, chosen from CDA 4503, CIS 4360, CIS 4361, CIS 4362, CIS 4407, COP 4342, COP 4530, COP 4610 and COP 4710. The capstone course CIS 4930 must be completed for three (3) credits.
From criminology, students must complete the following core: CCJ 3011, CJE 4610, CJL 4064 and CCJ 4700, totaling twelve (12) hours. A total of nine (9) elective hours must be completed, chosen from CJL 3510, CJE 3110, CCJ 3664, CCJ 4010, CCJ 4209 and CCJ 4610. The capstone course CCJ 4938 must be completed for three (3) credits.
In Mathematics, students must complete MAD 2104 for three (3) hours.
Requirements for a Minor in Computer Science
A minor in computer science consists of twelve (12) semester hours in a specific combination of computer science courses for which the student has obtained written approval in advance from the department. Students must also satisfy stated prerequisites before enrolling in any computer science course. A grade of "C" or better must be earned in each course counted toward the minor.
Definition of Prefixes
CAPComputer Application Development
CDAComputer Design/Architecture
CENComputer Software Engineering
CGSComputer General Studies
CISComputer Science and Information Systems
CNTComputer Networks
COPComputer Programming
COTComputing Theory
Note: Before taking any computer science course, the student must complete with a grade of "C" or better each course prerequisite to that course. Moreover, a student who earns a "C" or better in a course with one or more stated or implied prerequisites may not subsequently earn credit in the prerequisite course(s). For example, a student who has earned a "C" or better in CDA 4150 may not subsequently enroll in CDA 3101 or MAD 3105.
Undergraduate Courses
Note: Certain courses are sometimes offered in a distributed format and as such are available to distance learning students in addition to residential students. Contact the Computer Science Department for details or go to http://www.cs.fsu.edu.
CAP 4601. Introduction to Artificial Intelligence (3). Prerequisite: COP 4530. This first course in Artificial Intelligence (AI) is designed to expose the student to both the breadth and depth of the subject. Topics include problem solving, knowledge and reasoning, acting logically, uncertain knowledge and reasoning, learning, and communicating, perceiving and acting.
CAP 4730. Computer Graphics (3). Prerequisite: COP 4530. Topics include: the fundamental hardware and software elements of computer graphics systems, including intelligent terminals, communication, and graphic languages; cost effective use of interactive graphics; CAD/CAM; office automation; and computer animation.
CDA 3100. Computer Organization I (3). Corequisites: COP 3330 and MAD 2104. This is a core course intended for computer science majors with previous C/C++ background. The course introduces fundamental concepts in computer organization and digital logic design, including numbering systems and number representation, logic gates and design, the Von-Neumann architecture principle, and the machine instruction cycle. Assembly language programming with C language interfacing is also presented, reinforcing basic computer structure and machine cycle operation principles.
CDA 3101. Computer Organization II (3). Prerequisite: CDA 3100. Fundamental concepts in processor design, including datapath and control, pipelining, memory hierarchies, and I/O.
CDA 4150. Computer Architecture (3). Prerequisites: CDA 3101 and MAD 3105. High performance architecture design and analysis, including memory-system design, pipelining, vector computers, and multiprocessors.
CEN 4010. Software Engineering Principles and Practice (3). Prerequisite: CEN 4020 and COP 3331, as well as experience creating or changing a large software system; and putting principles of software engineering to practice. May be repeated to a maximum of six (6) semester hours. Topics in this course include classical and modern principles and practice of software engineering, including classical and object-oriented approaches to architecture, design, life cycle, and project management; software metrics; change management; teams and teaming tools; reusability, portability, and interoperability; requirements and specification.
CEN 4020. Software Engineering I (3). Prerequisite: COP 4530. The first of a two-semester sequence on project-system development, this course focuses on the requirements of software engineering and bridges the gap between project theory and practice. Topics include theory, tools, requirements elicitation, software-requirements specification, requirements review, software development, ethics, software-development life cycle, teams, and project management.
CEN 4021. Software Engineering II (3). Prerequisites: CEN 4020 and STA 4442. The second of a two-semester sequence on project-system development, this course focuses on software design and implementation. Topics include software design, architectures, testing, deployment, metrics, configuration management, reusability, portability, and interoperability.
CEN 4681. Expert Systems (3). Prerequisite: COP 4530. Topics include: definitions and historical development, methodology tools for analysis and design, survey of existing systems, inference engines, and theory and applications of fuzzy relational products to new developments in inference engines.
CGS 2060. Computer Literacy (3). Not open to students with credit in CGS 2100. An introduction to information processing and computer applications. Hands-on experience with microcomputer applications such as word processors, spreadsheets, and database managers.
CGS 2064. Computer Literacy II (3). Prerequisite: CGS 2060 or instructor permission. This course builds on skills and concepts learned in CGS 2060 Computer Literacy, to show students how digital technologies are used in professional environments to assist in productivity. Topics include information systems, databases, e-commerce, systems and software development, multimedia, and information security. While developing a deeper understanding of information systems and digital technologies, students also acquire valuable hands-on skills that include digital graphics and photo editing, animation, database development, and Web development. Computer Literacy or equivalent computer experience is required for admission.
CGS 2100. Microcomputer Applications for Business/Economics (3). Prerequisite: MAC 1105. May not be applied toward computer science major or minor. Not open to students with credit in CGS 2060. Course enables students in business and economics to become proficient with microcomputer hardware and software applications that are typically used in the workplace. The following topics are covered: hardware concepts, operating systems, word-processing, spreadsheets, databases, networks, Internet, World Wide Web, multi-media presentations, and information systems.
CGS 2930r. Special Topics for Non-Majors (1-3). This Is a special topics course for non-majors. Topics may vary. This course is repeatable in a single semester with instructor permission. May be repeated to a maximum of three (3) semester hours.
CGS 3066. Web Programming and Design (3). This course provides an overview of Internet communications and information services, as well as the technologies on which the Internet and Web are built. The course emphasizes Web design, development, and programming with participants learning the latest tools and techniques for building professional-grade, dynamic, and interactive Web pages and sites.
CGS 3403. Introduction to COBOL Programming for Business (3). Prerequisite: CGS 3406 or COP 3014. May not be applied toward a computer science major. Study of the use and management of COBOL in business and government organizations. Specific programs are developed to solve typical management and data-processing problems. Structured approaches to problems and design solutions are discussed in detail. Also taught by the College of Business.
CGS 3406. Object-Oriented Programming in C++ (3). Prerequisite: MAC 1140. May not be applied toward a computer science major. Topics include a brief introduction to computers, C++ basics, procedural abstraction and functions, an introduction to the object-oriented paradigm, namespaces, arrays, strings and vectors, pointers, and recursion. Emphasis is on program problem-solving.
CGS 3408. Introduction to Programming with the C Language (3). Prerequisite: MAC 1140. This course is an introduction to C programming. Topics include types, operators, and expressions; control flow; IO; functions and program structure; and software design techniques. Eight to ten programming projects are required.
CGS 3416. Java Programming for Non-specialists (3). Prerequisite: CGS 3406 or COP 3014. Topics include Java basics, a review of structured and object-oriented programming concepts, classes, constructors, interfaces, exceptions, I/O, graphics concepts, jar files, compilation, virtual machines, applications, applets, APIs, HTML, XML, and XHTML.
CGS 3460. FORTRAN for Non-specialists (3). Prerequisite: MAC 1105. May not be applied toward a computer science major. Introduction to programming; rudiments of FORTRAN, problem solving by computer, basic data types, basic control structures, arrays and subscripts, further control structures, subprograms, formatted input/output.
CIS 3931r. Intermediate Topics in Computer Science (23). Prerequisite: COP 3502. Topic and prerequisites will vary from term to term and section to section. Analyzes intermediate topics in the area of computer science. May be used as a self-contained study of a programming language in the context of applications for which the language is particularly suited. May be repeated to a maximum of nine (9) semester hours.
CIS 3943r. Internship in Computer Science (36). (S/U grade only.) Prerequisites: COP 4530; successful completion of 60 hours of course work with a minimum overall GPA of 3.0, including 15 hours in computer science courses (prefixes of CAP, CDA, CEN, CGS, CIS, COP, COT) with a minimum GPA of 3.2; and internship coordinator permission. Field placement in approved industry or government entity having significant information technology or computer science component by approval only. May be taken for variable credit and repeated (with departmental approval), but only three (3) semester hours may count towards graduation. Successful completion requires satisfactory job evaluation and demonstration of educational value of placement, usually via a paper and/or presentation. May be repeated to a maximum of twelve (12) semester hours.
CIS 3949r. Cooperative Education Work Experience (0). (S/U grade only.) Work experience with a firm or agency to be determined on an individual basis. May be repeated to a maximum of six (6) times.
CIS 4360. Introduction to Computer Security (3). Prerequisite: CGS 3406 or COP 3014 or equivalent programming course. Course covers computer security threats and attacks, covert channels, trusted operation 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.
CIS 4361. Applied Computer Security (3). Prerequisite: CDA 3100 and COP 3330. This course addresses threats to and vulnerabilities of information systems and provides hands-on opportunities for students to work with current counter-threat technology. This course also covers analytic principles to support vulnerability assessment and countermeasure design.
CIS 4900r. Directed Individual Study (14). May be repeated to a maximum of twelve (12) semester hours.
CIS 4930r. Special Topics in Computer Science (3). Prerequisite: at least six (6) semester hours in computer science or software engineering at or above the 4000 level. May be repeated to a maximum of twelve (12) semester hours.
CIS 4933r. Honors Work (3). May be repeated to a maximum of nine (9) semester hours.
CNT 4406. Network Security and Cryptography (3). Prerequisites: COP 4530 or MAD2104. This course examines 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.
CNT 4504 Introduction to Computer Networks.(3). Prerequisite: COP 4503. This course covers circuit-switched and packet switched networks; protocols; protocol layering; application layer and socket programming; transport layer, multiplexing and demultiplexing, UDP, TCP, reliability, flow control, and congestion control; network layer, routing protocols, switching technologies, multicast, and mobility; link layer, local area networks, error detection and correction; wireless networks; multimedia networking; network security; network management.
CNT 4603. Computer and Network System Administration (3). Prerequisite: CGS 3406 or COP 3014. This course offers a hands-on introduction to Unix and Microsoft Windows systems and network administration. Topics include the following: installation, maintenance, and extension of a multi-user computer system; development of administrative policies and procedures; user assistance and education; specifics of the Unix and Windows operating systems; and practical troubleshooting and problem solving.
COP 2721. Introduction to Database Systems and Internet Services (3). This course is a hands-on introduction to the principles of computer hardware and software, database systems, and the Internet. It explores the concepts and techniques that support Web site development. Students learn to design and implement simple database systems and to create Web sites that interact with databases.
COP 3014. Programming I (3). Prerequisite: MAC 1140. Fundamental concepts and skills of programming in a high-level language. Flow of control: sequence, selection, iteration, subprograms. Data structures: arrays, strings, structs, ADT lists and tables. Algorithms using selection and iteration (decision making, finding maxima and minima, basic searching and sorting, simulation, etc.). Good program design using a procedural paradigm, structure, and style are emphasized. Interactive and file IO. Testing and debugging techniques. Intended primarily for computer science or computer engineering majors, or anyone who is required to take COP 3330.
COP 3252. Internet Applications Programming with Java (3). Prerequisite: COP 3330. This course covers the applications of the Java language to education, electronic commerce, scientific research, and distributed systems in general. Topics include the following: the architecture of the Web, including software protocols for passing information in typical Web applications; introduction to the Java programming language; developing Graphical User Interfaces using Swing; an introduction to distributed objects using Java Remote Method Invocation (RMI); and server-side programming using Servlets and JDBC. Emphasis is placed on practical programming using these technologies.
COP 3330. Object Oriented Programming (3). Prerequisite: COP3014. Corequisite: COP3353. Object-oriented programming in a modern programming language; classes, objects, inheritance, and polymorphism; introduction to data structures and container classes.
COP 3353. Introduction to UNIX (1). This course for majors and non-majors offers an introduction to the UNIX operating system. Topics include: UNIX history, requesting UNIX accounts, logging in to a UNIX system, basic operating system concepts and file structure, basic commands, text editor(s) (to include emacs, vi, and pico), printing, mail, and online help. The goals of this course are to enable students to log in to their UNIX accounts from any type of computer and have a basic understanding of the commands and utilities.
COP 3502. Introduction to Computer Science (3). Prerequisites: MAC 1105 and previous computer experience. May not be applied toward a major in computer science. Course covers basic computer organization, computer languages and software, language translation and interpretation, object oriented design, object oriented programming, classes, objects, and inheritance, file systems and I/O.
COP 4020. Programming Languages (3). Prerequisite: COP 4530. 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. Oral presentation required.
COP 4342. Unix Tools (3). Prerequisite: COP 3330. This course is an introduction to selected Unix tools and utilities that are useful for advanced users, programmers, and system administrators, such as shell scripts, the perl language, revision control systems, debuggers, editors, and the make, awk, sed, and expect utilities.
COP 4380. Reactive Systems Programming (3). Prerequisite: COP 4530. Corequisite: COP 4610 or instructor permission. This course covers the theory of Hierarchical State Machines [HSM] and the use of HSM to model and implement Reactive Systems [RS]. The course explores implementations of HSM in C, C++, and Java. HSM are applied for modeling and implementing RS including real-time, multi-threaded, and embedded systems.
COP 4530. Data Structures, Algorithms and Generic Programming (3). Prerequisites: COP 3330 and MAD 2104. Prerequisite or corequisite: CDA 3100. Definition, use, and implementation of generic data structures using a modern programming language; reusable program components.
COP 4531. Complexity and Analysis of Data Structures and Algorithms (3). Prerequisites: COP 4530, MAD 3105, and STA 4442. Analysis of the complexity of algorithms, including sorting, searching, and graph algorithms; use and implementation of graphs.
COP 4610. Operating Systems and Concurrent Programming (3). Prerequisite: COP 4530. Prerequisite or corequisite: CDA 3101 or instructor permission. Design principles of batch, multiprogramming, and time-sharing operating systems; linking, loading, input-output systems, interacting processes, storage management, process and resource control, file systems.
COP 4613. Real-Time Systems (3). Prerequisite: COP 4610. Survey of issues in the design and implementation of real-time computer systems. Topics include: the use of computers for controlling real-time processes, the use of Ada in embedded computer systems, and implementation of a real-time computer system.
COP 4710. Theory and Structure of Databases (3). Prerequisites: COP 3330 and MAD 2104. Theory of relational and object-oriented databases; relational database management systems and SQL; design, development, and implementation issues in database systems.
COP 4813. Web Applications Programming (3). Prerequisite: COP 3252. This course teaches 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 is also covered.
COT 4420. Theory of Computation (3). Prerequisite: MAD 3105. Introduction to the theory of computation, including models of computation such as Turing machines; theory of programming languages, including grammars, parsing, syntax, and semantics.
COT 4425. Formal Methods in Software Engineering (3). Prerequisite: MAD 3105. Formal methods in software analysis and design, including formal specification and verification.
Graduate Courses
CAP 5415. Principles and Algorithms of Computer Vision (3).
CAP 5605. Artificial Intelligence (3).
CAP 5615. Artificial Neural Networks (3).
CAP 5632. Automated Reasoning (3).
CAP 5638. Pattern Recognition (3).
CDA 5140. Fault Tolerance and Reliability (3).
CDA 5155. Computer Architecture (3).
CEN 5000. Knowledge Management and Data Engineering (3).
CEN 5035. Software Engineering (3).
CEN 5055. Project Development (3).
CEN 5064. Advanced Software Design (3).
CEN 5066. Software Engineering in Graphics (3).
CEN 5720. Computer-Human Interaction (3).
CGS 5067. Advanced Navigating the Internet (3). (S/U grade only.)
CGS 5266. Digital Design (3). (S/U grade only.)
CGS 5267. Principles of Computer Organization (3). (S/U grade only.)
CGS 5275. Assembly and Machine Language (2). (S/U grade only.)
CGS 5409. Object-Oriented Programming in C++ for Non-majors (2).
CGS 5425. Object-Oriented Programming with Data Structure (3). (S/U grade only.)
CGS 5426. Programming Language Concepts (3). (S/U grade only.)
CGS 5427. Algorithm Design and Analysis (3). (S/U grade only.)
CGS 5428. Relational Database Theory (3). (S/U grade only.)
CGS 5429. Introduction to Computer Theory (3). (S/U grade only.)
CGS 5469. FORTRAN for Graduate Nonspecialists (3). (S/U grade only.)
CGS 5765. Principles Operating Systems (3). (S/U grade only.)
CIS 5370. Computer Security (3).
CIS 5371. Cryptography (3).
CIS 5900r. Directed Individual Study (14). (S/U grade only.)
CIS 5910r. Supervised Research (15). (S/U grade only.)
CIS 5915r. Graduate Software Project (19). (S/U grade only.)
CIS 5920r. Colloquium (1). (S/U grade only.)
CIS 5930r. Selected Topics in Computer Science (13).
CIS 5935. Introductory Seminar on Research (2). (S/U grade only.)
CIS 5940r. Supervised Teaching (15). (S/U grade only.)
CNT 5412. Network Security, Active and Passive Defenses (3).
CNT 5415. Applied Computer and Network Security (3).
CNT 5505. Data and Computer Communications (3).
CNT 5605. Computer and Network Administration (3).
COP 5385. Reactive Systems and Hierarchical State Machines (3).
COP 5570. Advanced UNIX Programming (3).
COP 5611. Operating Systems (3).
COP 5621. Compiler Construction (3).
COP 5641. Kernel and Device Driver Programming (3).
COP 5642. RealTime Systems Theory and Practice (3).
COP 5725. Database Systems (3).
COP 5818. Distributed Applications Development (3).
COP 6622. Advanced Topics in Compilation (3).
COT 5310. Theory of Automata and Formal Languages (3).
COT 5315. Programming Language Foundations (3).
COT 5405. Advanced Algorithms (3).
COT 5410. Complexity of Algorithms (3).
COT 5507. Analytic Methods in Computer Science (3).
COT 5540. Logic for Computer Science (3).
CAP 6417. Theoretical Foundations of Computer Vision (3).
CIS 6900r. Directed Individual Study (112). (S/U grade only.)
CIS 6930r. Advanced Topics in Computer Science (13).
CIS 6935r. Advanced Seminar in Computer Science (1).
For listings relating to graduate course work for thesis, dissertation, and master's and doctoral examinations and defense, consult the Graduate Bulletin.

