Computer and Information Science & Engineering

Herbert Wertheim College of Engineering and College of Liberal Arts and Sciences

Not all courses are offered every semester. Refer to the schedule of courses for each term's specific offerings.
More Info

Unless otherwise indicated in the course description, all courses at the University of Florida are taught in English, with the exception of specific foreign language courses.

Department Information

The mission of the Department of Computer & Information Science & Engineering is to educate students, as well as the broader campus community, in the fundamental concepts of the computing discipline; to create and disseminate computing knowledge and technology; and to use expertise in computing to help society solve problems.
Website

CONTACT

352.392.1090
Email 

P.O. Box 116120
E301 CSE BUILDING
GAINESVILLE FL 32611-6120
Map

 Curriculum


Bachelor's degree programs are currently available through the College of Liberal Arts and Sciences and the Herbert Wertheim College of Engineering. A minor in computer and information science, master's degree programs and a PhD program also are available.

There are strict limitations on the use of CGS and survey courses in the programs offered by the department.

College of Engineering degree program in computer engineering: Refer to the Herbert Wertheim College of Engineering section of the catalog for degree requirements; this program is offered by the CISE department.

The Herbert Wertheim College of Engineering offers two degrees in computer engineering: the CEN degree (computer engineering: software option) is offered by the CISE department and the CEE degree (computer engineering: hardware option) is offered by the ECE department.
More Info

The college also offers a computer science degree program through the CISE department.
More Info

College of Liberal Arts and Sciences degree program in computer science: refer to the College of Liberal Arts and Sciences section of the catalog for degree requirements.

Courses

CAI 4104 Machine Learning Engineering 3 Credits

Grading Scheme: Letter Grade

Covers foundational machine learning concepts with an emphasis on applying these concepts to real-world data through programming exercises and assignments using the relevant tools, libraries, and frameworks such as Python, Scikit-Learn, Tensorflow, and more.

Prerequisite: COP 3530 or COP 3504C. Experience with Python is a plus but not required.

CAP 3020 Theory and Practice of Multimedia Production 3 Credits

Grading Scheme: Letter Grade

Combines the traditional media production pipeline and software engineering processes to synthesize an approach geared for the production of works incorporating both artistic and computational elements.

Prerequisite: CAP 3027.

CAP 3027 Introduction to Digital Arts and Sciences 3 Credits

Grading Scheme: Letter Grade

Synergy between art and computing through a programming-oriented exploration of fundamental concepts in multimedia.

Prerequisite: COP 3504 or COP 3503.

CAP 3032 Interactive Modeling and Animation 1 3 Credits

Grading Scheme: Letter Grade

Introduces programming and data structures for interactive two-dimensional multimedia applications. Representing form and transforms in two dimensions, capturing user actions and driving application behavior interactively. Graphical interfaces, image processing, automata and basic artificial intelligence.

Prerequisite: MAC 1147 or equivalent.

CAP 3034 Introduction to Computer-Aided Animation 3 Credits

Grading Scheme: Letter Grade

Introduces topics related to computer-aided animation. Rigging for forward and inverse kinematics. Skin weighting. Morph targets. Expression-driven animation, rigid-body and particle simulation.

Prerequisite: MAC 1147 or equivalent.

CAP 3220 Introduction to Computer-Aided Modeling 3 Credits

Grading Scheme: Letter Grade

Introduces topics related to computer-aided modeling. Polygonal mesh, NURBS and subdivision surface meshes. Materials and shading networks. Lighting, shadows and rendering.

Prerequisite: MAC 1147 or equivalent.

CAP 4053 Artificial Intelligence for Computer Games 3 Credits

Grading Scheme: Letter Grade

Examines the use of A.I. in computer games. Topics include general A.I. knowledge, path finding, movement, tactics and planning, strategy, state machines, learning, dialogue, and emotions.

Prerequisite: COP 3530.

CAP 4112 Generating Expressiveness in Intelligent Agents and Avatars 3 Credits

Grading Scheme: Letter Grade

Methods to create expressiveness in physical and virtual agents; anthropomorphism and interactivity in human-robot interaction; intent versus intelligence; affect, emotion, and personality; expressiveness in human-like agents versus nonhuman-like agents; uncanny valley effect.

Prerequisite: COP 3530.

CAP 4136 Malware Reverse Engineering 3 Credits

