Computer Science Courses

CS
100
Hours
4
CS I for Majors

A first course in programming for students majoring in computer science. Language concepts include primitives, variables, sequences, function, selection, iteration and recursion. Software engineering concepts include testing and debugging. System concepts include directories, paths, files, and text editing.

Prerequisite(s): UA Placement Mathematics 440 or UA ACT Subject Math Placement 565 or ACT Mathematics 30 or SAT Mathematics 680 or SAT Mathematics (New) 710 or (C- or higher in (MATH 112 and MATH 113) or MATH 115) or ((MATH 125 or MATH 145 or MATH 126 or MATH 146) with Concurrency)
Prerequisite(s) with concurrency: MATH 125 or MATH 145 or MATH 126 or MATH 146
CS
101
Hours
4
CS II for Majors

A second course in programming for students majoring in computer science. Using a high-level language, students use object-oriented practices to study fundamental data structures and algorithms. Issues such as computability, problem complexity and algorithm analysis, efficient searching and sorting, data structures, and the object-oriented programming paradigm are introduced and explained. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): (CS 100 or CS 110) and (MATH 125 or MATH 145)
Computer Science
CS
102
Hours
3
Computer Applications

Familiarization with Windows, fundamental and intermediate word processing commands, spreadsheet applications, and database management. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
104
Hours
3
Computer Science Principles

An introductory course that includes a broad overview of five core principles of computer science. The course content is focused on computing and its relation to innovation, abstraction, algorithms and programming, computing systems and networks, and data. Course projects encourage creativity. In the course, students will consider the impact made by computing innovations, create simple programs in the Python programming language, and collaborate to conduct data analysis. Computing proficiency is required for a passing grade in this course.

Prerequisite(s) with concurrency: MATH 112 or MATH 115 or MATH 125 or MATH 126 or MATH 145 or MATH 146
Computer Science
CS
110
Hours
4
Honors CS I for Majors

This course covers the same material as CS 100 but in a depth appropriate for honors students. It is an honors version of the first course in programming for students majoring in computer science. Prior knowledge of programming is not required, but the course is appropriate for students with prior programming experience. Language concepts include primitives, variables, sequences, function, selection, iteration and recursion. Software engineering concepts include testing and debugging. System concepts include directories, paths, files, and text editing.

Prerequisite(s): UA Placement Mathematics 440 or UA ACT Subject Math Placement 565 or ACT Mathematics 30 or SAT Mathematics 680 or SAT Mathematics (New) 710 or (C- or higher in (MATH 112 and MATH 113) or MATH 115) or ((MATH 125 or MATH 145 or MATH 126 or MATH 146) with Concurrency)
Prerequisite(s) with concurrency: MATH 125 or MATH 145 or MATH 126 or MATH 146
University Honors
CS
111
Hours
4
Honors CSII for Majors

This course covers the same material as CS 101 but in a depth appropriate for honors students. It is an honors version of the second course in programming for students majoring in computer science. Using a high-level language, students use object-oriented practices to study fundamental data structures and algorithms. Issues such as computability, problem complexity and algorithm analysis, efficient searching and sorting, data structures, and the object-oriented programming paradigm are introduced and explained.

Prerequisite(s): (CS 110 or CS 100 or RRS 102) and (MATH 125 or MATH 145)
University Honors
CS
112
Hours
3
Digital Literacy

This course is designed to help the students acquire various competencies that will enable them to safely and effectively use and create digital technologies and Internet resources in personal, academic, and professional contexts. Students will demonstrate their learning by creating a digital literacy portfolio. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
140
Hours
3
Introduction to Cyber Security

This course provides an introduction to cyber security. It covers fundamental concepts necessary to understand the threats to security as well as various defenses against those threats. The material includes an understanding of existing threats, planning for security, technology used to defend a computer system, and implementing security measures and technology.

Prerequisite(s): CS 100
CS
200
Hours
4
Software Design and Engineering

Introduction to software engineering: the software crisis, program life cycle, software systems analysis techniques, software modeling, theory and practice of design, program testing methodologies, programmer team organization, and program verification and synthesis. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 101 or CS 111
Computer Science
CS
201
Hours
4
Data Structures and Algorithms

