Undergraduate Course Descriptions

Definition of Prefixes

CAP—Computer Applications
CDA—Computer Design/Architecture
CEN—Computer Software Engineering
CGS—Computer General Studies
CIS—Computer Science and Information Systems (usually special topics)
CNT—Computer Networks
COP—Computer Programming (languages, data structures, software systems, operating systems, compiling)
COT—Computing Theory

General Information

This page presents all of the undergraduate courses available through the Computer Science Department at The Florida State University. Students pursuing a major within the Computer Science Department must review the degree requirements for their particular major or consult the Computer Science Undergraduate Academic Advisors to determine which courses will meet major requirements. Students in other majors seeking to satisfy the Computer Competency requirement of the University must consult their Academic Advisor, as each Department will specify the Computer Competency course their majors should take. Courses with the prefix “CGS” are intended for non-CS majors and will not meet the degree requirements for any major in the Computer Science Department except certain CGS courses for the Computer Programming & Applications major. Students in this major should consult with the Undergraduate Advisors for a list of approved CGS courses.

Most courses in the Computer Science Department have prerequisites or corequisites, which are indicated in italics next to the course titles below. Before taking any given course, the student must complete the prerequisite(s) to that course with a C- or above or consult the professor to receive permission to take the course. Department of Computer Science majors that skip prerequisite courses without departmental permission will still be required to take the prerequisite courses or substitute courses approved by the department before graduation.


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. [Satisfies the FSU computer competency requirement.]

CGS 2100. Microcomputer Applications for Business and 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. Not open to students with credit in CGS 2060. [Satisfies the FSU computer competency requirement.]

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.


CDA 3100. Computer Organization I (3). Corequisite: COP 3330. This course is intended for computer science majors with 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.

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

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. [Satisfies FSU Liberal Studies ethics requirement.]

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. [Satisfies FSU oral competency requirement.]

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.

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. [Satisfies FSU computer competency requirement.]

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. Not an approved CS elective for CS majors except for Computer Programming & Applications majors.

COP 3252. Advanced Programming with Java (3). Prerequisites: 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. Data Structures, Algorithms and Generic Programming I (previously titled “Object-Oriented Programming”) (3). Prerequisite: : COP 3014, COP3363, 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. [Satisfies FSU computer competency requirement.]

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.


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 4150. Computer Architecture (3). Prerequisite: CDA 3100. 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: COP4530. 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. [Satisfies the University’s Upper Division Writing requirement.]

CEN 4090L. Software Engineering Capstone (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. [Satisfies the University’s Scholarship in Practice requirement.]

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.

CIS 4138. Introduction to Software Reverse Engineering and Malware Analysis (3). Prerequisites: 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 3330. 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. 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). Prerequisites: CIS 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 (12) 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) 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). Prerequisites: 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 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 4342. Unix Tools (3). Prerequisites: 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 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 4530. Data Structures, Algorithms and Generic Programming II (3). Prerequisites: COP 3330 and MAD 2104. This course focuses on definition, use, and implementation of generic data structures using a modern programming language; reusable program components. This course also provides introduction to analysis of the complexity of algorithms, including sorting and searching.

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 3100. 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). Prerequisites: 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). Prerequisites: 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). Prerequisites: 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.


Department of Biological Science


Department of Chemistry and Biochemistry


College of Criminology and Criminal Justice


Department of Mathematics


Department of Physics


Department of Statistics