Grading Scheme: Letter Grade

Introduction to the theory and practice of software reverse engineering applied to the analysis of malicious software (malware). Students will learn techniques of static and dynamic analysis to help identify the full spectrum of the behavior of code that is presented without documentation or source code and to identify possible remediation and avoidance techniques. The course will use a large number of software tools employed by malware and computer forensic analysts.

Prerequisite: CDA 3101 or instructor permission.

CAP 4613 Deep Learning for Computer Graphics 3 Credits

Grading Scheme: Letter Grade

This undergraduate course covers deep learning basics, related math and the fundamental theory and application of AI algorithms most popular in the field of computer graphics. Programming assignments will help students develop GPU programming skills while implementing concepts learned in lectures and readings using deep learning APIs on a GPU cluster. Convolutional neural networks (CNNs) for colorizing black and white movies is an example.

Prerequisite: COP 3530 or MAS 3114 or 4105.

CAP 4621 Artificial Intelligence and Heuristics 3 Credits

Grading Scheme: Letter Grade

Introduces artificial intelligence concepts. Heuristic search, clause form logic, knowledge representation, reasoning and inference, overview of computer vision, planning, natural language, Lisp and Prolog. (M)

Prerequisite: COP 3530.

CAP 4641 Natural Language Processing 3 Credits

Grading Scheme: Letter Grade

Introduction to the essential concepts, principles, and techniques of Natural Language Processing (NLP). Practical application and theoretical concepts are examined. Topics include information extraction, language construction, grammars, disambiguation, as well as system modeling, classification, and evaluation.

Prerequisite: COP 3530.

CAP 4730 Computational Structures in Computer Graphics 3 Credits

Grading Scheme: Letter Grade

Studies the major topics in computer graphics: display and output technology, two and three dimensional manipulations; space curves and surfaces, hidden surface removal and shading models.

Prerequisite: COP 3530.

CAP 4770 Introduction to Data Science 3 Credits

Grading Scheme: Letter Grade

Introduces the basics of data science including programming for data analytics, file management, relational databases, classification, clustering, and regression; lays the foundation for big data applications ranging from social networks to medical and business informatics.

Prerequisite: COP 3530.

CAP 4773 Projects Data Science 3 Credits

Grading Scheme: Letter Grade

Prerequisite: CAP 4770 with a minimum grade of C.

CDA 3101 Introduction to Computer Organization 3 Credits

Grading Scheme: Letter Grade

Organization of computing systems. Logical basis of computer structure. Machine representation of instructions and data, flow of control, and basic machine instructions. Assembly language programming. (M)

Prerequisite: (COP 3504 or COP 3503) and (MAC 2233 or MAC 2311 or MAC 3472) and COT 3100.

CDA 4102 Computer Architecture 3 Credits

Grading Scheme: Letter Grade

Introduces computer architecture and system organization including virtual memory supports cache, pipeline, vector processing, multiprocessor and RISC architecture.

Prerequisite: CDA 3101 and COP 3530.

CDA 4630 Embedded Systems 3 Credits

Grading Scheme: Letter Grade

Design of efficient and trustworthy embedded and cyber-physical systems consisting of hardware, software, firmware, sensors, and actuators. Covers fundamental issues related to modeling and specification, design space exploration, hardware-software partitioning, synthesis and compilation, real-time operating systems, and application-specific optimizations targeting area, power, performance, temperature, energy, and security.

Prerequisite: CDA 3101 with minimum grade of C.

CEN 3031 Introduction to Software Engineering 3 Credits

Grading Scheme: Letter Grade

Topics include software planning, specifications, coding, testing and maintenance. Gain experience in the team approach to large system development. (M)

Prerequisite: COP 3530.

CEN 3907C Computer Engineering Design 1 3 Credits

Grading Scheme: Letter Grade

Reinforce basic computer engineering skills; design, produce, and report on a computer engineering project, meeting defined specifications and using a structured design methodology and project management.

Prerequisite: CEN 3031 and EEL 3744C with minimum grades of C.

Corequisite: COP 4600

CEN 3908C Computer Engineering Design 2 3 Credits

Grading Scheme: Letter Grade

Selected capstone design projects involving engineering applications in the various areas of computer engineering. Must be taken prior to the semester of graduation .