Data structures including balanced search trees, heaps, hash tables, and graphs. Algorithm design techniques including divide-and-conquer, greedy method, and dynamic programming. Emphasis on problem solving, design, analysis, and reasoning about data structures and algorithms. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): ((CS 101 or CS 111), MATH 301, (UA 101 or UA 201) and ((ENGR 101 and ENGR 104) or AS 110 or AS 310)) or ((CS 101 or CS 111), MATH 301, and (ENGR 103 or ENGR 123))
Computer Science
CS
202
Hours
3
Web Foundations

Introduces the student to the fundamentals of the internet and web page design and development. Students will be shown how to use the internet, text editors, and build basic web pages using HTML coding. This will include, but not be limited to hyperlinks, tables, basic CSS styling, frames and forms. The student will also be given demonstrations and assignments using a WYSIWYG editor.

Computer Science
CS
223
Hours
3
Introduction to Python Programming

A course designed to introduce programming and problem solving using Python. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): MATH 112 or currently enrolled in MATH 113 or MATH 115 or higher
Computer Science
CS
240
Hours
3
Hands-On Cyber Security

This immersive course is designed to equip students with practical cyber security skills through a dynamic blend of Capture the Flag (CTF) challenges and hands-on lab exercises. The material will cover common topics encountered in CTF competitions such as OSINT, Password Cracking, Forensics, Network Traffic Analysis, and Web App Exploitation. The labs will cover the use of essential cyber security tools and techniques, providing invaluable hands-on experience.

Prerequisite(s): CS 140
CS
247
Hours
3
Cyber Law and Ethics

Students will analyze advanced legal and ethical issues confronting the usage of new technologies and how these issues impact society. Students will examine past, contemporary and emerging cases that have a connection to computing technology. Human values and ethics will be at the forefront of our approach, and students will study the intersection of human values, law and professional ethics.

Prerequisite(s): CS 100 or CS 110 or CS 223
Humanities
CS
285
Hours
3
Intro to Spreadsheet Applications

Use of spreadsheets and other environments to build business and scientific applications. Course includes development of problem-solving skills and an introduction to the object-oriented paradigm. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
301
Hours
3
Database Management Systems

Constituent parts of database management (design, creation, and manipulation of databases), including the conceptual and relational data models, SQL, normalization and security. Writing proficiency is required for a passing grade in this course. A student who does not write with the skill normally required of an upper-division student will not earn a passing grade, no matter how well the student performs in other areas of the course.

Prerequisite(s): CS 201 and (CS 200 or MATH 355)
Writing
CS
302
Hours
3
Database Applications

An introduction to commercial database packages. Students will gain familiarity with both creating and using standard database software packages to solve real-world problems. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
305
Hours
3
Advanced Database Applications and Design

This course is a follow-up course to CS 302 for non-majors wishing to learn more about the design and use of database systems. Now that the underpinnings of data, data representation, and data visualization are in place from CS 302, students will undertake an investigation into the uses of data and the construction of and understanding of databases design principles. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 302 with a grade of C- or higher
Computer Science
CS
312
Hours
3
Website Design

A course designed to teach website design principles and implementation techniques. The course requires prior knowledge of the fundamentals of the internet and web page design and development. This class is not cross-listed as a graduate course. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 202 with a grade of C- or higher
Computer Science
CS
323
Hours
3
Intermediate Python Programming

A course designed to build upon topics from the Introduction to Python Programming course and introduces advanced programming and problem-solving topics using the Python language. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 223 or CS 100 or by permission of instructor
Computer Science
CS
330
Hours
3
Full-Stack Development

The study and application of common design patterns, frameworks, and best practice to the process of systematic web-based software development. Students build enterprise applications using industry-wide standardized tools and frameworks.

Prerequisite(s) with concurrency: CS 301
CS
338
Hours
3
Networking and Operating Systems

Introduction to system support for application programs, both on single node and over network: OS application interface, inter-process communication, introduction to system and network programming, and simple computer security concepts; hands-on lab assignments.

Prerequisite(s): CS 201 and (CS 200 or CS 240)
CS
340
Hours
3
Legal & Ethical Issues in Comp

