Skip to main content

This is your Donation message.

2020-2021 Undergraduate Bulletin

Undergraduate Department of

Computer Science

College of Arts and Sciences


Chair: Xin Yuan; Professors: Aggarwal, Burmester, Hawkes, Liu, Mascagni, G. Tyson, A. Wang, Whalley, Yu, Yuan, Z. Zhang; Associate Professors: Duan, Haiduc, Kumar, Schwartz, Z. Wang, Yang, Zhao; Assistant Professors: Chakraborty, Fedyukovich, Gao, Gubanov, Hoang, Kuhnle, J. Zhang: Courtesy Professors: De Medeiros, Imam, Jones, Li, Oral, Pakin, Srinivasan, Venkata, Wang; Teaching Faculty III: Langley, R. Myers, A. Tyson; Teaching Faculty II: M. Myers; Teaching Faculty I: Dorai, Jayaraman, Mills; Professors Emeriti: Baker, Lacher, Leach, Levitz, Stoecklin; Panama City Faculty: Gaitros, Uh, Works

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: artificial intelligence, computer architecture, computer graphics, 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 ( is dedicated to synthesis of education and research through the combined focus on theory and application of information security techniques.
  • The Mobile Lab ( investigates mobile computing and develops mobile and web applications for all platforms, with special emphasis on Android and iOS.
  • The Computer Architecture and SysTems Research Laboratory (CASTL) ( has broad research interests in novel architectural and system technologies for big data analytics, cloud computing, high-performance computer and network systems, and the use of these technologies for fast scientific discoveries on computational biology and climate changes.
  • The EXPLORER (EXtreme-scale comPuting, modeLing, netwORk & systEms Research) laboratory ( explores cutting-edge technologies for designing, evaluating, constructing, programming, and using extreme-scale distributed computing systems including super-computing systems, cloud computing data centers, networked computing systems, heterogeneous computing systems, and Internet of things.
  • The Serene (Software EngineeRing: EvolutioN and maintEnance) Laboratory ( is dedicated to research in the field of Software Engineering and focusing on novel approaches and techniques to assist software developers in undertaking tasks common to the creation, understanding and maintenance of increasingly large software systems.
  • The Applied Computer Vision Laboratory ( 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.

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) 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 Bachelor's/Master's Pathways: Computer Science BS/MS, Computer Science BA/Cyber Criminology MS, and Cyber Criminology BS/MS, designed for academically strong students who wish to pursue an accelerated program culminating in a bachelor's degree and an MS degree in Computer Science or Cyber Criminology. Students who have reached junior status and have at least a minimum 2.5 GPA at FSU and a minimum 3.5 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 Cyber Criminology. This program teaches students to understand the emerging problem of cyber-related crime as well as how computers can assist in the prevention, detection, and apprehension of cyber-crime perpetrators.

In conjunction with the College of Education, the department offers the CS-Math/FSU-Teach major. This double major with Education helps prepare students to teach Math and Computer Science at the secondary level, i.e., middle and high school.

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, Cyber Criminology or Computational Biology; CGS courses may count toward the requirements for the BA in Computer Programming and Applications. Computational Biology and Cyber 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.

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 for the most current information.


The BS degree program in computer science is accredited as a computer science degree program by the Computing Accreditation Commission of ABET, Note that ABET views the BS and BA as distinct degree programs, and that this accreditation is specifically for the BS degrees program in CS and is not applicable to the BA degree in CS or the degrees in computational biology or cyber criminology.

Distance Learning

Some undergraduate degree programs in Computer Science are 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

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 cyber criminology majors must satisfy this requirement by earning a grade of "C–" or higher in COP 3014 or COP 3363.

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

  1. COP XXXX: one introductory programming course for three credit hours in C, C++, Java, or an equivalent programming language
  2. XXX XXXX: one science course for two to four credit hours for science majors.
  3. MAC X311
  4. MAC X312
  5. PHY X048/X048L and PHY X049/X049L, or PHY X048C and PHY X049C, or BSC X010 and BSC X011 and CHM X045C, or BSCX010 and BSCX011 and CHMX045/X045L

Note: Students who follow the BSCX010/BSCX011/CHMX045C option who choose to complete both BSCX010L and BSCX011L 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.

  1. MAC X140
  2. MAC X311

Computer Programming and Applications, BA

  1. MAC X311

Computational Biology (Bioinformatics)

  1. BSC X010 or BSC X040 or PCB X011
  2. BSC X011 or BSC X041
  3. CHM X045/X045L or CHM X045C, or CHM X040 and CHM X041
  4. CHM X046/X046L or CHM X046C
  5. PHY X048/X048L or PHY X053/X053L
  6. PHY X049/X049L or PHY X054/X054L
  7. MAC X311
  8. MAC X312

Cyber Criminology

  1. COP XXXX: one course for three credit hours in computer programming
  2. MAC X105
  3. MAC X140

College Requirements

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 four majors for the CS bachelor's degree: the BS in computer science (BS CS), the BA in computer science (BA CS), the BA in Computer Programming and Applications (BA CPA), and the BA in Computer Science-Math/FSU-Teach (BA CSMFT). A distance-learning version of the BS in computer science (CS BS) and the BA in computer science (CS BA) are offered through the Panama City campus.

The undergraduate programs in computer science are limited access, requiring a minimum 2.65 all college-level work attempted GPA for formal admission to the BS CS, BA CS, and BA CPA majors. A minimum 2.5 all college-level work attempted GPA is required for formal admission to the BA CSMFT major. All State Common Program Prerequisites listed as Term 1–4 milestones must be completed with a "C" range (C–, C, or C+) grade or better. Students earning less than the necessary grade in any of these courses will be required to retake those courses until the standard is met. Note: retaking a course may delay graduation and incur increased fee liability (i.e., repeat course surcharge and excess credit surcharge).

Upon formal admission into the program, the student must:

  • Complete all courses required for the major with a grade of "C–" or better;
  • Maintain a 2.5 all-college-level-work-attempted GPA, excluding the Term 1–4 State Common Prerequisites milestone courses;
  • Not receive more than 3 unsatisfactory grades combined in Programming I (COP 3014 or COP 3363) and Object-Oriented Programming (COP 3330);
  • Not accumulate more than 5 unsatisfactory grades (U, F, D–, D, or D+) in courses required for the major, excluding the Term 1–4 State Common Prerequisites milestone courses, taken after entering the program.

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 Computer Organization I (3)
  • CEN 4020 Software Engineering I (4)
  • 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)

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 BS Computer Science 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)
  • CIS 3250 Ethics and Computer Science (3)
  • STA 3032, 4321, or 4442.
  • At least twenty-three semester hours of computer science electives (up to two semester hours can be CIS 4900r), at least fifteen of which must be at the 4000 level (excluding CIS 4900r); 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 Calculus II (MAC 2312) or Discrete Mathematics II (MAD 3105) as a prerequisite). The required collateral courses in mathematics, physics, and statistics constitute an acceptable interdisciplinary minor for students in this major.

Additional Requirements for BA Computer Science Major

In addition to the core requirements described above and the common prerequisites for this major, each student must complete:

  • At least seventeen semester hours of computer science electives, at least twelve of which must be at the 4000 level, where up to two hours can be from CIS 4900.
  • 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 (, 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 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.

Students must complete an additional twenty-four hours of electives chosen from Biology, Computer Science, Math and/or Statistics. The Computer Science electives may be chosen from COP 4710, COP 4420, and CIS 4900r. Biology electives are chosen from BOT 4394, BSC 2010L, BSC 2011L, BSC 3402L, 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.

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

Requirements for the BS Degree Program in Cyber Criminology

With the exception of CCJ 2020, 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 CIS 4360, totaling ten hours. 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.

A total of twelve elective hours must be completed, chosen from CDA 3100, CIS 3250, CNT 4406, CNT 4504, CNT 4603, COP 3252, COP 4342, COP 4530, COP 4610, 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, and CJL 4064. The capstone course CCJ 4938, CJ System Responses to Cybercrime, must be completed for three credits.

In mathematics, students must complete MAC 2311 AND MAD 2104 for seven hours.

Requirements for the BA Computer Programming and Applications Major

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, CEN 4090L, and CDA 3100, totaling sixteen hours. 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.

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 MAC 2311 and MAD 2104 for seven hours.

Students must complete a minor approved by the department and 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.

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.

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

Definition of Prefixes

CAP—Computer Applications

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

ISC—Interdisciplinary Sciences

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

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). Corequisite: COP 3330. This course is intended for computer science majors with a previous C/C++ background. It introduces fundamental concepts in computer organization and digital logic design, including number representation, instruction set architecture, logic gates and design, datapath and control, pipeline, memory hierarchy, the machine instruction execution cycle, and performance measures and assessment.

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 4090L. Software Engineering Capstone Project (1). Prerequisite: COP 4530. Corequisite: CEN 4020. In this course, students apply their software engineering, programming, and teamworking skills in a semester-long group project to design and implement an original software system from scratch. The team project exposes students to working in groups on a larger project and the complexity of communications among multiple participants.

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 teaches important computer and digital technology concepts and skills necessary to succeed in careers and in life. Course topics range from computer literacy basics, to today's technologies, and to the information systems on which today's businesses and organizations depend. Students learn about telecommunications, the Internet and the Web, management information systems, digital media, information security, digital society, as well as ethics.

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 with a minimum GPA of 3.2; and internship coordinator permission. This course involves field placement in an approved industry or government entity having a significant information technology or computer science component. 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 a demonstration of the educational value gained through the placement, usually through a paper and/or presentation. May be repeated to a maximum of (12) credit hours; repeatable within the same term.

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. Computer Security Fundamentals (3). Prerequisite: COP 4530. This is an undergraduate-level introduction to computer security, targeted towards seniors and advanced juniors. This course covers a broad range of topics within computer security, such as cryptographic algorithms, security protocols, network authentication, and software security.

CIS 4385. Cybercrime Detection and Forensics (3). Prerequisites: CIS 4360 and CJE 3110. 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 4403. Introduction to Computer Security for Non-CS Majors (3). This course is an introduction to computer security. The course covers fundamental issues and first principles and practices of computer security; particularly the security policies, models and mechanisms related to the confidentiality, integrity, authentication and availability of computer systems.

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 (9) credit hours; repeatable within the same term.

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. Advanced Programming with Java (3). Prerequisite: COP 3330. This course offers instruction in advanced programming using Java/ This course assumes the student is conversant with C++. The course covers the core features of the Java language, together with as many advanced topics as time permits.

COP 3330. Data Structures, Algorithms, and Generic Programming I (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. This course is primarily for Computer Science majors who are taking upper division CS courses. Students are also 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 4521. Secure Parallel and Distributed Computing with Python (3). Prerequisite: COP 4530. This course explores Python, a very popular and versatile programming language with applications across a variety of domains. This programming language owes its popularity to its ease of use and a large and dynamic list of third-party libraries. This course explores how several Python libraries can be used in different scenarios and applications to solve a diverse set of problems.

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

Graduate Courses

CAP 5137. Software Reverse Engineering and Malware Analysis (3).

CAP 5415. Principles and Algorithms of Computer Vision (3).

CAP 5605. Artificial Intelligence (3).

CAP 5619. Deep and Reinforcement Learning Fundamentals (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).

CEN 5526. Wireless and Mobile Computing (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


see Educational Psychology and Learning Systems