Prerequisite: CEN 3907C with minimum grade of C and senior standing.

CEN 3913 Computer and Information Science and Engineering Design 1 3 Credits

Grading Scheme: Letter Grade

Preparatory skills are developed for CISE Design 2 for Computer Engineering students. Teams design, produce and report on a software prototype, meeting defined specifications and using a structured design methodology and project management.

Prerequisite: CEN 3031.

CEN 4072 Software Testing and Verification 3 Credits

Grading Scheme: Letter Grade

Concepts, principles and techniques of software testing and verification. Strengths and limitations of black-box and white-box testing methods; techniques for proving the correctness of programs.

Prerequisite: CEN 3031.

CEN 4721 Human-Computer Interaction 3 Credits

Grading Scheme: Letter Grade

Studies the major topics in the study, planning and design of the interaction between people and computers. Topics include interface design (principles, theories and guidelines), virtual environments, interactive devices and collaboration.

Prerequisite: COP 3530.

CEN 4722 User Experience Design 3 Credits

Grading Scheme: Letter Grade

Introduces methods and tools used in User Experience Design (UXD): the early stages of software design focused on meeting user needs. Key concepts include user research, contextual design, design thinking, ideation, iterative design, prototyping, and design documentation. Projects utilize software tools used in the industry.

Prerequisite: COP 3530.

CEN 4725 Natural User Interaction 3 Credits

Grading Scheme: Letter Grade

Introduces the design, development and evaluation of Natural User Interaction (NUI) technologies (e.g., non-keyboard and mouse technologies such as touchscreen interaction, gesture interaction, speech interaction, etc.). Discussion of the hardware-to-software NUI pipeline and key considerations when developing NUI software, including existing platforms, toolkits and APIs used to create NUI software.

Prerequisite: COP 3530 with minimum grade of C.

CEN 4730 Human-Centered Input Recognition Algorithms 3 Credits

Grading Scheme: Letter Grade

Human-centered methods for the design and evaluation of intelligent algorithms for recognizing user input in advanced modalities such as gesture, handwriting, speech, and more. Algorithms and modalities vary; implement and extend an existing algorithm, evaluating it on user input data collected from real people.

Prerequisite: COP 3530 with a minimum grade of C.

CEN 4914 Computer and Information Science and Engineering Design 2 3 Credits

Grading Scheme: Letter Grade

Involves completing a significant CEN-related project. Coordinate with the instructor and a project advisor, prepare a detailed technical report and deliver an oral presentation.

Prerequisite: CEN 3913.

CGS 2032 Math, Art and Computing 3 Credits

Grading Scheme: Letter Grade

Introduces interdisciplinary computer science topics. Logic, discrete structures, algorithms and automa. Exploration of topics relating mathematics and computing to art, music and nature. (M)

Prerequisite: MAC 1147.

Attributes: General Education - Mathematics

CGS 3063 Computers and Modern Society 3 Credits

Grading Scheme: Letter Grade

Impact of computers on society. Discussion includes specific cases from many areas, but does not include problem solution. Does not teach how to use the computer but instead gives an understanding of the implications of computers.

Prerequisite: COP 3502C with a minimum grade of C.

Attributes: General Education - Social Science, Satisfies 6000 Words of Writing Requirement

CGS 3065 Legal and Social Issues in Computing 3 Credits

Grading Scheme: Letter Grade

Explores the history, the myth, the ethics, the law, and the risks of computer-based technology in modern society. Emphasizes critical analysis of hypotheticals and case studies. Published material is supplemented with online references.

Prerequisite: COP 3502C with a minimum grade of C.

CGS 4144 Introduction to Bioinformatic Algorithms 3 Credits

Grading Scheme: Letter Grade

Uses Compeau and Pevzner’s active learning approach from their textbook, Bioinformatics Algorithms, to cover fundamental topics in genomics, machine learning, and biological data science, striking a unique balance between practical challenges in modern biology and fundamental algorithmic ideas.

Prerequisite: COT 3100 and COP 3503 with minimum grades of C.

CGS 4853C Introduction to Web Development and Design 3 Credits

Grading Scheme: Letter Grade

Introduces HTML and CSS topics such as text configuration, color configuration, and page layout, with an enhanced focus on the topics of design, accessibility, and Web standards. The text relates both the necessary hard skills (such as HTML5, CSS, and JavaScript) and soft skills (design, e-commerce, and promotion strategies) considered fundamental to contemporary web development. Students will experience developing and designing a web application.