By way of case study, the course finds and frames issues related to legal and ethical issues in computing. Topics include privacy, free speech, intellectual property, security, and software reliability and liability issues. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
345
Hours
3
Adv. Legal & Ethical Issues

By way of case study and fact pattern analysis, we will find and frame advanced legal and ethical issues presented by past, contemporary and emerging technology. Cases and events will be examined. At the conclusion of the semester, students will be able to identify and discuss legal and ethical issues presented by technology. Students will create a seminal project showcasing their understanding of a chosen issue as well as the student's ability to use computing technology to communicate, share and display their work. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 340 with a grade of C- or higher
Computer Science
CS
385
Hours
3
Advanced Spreadsheet Applications

Design and construction of standard user interfaces using a visual programming environment. Course includes the prototyping of several standard user interface mechanisms. Computing proficiency is required for a passing grade in this course.

Prerequisite(s): CS 285 with a grade of C- or higher
Computer Science
CS
391
Hours
3
Special Topics

Special topics in computing.

Special Topics Course
CS
393
Hours
3
Software Practicum

Software development course designed to meet the needs of individual students. This course is specifically for students developing software for an enterprise, such as those at The Edge Incubator and Accelerator.

Prerequisite(s) with concurrency: CS 301
CS
403
Hours
3
Programming Languages

Formal study of programming language specification, analysis, implementation, and run-time support structures; organization of programming languages with emphasis on language constructs and mechanisms; and study of non-procedural programming paradigms.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
404
Hours
3
CS Curriculum for Math Educators

Building upon the concepts from CS 104, students will explore in-depth how computer science education is presented in the secondary education setting. Students will get the opportunity to explore current computer science curriculum and develop resources for future teaching, with a specific emphasis on the College Board’s AP CS Principles (AP CSP) curriculum.

Prerequisite(s): CS 104
CS
407
Hours
3
Software Interface Desgn

Basic concepts of human-computer interaction, including guidelines for interface design, evaluation of interface designs, virtual environments, menus, forms, natural language interactions, novel interaction devices, information search and information visualization.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
416
Hours
3
Testing and Quality Assurance

Study of verification & validation and related processes. Topics include techniques and tools for software analysis, testing, and quality assurance.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
417
Hours
3
Requirements Engineering

Study of requirements engineering and it's phases. Topics include formal, semi-formal, and informal paradigms for elicitation, documentation, and management of software system requirements.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
420
Hours
3
Software Evolution

Study of techniques and tools for design-time and run-time software adaptation, including principles of reflection and metaprogramming, software modularity, metamodeling and software language engineering.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
423
Hours
3
Python for Big Data

Students in this course will utilize Python libraries such as Pandas, NumPy, and Dask for data manipulation and analysis, along with tools like Apache Spark for handling large datasets efficiently. The course will cover key concepts such as data ingestion, processing, and visualization, ensuring students can transform raw data into meaningful insights. Hands-on projects and real-world case studies provide students with practical experience, in order to address the challenges in data processing and analytics.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
428
Hours
3
Computer Security

An examination of computer security concepts, such as cryptographic tools, user authentication, access control, database security, intrusion detection, malicious software, denial of service, firewalls and intrusion prevention systems, trusted computing and multilevel security, buffer overflow, software security, physical and infrastructure security, human factors, and security auditing.

Prerequisite(s): CS 140 and (CS 300 or CS 338) and CS 301 and ECE 383
CS
434
Hours
3
Compiler Construction

Syntax and semantics of procedure-oriented languages and translation techniques used in their compilation; includes computer implementation.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
435
Hours
3
Computer Graphics

Fundamentals of interactive 3-D computer graphics, including modeling and transformations, viewing, lighting and shading, mapping methods, graphics pipeline, shading languages, and interaction techniques. Programming projects are required.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
438
Hours
3
Computer Comm & Networks

The study of the issues related to computer communications. Topics include physical topologies, switching, error detection and correction, routing, congestion control, and connection management for global networks (such as the Internet) and local area networks (such as Ethernet). In addition, network programming and applications will be considered.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
442
Hours
3
Cryptography

