College of Arts and Sciences
Web Page: http://www.cs.fsu.edu/
Chair: Xin Yuan; Professors: Aggarwal, Burmester, Hawkes, Liu, Mascagni, Tyson, van Engelen, Whalley, Yuan; Associate Professors: Duan, Kumar, Schwartz, Srinivasan, A. Wang, Yu, Zhang; Assistant Professors: Chakraborty, Haiduc, Hoang, Nistor, Z. Wang, Yang, J. Zhang, Zhao; Courtesy Professors: De Medeiros, Jones, Li, Oral, Pakin, Wang; Teaching Faculty III: Gaitros, Langley, Myers; Teaching Faculty II: Lacher; Teaching Faculty I: Jayaraman, Vastola; Professors Emeriti: Baker, Lacher, Levitz, Stoecklin
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 across the spectrum of computing, including: computer architecture, compilers, networks and tools for distributed applications, parallel computation, databases and data mining, operating systems, algorithms, scientific problem solving environments, large-scale scientific computation and databases, computer and network security (including cryptography), computer forensics, computer vision, applied computational geometry, random number generation and Monte Carlo methods, as well as applications of fuzzy relations and non-classical logics. These research programs enjoy external support from agencies ranging from the National Science Foundation to the private sector.
The Department of Computer Science has a full range of computing facilities available for instruction and research. 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 equipment and may access other machines, including supercomputers and computer clusters, across the University.
Affiliated research laboratories and research groups include the following:
- The Center for Security and Assurance in Information Technology (C-SAIT) Laboratory (http://sait.fsu.edu) 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 (http://www.aces.cs.fsu.edu) 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 Applied Computer Vision Laboratory (http://cavis.fsu.edu) develops novel and mathematically sound representations, modeling, and computational algorithms for computer vision, image analysis, and pattern recognition with direct medical, biological, and real-time video and image analysis applications.
- The E-Crime Investigative Technologies (ECIT) conducts research in support of digital forensics investigations. It develops new technologies and forensic tools to address real-world problems related to electronic or digital crime. ECIT often works closely with the Florida Department of Law Enforcement and with the National White Collar Crime Center.
- The Database Group (http://www.cs.fsu.edu/dbgroup) is a faculty collaboration that focuses on efficiency, scalability and practicality problems in data management.
- The Compustat Group at FSU (https://sites.google.com/a/compgeom.com/compustat/Home) fosters interaction and promotes collaboration among faculty and students in the Departments of Computer Science, Statistics, Mathematics, Scientific Computing, Biological Science, and Chemistry, and College of Medicine at FSU with goals to further understand and better model complex living systems at all physical and temporal scales.
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) degree, 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 three combined degree programs, Computer Science BS/MS, Computer Science BA/Computer Criminology MS, and Computer Criminology BS/MS, designed for academically strong students who wish to pursue an accelerated program culminating in a bachelor's degree and a MS degree in Computer Science or Computer Criminology. Students who have reached junior status and have at least a minimum 3.0 GPA at FSU and a minimum 3.2 GPA in major coursework should contact the CS undergraduate advisor for more information.
Additionally, the department offers a Computer Programing and Applications BA major intended to allow students to choose from a variety of electives to create the academic plan that best suits their needs. The department also offers two interdisciplinary degrees.
In conjunction with the Department of Biological Science, the department offers an interdisciplinary BS degree in Computational Biology. 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 conjunction with the College of Criminology and Criminal Justice, the 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.
In each of the undergraduate degree programs within the Department of Computer Science, students must meet all applicable University and College requirements and, unless otherwise specified, coursework required for the major must be completed with a "C–" or better. No CGS courses, individual instruction courses such as CIS 3949r, Cooperative Education Work Experience, and CIS 4900r, Directed Individual Study will count toward the requirements for Computer Science BS, Computer Science BA, Computer Criminology or Computational Biology; CGS courses may count toward the requirements for the BA in Computer Programming and Applications. Computational Biology and Computer Criminology students who have major codes within the Department of Biological Science or the College of Criminology are subject to the rules and requirements of those institutions. All students graduating from the Department of Computer Science are required to complete an exit survey in the semester prior to graduation. If the exit survey has not been submitted, the department will not approve graduation.
Currently, Computer Science has no restrictions on the number of hours that can overlap with another major.
Note: All degree requirements stated are subject to change. Please refer to http://www.cs.fsu.edu/academics/undergraduate-programs/ for the most current information.
The BS degree program in computer science 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 ABET views the BS and BA as distinct degree programs, and that this accreditation is specifically for the BS degree program in CS and is not applicable to the BA degree in CS or the degrees in computational biology or computer criminology.
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 of Distance Learning (ODL) at http://distance.fsu.edu/.
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 computer science, computational biology, and computer criminology majors must satisfy this requirement by earning a grade of "C–" or higher in COP 3014.
Note: The Department of Computer Science offers several courses, including CGS 2060, CGS 2100, CGS 3406, COP 3014 and COP 3363, which are intended to meet the Computer Skills Competency requirement for students in other majors. However, students should check with their major department whether any of these courses are designated as satisfying the computer skills competency in their major.
State of Florida Common Program Prerequisites
The state of Florida has identified common program 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.
At the time this document was published, some common program prerequisites were being reviewed by the state of Florida and may have been revised. Please visit https://dlss.flvc.org/admin-tools/common-prerequisites-manuals for a current list of state-approved prerequisites.
The following lists the common program prerequisites or their substitutions, necessary for admission into these upper-division degree programs:
Computer Science, BS
- COP XXXX: one introductory programming course for three credit hours in C, C++, Java, or an equivalent programming language
- MAC X311
- MAC X312
- PHY X048/X048L and PHY X049/X049L, or PHY X048C and PHY X049C, or BSC X010 and BSC X011 and CHM X045C
- XXX XXXX: one science course for two to four credit hours for science majors
Note: The Department requires that item 5 be identified as "For Science Majors" within the Liberal Studies for the 21st Century Program or have such a course as a prerequisite. Students who choose to complete both BSC X010L and BSC X011L will satisfy the "Science for Science Majors" requirement.
Computer Science, BA
The above requirements are only required for the computer science BS major. The below requirements are only for the computer science BA major.
- MAC X140
- MAC X311
Computer Programming and Applications, BA
- MAC X311
Computational Biology (Bioinformatics)
- BSC X010 or BSC X040 or PCB X011
- BSC X011 or BSC X041
- CHM X045/X045L or CHM X045C, or CHM X040 and CHM X041
- CHM X046/X046L or CHM X046C
- PHY X048/X048L or PHY X053/X053L
- PHY X049/X049L or PHY X054/X054L
- MAC X311
- MAC X312
- COP XXXX: one course for three credit hours in computer programming
- MAC X105
- MAC X140
Please review all college-wide degree requirements summarized in the "College of Arts and Sciences" chapter of this General Bulletin, as well as all University-wide requirements.
Requirements for the BS and BA Degree Programs in Computer Science
There are two majors for the CS bachelor's degree: the BS in computer science (CS BS) and the BA in computer science (CS BA). A distance-learning version of these majors is offered through the Panama City campus.
The undergraduate programs in computer science are limited access. For the 2017-2018 academic year, the minimum GPA is 2.65. This requirement is applied equally to AA degree transfers from Florida public institutions and rising juniors at Florida State University and for students transferring into the Computer Science program, whether from another department or another institution. Upon entrance into the program, the student must maintain a 2.5 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.
Note: The term "major" as used here is often called a "track" or "option" in other states or at other universities.
Core Requirements - BS and BA in Computer Science
In addition to all University and College of Arts and Sciences requirements, the common program prerequisites stated above, and the courses specific to each major that are listed separately under the respective headings below, all CS BA and CS BS students must complete the following core courses:
- MAD 2104 Discrete Mathematics I (3)
- CDA 3100-3101 Computer Organization I-II (6)
- CEN 4020 Software Engineering I (3)
- COP 3014 Programming I (3)
- COP 3330 Object Oriented Programming (3)
- COP 3353 Introduction to Unix (1)
- COP 4530 Data Structures, Algorithms, and Generic Programming (3)
- COP 4610 Operating Systems and Concurrent Programming (3)
- COP 4710 Theory and Structure of Databases (3)
- COP 4020 Programming Languages (3)
Students may complete COP 3363 (3) in Programming I in place of COP 3014 (3) Programming I and COP 3353 (1) Unix to complete the requirement for these courses.
Both of the majors in Computer Science require that one of the computer science electives cover an additional programming language not covered in COP 3014-3330.
Non-major students completing CGS 3406 with an "A" or "A–" can count this as full credit for COP 3014 when transferring into a major offered by the Computer Science Department.
Additional Requirements for Computer Science BS Major
In addition to the core requirements described above and the common prerequisites for this major, each student must complete:
- MAD 3105 Discrete Mathematics II (3)
- COT 4420 Theory of Computation (3)
- COP 4531 Complexity and Analysis of Data Structures and Algorithms (3)
- CIS 3250 Ethics and Computer Science (3)
- STA 3032, 4321, or 4442.
- At least fifteen semester hours of computer science electives, at least twelve of which must be at the 4000 level.
One of the 4000-level computer science electives may be replaced with an advanced math elective, which must be a mathematics or statistics course with a prerequisite of Calculus II (MAC 2312) or Discrete Mathematics II (MAD 3105). The required collateral courses in mathematics, physics, and statistics constitute an acceptable interdisciplinary minor for students in this major.
Additional Requirements for Computer Science BA Major
In addition to the core requirements described above and the common prerequisites for this major, each student must complete:
- At least twelve semester hours of computer science electives, at least nine of which must be at the 4000 level;
- At least nine semester hours in the fields of humanities and history, in addition to those taken to satisfy the liberal studies and foreign language requirement;
- A minor approved by the department.
The general electives and additional courses in the humanities and history may be applied toward satisfaction of the minor requirement. Students should contact the CS undergraduate advisor for information concerning acceptable minors. Additional general electives are required to bring the total credits to 120 hours.
Note: Because of reduced requirements in mathematics and theoretical computer science, students graduating with the BA in CS who wish to be admitted to the graduate program in CS at FSU may be required to take remedial undergraduate courses (http://www.cs.fsu.edu/academics/graduate-programs/undergraduate-pre-requisites/), like students from other closely related majors such as Mathematics and Computer Engineering.
Requirements for the BS Degree Program in Computational Biology
In addition to the common prerequisites for this major, students must complete the following courses from biological sciences: BSC 2010, BSC 2011, and PCB 3063, for a total of nine hours.
From computer science, students must complete CDA 3100, COP 3014, COP 3330, COP 3353, and COP 4530, for a total of thirteen hours.
Students must complete an additional eighteen hours of electives chosen from Biology, Computer Science, Math and/or Statistics. The Computer Science electives may be chosen from CDA 3101, COP 4531, COP 4710, COP 4420, and CIS 4900r. Biology electives are chosen from BOT 4394, BSC 2010L, BSC 2011L, BSC 4613, BSC 4900r, BSC 4933, MCB 4403, MCB 4403L, PCB 3134, PCB 3743, PCB 4024, PCB 4233, PCB 4253, PCB 4674, or PCB 4843. The math electives are chosen from MAC 2312, MAC 2313, MAP 2480, or MAP 4481. The Statistics electives are chosen from STA 4102, STA 4103, STA 4202, STA 4203, STA 4502, or STA 4702.
For the capstone courses, students must complete CIS 4930 Algorithms for CompBio, or COP 4531 Complexity and Analysis of Data Structures and Algorithms, for a total of three hours. In addition, the following must be completed: Mathematics: MAC 2311 and MAD 2104 totaling seven hours; Statistics: STA 2122, STA 2171, or STA 4442 totaling three hours; Chemistry: CHM 1045, CHM 1045L, CHM 1046 and CHM 1046L totaling nine hours.
Requirements for the BS Degree Program in Computer Criminology
With the exception of CCJ 3011 and CCJ 4700, which must be passed with a "C" or better, all courses required for the major must be completed with a grade of "C–" or better.
In addition to the common prerequisites for this major, students must complete the following core from computer science: COP 3014, COP 3353, COP 3330 and CDA 3100, totaling ten hours. A total of twelve elective hours must be completed, chosen from CIS 3250, CIS 4360, CNT 4406, CNT 4504, CNT 4603, COP 3252, COP 4342, COP 4530, COP 4610, CDA 3101, and COP 4710. The capstone course CIS 4385 must be completed for three credits.
From criminology, students must complete the following core: CCJ 2020, CCJ 3011, CCJ 4700, CCJ 4938, and CJE 3110 totaling twelve hours. A total of nine elective hours must be completed, chosen from CCJ 3644, CCJ 3666, CCJ 4497, CCJ 4614, CJC 3010, CJE 4610, CJJ 4010, CJL 3510, CJL 4064. The capstone course CCJ 4938, CJ System Responses to Cybercrime, must be completed for three credits.
In mathematics, students must complete MAD 2104 for three hours.
Requirements for the BA Degree Program in Computer Programming and Applications
All courses required for the major must be completed with a grade of "C–" or better.
In addition to the common prerequisites for this major, students must complete the following core from computer science: COP 3014, COP 3353, COP 3330, COP 4530, CEN 4020, and CDA 3100, totaling sixteen hours. A total of twenty-four elective hours must be completed in the Computer Science department. Six hours of these electives must be programming language electives. At least twenty-one hours of elective coursework must be numbered above 3000.
In mathematics, students must complete MAD 2104 for three hours.
Requirements for a Minor in Computer Science
Students pursuing a minor in Computer Science may choose one of two sets of computer science courses preapproved by the department: the General Track (twelve hours) or the Science Track (thirteen hours). Courses outside of the preapproved tracks must be approved in advance (in writing) by the department. Students must also satisfy stated prerequisites before enrolling in any computer science course. A grade of "C–" or higher must be earned in each course counted toward the minor. For more information on the minor, including preapproved courses, see http://www.cs.fsu.edu/academics/undergraduate-programs/minor-in-computer-science.
Definition of Prefixes
CEN—Computer Software Engineering
CGS—Computer General Studies
CIS—Computer Science and Information Systems
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). Corequisite: 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). Corequisite: COP 4530. This course covers 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 core course is 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. This course explores the fundamental concepts in processor design, including datapath and control, pipelining, memory hierarchies, and I/O.
CDA 4150. Computer Architecture (3). Prerequisite: CDA 3101. This course explores high performance architecture design and analysis, including memory-system design, pipelining, vector computers, and multiprocessors.
CEN 4020. Software Engineering I (3). Prerequisite: COP 4530. This course starts with a rigorous study of object oriented design techniques and an introduction to current practices in Software Engineer. By the end of the course, students participate in a group design project putting into practice what they have learned to date. Topics include UML, Object Oriented Design, theory and practice of software engineering, ethics in Computer Science and Software Engineering, Software Engineering tools, requirements elicitation, software-requirements specification, requirements review, software development, software-development life cycle, teams, and project management. This course satisfies the University's Scholarship in Practice as well as the Upper Division Writing requirements.
CEN 4021. Software Engineering II (3). Prerequisite: CEN 4020. This course is the second of a two-semester sequence on project-system development and 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). Corequisite: COP 4530. This course covers 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 Fluency (3). This course covers computer and digital technology skills and concepts for all majors. Topics cover file management, personal information management, Internet communications, word processing, spreadsheet, and other software skills. Students learn about digital technologies, telecommunications, the Internet and the Web, management information systems, digital media, information security, digital society, as well as ethics. Not open to students with credit in CGS 2100.
CGS 2100. Microcomputer Applications for Business/Economics (3). This 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. May not be applied toward computer science major or minor. Not open to students with credit in CGS 2060.
CGS 2930r. Special Topics for Non-Majors (1–3). This course covers special topics 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 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 3406. Object-Oriented Programming in C++ (3). Prerequisite: MAC 1105. This course covers 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. May not be applied toward a computer science major.
CGS 3416. Java Programming for Non-specialists (3). Prerequisite: MAC 1105. This course covers 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 4092. Ethical Issues in Computer Science (2). Prerequisite: A course in computer programming. This theory and skills course is intended for students with a basic knowledge of computer science principles and programming languages. The course introduces fundamental concepts and analytical methods in ethics, along with ethical, legal, and social issues and questions in computer science that call for ethical analysis.
CIS 3250. Ethics and Computer Science (3). This course presents basic ethical theories and analysis methods as they apply to ethical, social, and legal issues in computing and information technology. Case studies and hypothetical scenarios are discussed for their social, ethical, and legal implications, as well as analyzed through various ethical-analysis methodologies. The course fosters the development of skills in logical and critical analysis of issues and viewpoints.
CIS 3250L. Ethics and Computer Science Public Speaking Lab (1). Corequisite: CIS 3250. Note: Corequisite can be waived if the student already has credit for an Ethics course. This course teaches students to understand and apply basic principles of effective public speaking and audience analysis. This course is an introduction to speech communication with emphasis on public speaking, including techniques to lessen speaker anxiety, and the use of visual aids to enhance speaker presentations. This course prepares students for success in typical public speaking situations and provides them with the basic principles of organization and research needed for effective speeches.
CIS 3931r. Intermediate Topics in Computer Science (2-3). This course analyzes intermediate topics in the area of computer science. The course may be used as a self-contained study of a programming language in the context of applications for which the language is particularly suited. Topics and prerequisites vary from term to term and section to section. May be repeated to a maximum of nine semester hours.
CIS 3943r. Internship in Computer Science (3–6). (S/U grade only.) Prerequisites: COP 4530; successful completion of sixty hours of coursework with a minimum overall GPA of 3.0, including fifteen 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. This course involves 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 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 semester hours.
CIS 3949r. Experiential Learning (0). (S/U grade only.) This non-credit, experiential learning course offers students an opportunity to gain "real world" on-the-job work experience related to a specific academic field of study. Students must register for this course through the FSU Career Center.
CIS 4138. Introduction to Software Reverse Engineering and Malware Analysis (3). Prerequisite: CDA 3100. This introductory course provides comprehensive coverage of fundamental problems, principles, and techniques in software reverse engineering of binaries including static analysis techniques, disassembly algorithms, dynamic analysis techniques, automated static and dynamic analysis techniques, malware analysis techniques, anti-analysis techniques, and malware obfuscation and packing techniques; many of the techniques will be demonstrated and practiced using IDA. The course also involves analyzing malware samples.
CIS 4360. Introduction to Computer Security (3). Prerequisite: CGS 3406 or COP 3014 or equivalent programming course. This 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 4385. Cybercrime Detection and Forensics (3). Prerequisites: CDA 3100 and CJE 4610. This course discusses tools, techniques, and procedures for detecting cybercrime and analyzing collected data related to past and on-going cyber offenses, along with preserving the legal value of the collected evidence.
CIS 4626. Introduction to Offensive Computer Security (3). Prerequisite: CDA 3100. This course provides introductory but comprehensive coverage of fundamental problems, principles, and techniques in offensive computer security including various buffer overflow techniques, format string techniques, basic networking techniques, shellcode development, web application exploitation, software reverse engineering, fuzzing techniques, social engineering techniques, and then commonly used tools for penetration testing with an emphasis on their principles and fundamental techniques.
CIS 4900r. Directed Individual Study (1–4). May be repeated to a maximum of twelve semester hours.
CIS 4930r. Special Topics in Computer Science (3). Prerequisite: COP 4530. May be repeated to a maximum of six semester hours. May be repeated within the same semester.
CIS 4933r. Honors Work (3). May be repeated to a maximum of nine semester hours.
CNT 4406. Network Security and Cryptography (3). Corequisite: COP 4530. 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). Corequisite: COP 4530. 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 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 3014. Programming I (3). Prerequisite: MAC 1140. This course covers 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 3035. Introduction to Programming Using Python (3). Prerequisite: MAC 1105. This course includes Python basics, use of Python control and data structures, use of Python functions, Python I/O, and implementation of basic Python programming tasks.
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: COP 3014 or a comparable course in C or C++ programming. Corequisite: COP 3353. This course focuses on 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 into 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 3363. Introduction to Programming in C++ for Majors (3). Prerequisite: MAC 1140 or higher; or instructor permission. This course covers fundamental concepts and skills of programming in C++ in the Unix Environment. Students are instructed on efficient program design using a combination of procedural and Object Oriented paradigms.
COP 3502. Introduction to Computer Science (3). Prerequisites: MAC 1105 and previous computer experience. This 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. May not be applied toward a major in computer science.
COP 4020. Programming Languages (3). Corequisite: COP 4530. This course covers the principles of programming languages, including language constructs, syntactic and semantic specification methods, runtime structures, implementation techniques, and alternative programming paradigms. The course involves programming assignments in a variety of languages and individual investigations accompanied by a required written report and oral presentation.
COP 4046C. Python Programming (3). Prerequisite: COP 3330. Corequisite: COP 4530. This course covers intermediate level Python. Students are expected to know the material taught in COP4530, and to be comfortable with the programming material taught in COP3330. The course includes lectures on the Python language and development environment, and covers select Python modules that demonstrate the versatility of the Python language. Some topics that are covered include types and operations, functions, modules and libraries, text processing, functional programming, object oriented programming, testing, debugging, performance tuning, and algorithm implementations in Python.
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. Pre- or corequisite: CDA 3100. This course focuses on 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 and MAD 3105. Corequisite: STA 3032 or STA 4442. This course is an analysis of the complexity of algorithms, including sorting, searching, and graph algorithms; use and implementation of graphs.
COP 4610. Introduction to Operating Systems (3). Prerequisite: COP 4530. Corequisite: CDA 3101. This course explores 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 4656r. Mobile Programming (3). Prerequisite: COP 4530. This course teaches students how to program mobile devices. Students use event-based models to write and deploy a content based application using a mobile computing software framework. May be repeated to a maximum of nine semester hours.
COP 4710. Theory and Structure of Databases (3). Prerequisites: COP 3330 and MAD 2104. This course examines the 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 4401. Top 10 Algorithms (3). Prerequisite: COP 4530. This course focuses on a wide-ranging selection of ten of the most influential algorithms in use today: what they are, how they work, and their impact on modern life.
COT 4420. Theory of Computation (3). Prerequisite: MAD 3105. This course is an introduction to the theory of computation, including models of computation such as Turing machines; theory of programming languages, including grammars, parsing, syntax, and semantics.
CAP 5137. Software Reverse Engineering and Malware Analysis (3).
CAP 5415. Principles and Algorithms of Computer Vision (3).
CAP 5605. Artificial Intelligence (3).
CAP 5638. Pattern Recognition (3).
CAP 5726. Introduction to Computer Graphics (3).
CDA 5125. Parallel and Distributed Systems (3).
CDA 5155. Computer Architecture (3).
CEN 5035. Software Engineering (3).
CGS 5267. Principles of Computer Organization (3). (S/U grade only.)
CGS 5268. Principles of Computer Organization II (3). (S/U grade only.)
CGS 5409. Object-Oriented Programming in C++ for Non-majors (2).
CGS 5425. Object-Oriented Programming with Data Structures (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 5466. Programming for Non-Majors (3). (S/U grade only.)
CGS 5765. Principles of Operating Systems (3). (S/U grade only.)
CGS 5935r. Special Topics in Computer Science for Non-Majors (1–3). (S/U grade only.)
CIS 5105. Computer Systems for Performance Analysis (3).
CIS 5370. Computer Security (3).
CIS 5371. Cryptography (3).
CIS 5627. Offensive Computer Security (3).
CIS 5900r. Directed Individual Study (1–9). (S/U grade only.)
CIS 5910r. Supervised Research (1–5). (S/U grade only.)
CIS 5915r. Graduate Software Project (1–12). (S/U grade only.)
CIS 5920r. Colloquium (0-1). (S/U grade only.)
CIS 5930r. Selected Topics in Computer Science (1–3).
CIS 5935. Introductory Seminar on Research (2). (S/U grade only.)
CIS 5940r. Supervised Teaching (1–5). (S/U grade only.)
CIS 5949r. Internship in Computer Science (0–9). (S/U grade only.)
CIS 6628. Offensive Network Security (3).
CIS 6900r. Directed Individual Study (1–12). (S/U grade only.)
CIS 6930r. Advanced Topics in Computer Science (1–3).
CIS 6935r. Advanced Seminar in Computer Science (1).
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 5529. Wireless Networking (3).
CNT 5605. Computer and Network Administration (3).
COP 5570. Concurrent, Parallel, and Distributed Programming (3).
COP 5611. Advanced Operating Systems (3).
COP 5621. Compiler Construction (3).
COP 5641. Kernel and Device Driver Programming (3).
COP 5659r. Mobile Programming (3).
COP 5725. Database Systems (3).
COP 6622. Advanced Topics in Compilation (3).
COT 5310. Theory of Automata and Formal Languages (3).
COT 5405. Advanced Algorithms (3).
COT 5507. Analytic Methods in Computer Science (3).
COT 5715. Random Number Generation (3).
ISC 5228. Monte Carlo Methods (3).
For listings relating to graduate coursework for thesis, dissertation, and master's and doctoral examinations and defense, consult the Graduate Bulletin.
see Retail Merchandising and Product Development
COUNSELING PSYCHOLOGY AND HUMAN SYSTEMS:
see Educational Psychology and Learning Systems