Prerequisite: COP 3502 and COP 3503.

CIS 4204 Penetration Testing: Ethical Hacking 3 Credits

Grading Scheme: Letter Grade

Introduces principles and techniques associated with the cybersecurity practice known as penetration testing or ethical hacking. Covers planning, reconnaissance, scanning, exploitation, post-exploitation, and result reporting. Discover how system vulnerabilities can be exploited and learn to avoid such problems.

Prerequisite: COP 3530.

CIS 4213 Enterprise Security 3 Credits

Grading Scheme: Letter Grade

Provides an introduction to the real-world aspects of defending an enterprise network. Students will gain hands-on experience performing system security tasks and handling incidents. The class begins with a basic introduction to enterprise cybersecurity, the attack sequence, and managing cybersecurity. Then lecture, homework and lab activities cover the center for internet security's twenty essential security controls.

Prerequisite: COP 3530.

CIS 4301 Information and Database Systems 1 3 Credits

Grading Scheme: Letter Grade

First part of a two-course sequence that studies the essential concepts, principles and techniques of modern database systems. Topics include modeling and querying of data using conceptual data models as well as the development of a database application. (M)

Prerequisite: (COP 3504 or COP 3503) and COT 3100.

CIS 4360 Computer and Information Security 3 Credits

Grading Scheme: Letter Grade

Covers systematic threat and risk assessment; programmed threats and controls in hardware, software, and human procedures; security policies, models, and mechanisms; theoretical limitations and practical implementations; certification and accreditation standards; and case study reviews. Includes projects.

Prerequisite: COP 4600 or equivalent.

CIS 4362 Introduction to Cryptology 3 Credits

Grading Scheme: Letter Grade

Introduces classical and modern cryptography and cryptanalysis, including symmetric and asymmetric (public key) ciphers. Covers cryptographic hash functions, block and stream ciphers, as well as differential and linear cryptanalysis. Reviews applications of cryptography, cryptographic standards and protocols, and analyzes case studies of failed implementations.

Prerequisite: COT 3100 or the equivalent.

CIS 4715 CS Teaching & Learning 0-1 Credits

Grading Scheme: Letter Grade

Covers basic pedagogy, especially as it relates to computer science and engineering, and covers three fundamental elements in education: learning environment, educational theory, and educational practice as approached to engineering-specific training.

Prerequisite: COP 3502.

CIS 4905 Individual Study in CISE 1-4 Credits

Grading Scheme: Letter Grade

Problems in different areas of computer science.

Prerequisite: COP 3502C with a minimum grade of C.

CIS 4912C Integrated Product and Process Design 1 3 Credits

Grading Scheme: Letter Grade

First part of a two-course sequence where teams of engineering and business students partner with industry sponsors to design and build authentic products and processes. Working closely with an industry liaison engineer and a faculty coach, students gain practical experience in teamwork and communication, problem solving and engineering design, and develop leadership, management and people skills. Weekly workshop activities adapt lecture topics to individual projects. Learn firsthand how to develop products and processes that meet customer requirements on time and within budget.

Prerequisite: CDA 3101, COP 3530, COT 3100 and instructor permission.

CIS 4913C Integrated Product and Process Design 2 3 Credits

Grading Scheme: Letter Grade

Second part of a sequence where teams of engineering and business students partner with industry sponsors to design and build authentic products and processes.

Prerequisite: CIS 4912C.

CIS 4914 Senior Project 3 Credits

Grading Scheme: Letter Grade

Involves completing a significant CISE-related project. Coordinate with the instructor and a project advisor, prepare a detailed technical report and deliver an oral presentation. (M)

Prerequisite: senior CISE standing or higher and approved project proposal.

CIS 4930 Special Topics in CISE 1-4 Credits

Grading Scheme: Letter Grade

Variable content provides an opportunity for in-depth study of topics not offered elsewhere and of topics of current significance.

Prerequisite: COP 3503C or COP 3504C or instructor permission.

CIS 4940 Practical Work 1 Credit

Grading Scheme: S/U

One term practical software engineering work under industrial supervision as set forth in the Herbert Wertheim College of Engineering regulations.

Prerequisite: COP 3502C with a minimum grade of C.