This course will cover algorithms and concepts in cryptography and data security. We will undertake an examination of algorithms and concepts in cryptography and data security, such as symmetric ciphers, asymmetric ciphers, public-key cryptography, hash functions, message authentication codes, key management and distribution, etc.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
443
Hours
3
Digital Forensics

Digital Forensics is an area of study that is rapidly growing in importance and visibility. It involves preserving, identifying, extracting, documenting and interpreting digital data. Though sometimes misunderstood, digital forensics is like other types of investigation. With the continuous rise of computer-related incidents and crimes, and the increased emphasis on homeland defense in this country, there is a growing need for computer science graduates with the skills to investigate these crimes. This course will introduce the topics of computer crime and digital forensics. Students will be required to learn different aspects of computer crime and ways in which to uncover, protect and exploit digital evidence.

Prerequisite(s): CS 428
CS
444
Hours
3
Software Security

This course is an introduction to software security principles and practices. Topics for this course will include but not be limited to security architectures, defensive programming, web security, secure information flow, and common software vulnerabilities.

Prerequisite(s): CS 428
CS
445
Hours
3
Software Reverse Engineering

Software Reverse Engineering is an area of study that is rapidly growing in importance and visibility. This course will reveal to students the challenges of monitoring and understanding software systems. During the course students will become familiar with the practice of software reverse engineering files by utilizing static and dynamic techniques, and methods in order to gain an understanding as to what impact a file may have on a computer system.

Prerequisite(s): CS 428
CS
448
Hours
3
Network Security

Concepts concerning network security, including an examination of network security concepts, algorithms, and protocols.

Prerequisite(s): CS 438
CS
451
Hours
3
Data Science

This course introduces fundamental concepts & techniques in data science as well as develops practical skills for data analysis in real-world applications. Given the multi-disciplinary nature of data science, the course will primarily focus on the advantages and disadvantages of various methods for different data characteristics, but will also provide some coverage on the statistical or mathematical foundations. Topics to cover include data preprocessing, data exploration, relationship mining, prediction, clustering, outlier detection, deep learning, spatial and spatiotemporal data analysis, text data analysis, and big data.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383)) and (MATH 355 or GES 255) and MATH 237
CS
452
Hours
3
Information Retrieval

This course is an introduction to information retrieval principles and practices. The course will cover several aspects of Information Retrieval including; indexing, processing, querying, and classifying data. Also, retrieval models, algorithms, and implementations will be covered. Though the class will focus primarily on textual data, other media including images/videos, music/audio files, and geospatial information will be addressed. Topics for this course will include but not be limited to: text processing and classification, web search development techniques, and document clustering.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
455
Hours
3
Social Media Data Analytics

The world is experiencing rapid growth in the amount of published data which come from different sources, including Social Media platforms. The availability of programming interfaces to these platforms allows for near real-time processing of these data for various purposes. This course will reveal to students the inherent challenges of analyzing Social Media data and introduce tools and techniques that are available to address them.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
460
Hours
3
Intro to Autonomous Robotics

Issues involved with the implementation of robot control software including motion, kinematics, simulation testing, sensor incorporation and unmodeled factors.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
461
Hours
3
Brain Computer Interface

This course involves the exploration of new forms of Human-Computer Interaction (HCI) based on passive measurement of neurophysiological states (cognitive and affective). These include the measurement of cognitive workload and affective engagement.

Prerequisite(s): ((CS 300 or CS 338) and CS 301 and ECE 383) or permission of instructor for non-CS majors
CS
463
Hours
3
Computer Vision

This course is a broad introduction to computer vision. Topics include camera models, multi-view geometry, reconstruction, some low-level image processing, and high-level vision tasks like image classification and object detection.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
465
Hours
3
Artificial Intelligence

The advanced study of topics under the umbrella of artificial intelligence including problem solving, knowledge representation, planning and machine learning.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
466
Hours
3
Mathematics for AI

This course provides a comprehensive foundation in the mathematical concepts and techniques essential for understanding and developing artificial intelligence algorithms. Emphasizing both theoretical principles and practical applications, key areas including linear algebra, calculus, probability, and statistics will be explored.

Prerequisite(s): CS 301 and (CS 300 or CS 338) and ECE 383
CS
470
Hours
3
Computer Algorithms