CIS 4949 Co-Op Work in CISE 1 Credit

Grading Scheme: S/U

Practical engineering work under industrial supervision, as set forth in the Herbert Wertheim College of Engineering regulations.

Prerequisite: COP 3502C with a minimum grade of C.

CIS 4956 Overseas Studies 1 1-15 Credits

Grading Scheme: Letter Grade

Provides a mechanism by which coursework taken as part of an approved study abroad program can be recorded on the UF transcript and counted toward graduation.

Prerequisite: COP 3502C with a minimum grade of C.

CNT 4007 Computer Network Fundamentals 3 Credits

Grading Scheme: Letter Grade

Fundamental concepts, principles, and standards of computer networks. Introduces topics in top-down approach, starting with the application layer in the OSI system architecture with a stronger focus on application, transport, and network layers.

Prerequisite: COP 3530.

Corequisite: COP 4600.

CNT 4520 Introduction to Mobile Networking 3 Credits

Grading Scheme: Letter Grade

Fundamental concepts of emerging mobile networks architecture, systematic analysis of effects of mobility on network performance, synthetic and data-driven mobility modeling and simulation, behavior analysis in mobile networks, mobile service and application structure, development, implementation, and evaluation. Topics include architecture, geographic routing and query resolution in ad hoc networks, sensor networks, Internet of Things, and vehicular networks.

Prerequisite: COP 3502C or COP 3503C or above.

CNT 4731 Multimedia Networking Principles 3 Credits

Grading Scheme: Letter Grade

Design and analysis of multimedia networking. Major effort is devoted on multimedia elements, and their impact on higher-level protocols at the application- and transport-layer.

Prerequisite: CNT 4007 with minimum grade of C.

COP 2271 Computer Programming for Engineers 2 Credits

Grading Scheme: Letter Grade

Computer programming and the use of computers to solve engineering and mathematical problems. Emphasizes applying problem solving skills; directed toward technical careers in fields employing a reasonably high degree of mathematics. The programming language used depends on the demands of the departments in the college. Several languages may be taught each semester, no more than one per section. Those required to learn a specific language must enroll in the correct section. (M)

Prerequisite: MAC 2312 with minimum grade of C.

COP 2800 Computer Programming Using JAVA 3 Credits

Grading Scheme: Letter Grade

In-depth treatment of computer programming using JAVA. Problems related to a variety of disciplines are solved. Introduces the basic concepts of software and hardware; develop a variety of stand-alone applications and applets. For non-CISE majors only.

Prerequisite: MAC 1147 or the equivalent.

COP 3013 Programming Language Survey 1-3 Credits

Grading Scheme: Letter Grade

Introduces a specific programming language which may vary according to section. Course may be repeated for different programming languages. Covers variables, basic control structures, procedures, arithmetic, and syntax for the language, as well as some language-specific features. No prior knowledge of programming is needed.

Prerequisite: MAC 1147; cannot be taken after COP 3502C

COP 3275 Computer Programming Using C 3 Credits

Grading Scheme: Letter Grade

Solve problems related to a variety of disciplines; introduces the basic concepts of software and hardware. (M)

Prerequisite: MAC 1147 or the equivalent.

COP 3502C Programming Fundamentals 1 4 Credits

Grading Scheme: Letter Grade

First course of a two-semester introductory sequence for those planning further study in computer science, digital arts and sciences or computer engineering. Concepts of computer science and the process of computer programming, including object-oriented programming, procedural and data abstraction and program modularity.

Corequisite: MAC 2311.

COP 3503C Programming Fundamentals 2 4 Credits

Grading Scheme: Letter Grade

Second course of a two-semester introductory sequence for those planning further study in computer science, digital arts and sciences or computer engineering. Concepts of computer science and the process of computer programming, including object-oriented programming, procedural and data abstraction and program modularity.

Prerequisite: COP 3502 and MAC 2311 with minimum grades of C.

COP 3504C Advanced Programming Fundamentals for CIS Majors 4 Credits

Grading Scheme: Letter Grade

Fast-paced introduction to computer science for those with prior programming experience. Explores major concepts of computer science and the process of computer programming, including object-oriented programming, procedural and data abstraction and program modularity.

Prerequisite: (MAC 2311 or MAC 3472) and programming experience.