Construction of efficient algorithms for computer implementation.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383))
CS
475
Hours
3
Formal Languages & Machines

Regular expressions and finite automata. Context free grammars and pushdown automata. Recursively enumerable languages and the Turing machine. The Chomsky hierarchy.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
480
Hours
3
Computer Simulation

Introduction to simulation and use of computer simulation models; simulation methodology, including generation of random numbers and variants, model design, and analysis of data generated by simulation experiments.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
CS
481
Hours
3
High Performance Computing

This course provides students with knowledge and fundamental concepts of high performance computing as well as hands-on experience of the core technology in the field. The objective of this class is to understand how to achieve high performance on a wide range of computational platforms. Topics include: optimizing the performance of sequential programs based on modern computer memory hierarchies, parallel algorithm design, developing parallel programs using MPI, analyzing the performance of parallel programs.

Prerequisite(s): ((CS 300 or CS 338) and CS 301 and ECE 383) or permission of instructor.
CS
483
Hours
3
Computational Foundations of Machine Learning

This course offers a comprehensive overview of machine learning, encompassing both theoretical foundations and practical algorithmic approaches from multiple perspectives. The curriculum includes foundational learning theory, supervised learning with a particular emphasis on modern deep learning techniques, unsupervised learning, and reinforcement learning.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383)) and (MATH 355 or GES 255)
CS
484
Hours
3
Reinforcement Learning

This course covers fundamental principles, algorithms, and implementations of reinforcement learning, including the design of computational agents based on machine learning and control theory. The typical methods include reinforcement algorithms, dynamic programming, approximate functions, and temporal difference learning for policy evaluation and control problems. The course will involve the application of these concepts and methods in simulation or real-world problems as well as potentially in the context of psychology and neuroscience.

Prerequisite(s): CS 301 and (MATH 359 or ((CS 300 or CS 338) and ECE 383)) and (GES 255 or MATH 355)
CS
491
Hours
3
Special Topics

Formal courses that cover new and innovative topics in computer science and do not yet have their own course numbers. Specific course titles will be announced from time to time.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
Special Topics Course
CS
492
Hours
1-3
Special Prob (Area)

Reading and research course designed to meet the needs of individual students. CS 492 can be used to satisfy only one of the required 400-level computer science electives.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
Special Topics Course
CS
493
Hours
3
Special Problems in Software Engineering

Reading, research, and development course designed to meet the needs of individual students. This course is specifically for students pursuing the Software Engineering Concentration.

Prerequisite(s): (CS 300 or CS 338) and CS 301 and ECE 383
Special Topics Course
CS
494
Hours
1
CyberCorps Scholarship For Service Seminar

The CyberCorps© Scholarship for Service (SFS) Seminar is only for the students in the SFS@Bama program. This course will focus on important information necessary to be successful in a government cyber security career. The CyberCorps© SFS program prepares the next generation of cyber security employees to protect and defend the United States of America’s infrastructure from threats, attacks, and potential intrusions. The course will include briefings, presentations, job related tasks, job fairs, and guest speakers.

CS
495
Hours
3
Capstone Computing

A culminating capstone project course that integrates the skills and abilities throughout the curriculum into a comprehensive design and development experience for computer science majors. Writing proficiency is required for a passing grade in this course. A student who does not write with the skill normally required of an upper-division student will not earn a passing grade, no matter how well the student performs in other areas of the course.

Prerequisite(s): (CS 403 or CS 470) and (CS 407 or CS 416 or CS 420 or CS 428 or CS 435 or CS 438 or CS 442 or CS443 or CS 444 or CS 445 or CS 448 or CS 451 or CS 452 or CS 455 or CS 460 or CS 461 or CS 465 or CS 475 or CS 480 or CS 481 or CS 483 or CS 484) with grade of C- or higher
Experiential Learning, Writing
CS
499
Hours
3
Undergraduate Thesis Research

Independent research and participation within a faculty member's research group. Permission of the supervising faculty member is required.

Prerequisite(s): (CS 403 or CS 470) Minimum Grade of C- AND three additional hours of 400-level CS classes
Experiential Learning