COP 3530 Data Structures and Algorithm 3 Credits

Grading Scheme: Letter Grade

Algorithm development using pseudo languages, basic program structures, program design techniques, storage and manipulation of basic data structures like arrays, stacks, queues, sorting and searching and string processing. Linked linear lists. Trees and multilinked structures. (M)

Prerequisite: (COP 3504 or COP 3503) and COT 3100 and (MAC 2234 or MAC 2312 or MAC 2512 or MAC 3473), all with a minimum grade of C.

COP 4020 Programming Language Concepts 3 Credits

Grading Scheme: Letter Grade

Introduces programming language principles, including language constructs, design goals, run-time structures, implementation techniques and exposure to a wide variety of programming paradigms.

Prerequisite: COP 3530.

COP 4331 Object-oriented Programming 3 Credits

Grading Scheme: Letter Grade

Fundamental conceptual models for programming languages illustrated with specific programming languages and application problems. Specific topics include class and object models, inheritance among classes, objects and static and dynamic systems and implementations.

Prerequisite: COP 3530.

COP 4533 Algorithm Abstraction and Design 3 Credits

Grading Scheme: Letter Grade

Covers algorithmic concepts and their use rooted in practical application and computer science theory. Topics include algorithmic paradigms, limits of computing, and algorithm time complexity classes.

Prerequisite: COP 3530.

COP 4554 Programming Language Inquiry 1-3 Credits

Grading Scheme: Letter Grade

In-depth, thorough examination of specific programming languages, which may vary according to section. Course may be repeated for different languages. Topics include memory allocation and management, language-specific variables, and control mechanics. Knowledge and experience in programming is needed prior to taking this course. As such, the basic elements of programming will not be covered, but instead advanced programming constructs and topics in the language.

Prerequisite: COP 3503C.

COP 4600 Operating Systems 3 Credits

Grading Scheme: Letter Grade

Design and implementation of various components of a modern operating system, including I/O programming, interrupt handling, process and resource management, computer networks and distributed systems. (M)

Prerequisite: CDA 3101 and COP 3530; knowledge of C or C++ recommended.

COP 4620 Translators and Translator Writing Systems 3 Credits

Grading Scheme: Letter Grade

Translation of languages, scanning and parsing techniques. Translator writing systems. The implementation of a compiler. (M)

Prerequisite: COP 3530.

COP 4720 Information and Database Systems 2 3 Credits

Grading Scheme: Letter Grade

Part two of a two-course sequence. Provides a basic understanding of the internals of a modern database system. Topics include data storage, indexing, query processing and advanced concepts such as database tuning, alternate data models and emerging applications. (M)

Prerequisite: CIS 4301 and COP 3530.

COT 3100 Applications of Discrete Structures 3 Credits

Grading Scheme: Letter Grade

Covers the mathematics of discrete events; i.e., events that involve distinct elements, finite structures of distinct elements or finite sampled versions of continuous phenomena (such as movement). (M)

Prerequisite: (MAC 2311 or MAC 3472) and (COP 3502 or equivalent), all with a minimum grades of C;

Corequisite: COP 3504 or COP 3503.

Attributes: General Education - Mathematics

COT 4501 Numerical Analysis: a Computational Approach 3 Credits

Grading Scheme: Letter Grade

Numerical integration, nonlinear equations, linear and nonlinear systems of equations, differential equations and interpolation.

Prerequisite: (COP 3504 or COP 3503) and MAS 3114.

EGN 4912 Engineering Directed Independent Research 0-3 Credits

Grading Scheme: S/U

Provides firsthand, supervised research with a faculty advisor or postdoctoral or graduate student mentor. Projects may involve inquiry, design, investigation, scholarship, discovery, or application.

Prerequisite: Department permission.

EGS 1005 Prep for Success 1-4 Credits

Grading Scheme: S/U

Freshman success course that includes academic preparation in calculus, chemistry, student success, and technical communications.

Prerequisite: EG student.

IDC 4710 Virtual Reality for the Social Good 3 Credits

Grading Scheme: Letter Grade

Multidisciplinary approach to solving pressing social problems by blending social science practices with innovative technology. Explore effective messaging perspectives, virtual social spaces, and virtual reality technologies to create a compelling story for a social good issue. Open to all juniors and seniors, regardless of major or prior experience.

Prerequisite: Junior or above.