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 (Undergraduate level MATH 112 Minimum Grade of C- and Undergraduate level MATH 113 Minimum Grade of C-) or Undergraduate level MATH 115 Minimum Grade of C-
CS
101
C
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
C
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
C
Hours
3
Computer Science Principles

An introductory course that overviews the core principles of computer science from a broad spectrum of topics. The course content is focused on computing and its relation to creativity, abstraction, algorithms, programming, Big Data, Internet/networking, and societal impact. Students will work on team-based projects that explore topics in Big Data, investigate the impact of the internet, and create their own games and/or smartphone applications. Students will use the graphical programming language Snap. 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
UH
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 (Undergraduate level MATH 112 Minimum Grade of C- and Undergraduate level MATH 113 Minimum Grade of C-) or Undergraduate level MATH 115 Minimum Grade of C-
University Honors
CS
111
UH
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
C
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
121
Hours
1
The Discipline of Computing

An introduction to the discipline of computing designed for students who are considering a major in Computer Science, a major in Cyber Security, or a minor in Computer Science.

Prerequisite(s): MATH 112 OR higher OR UA Math Placement Test Score of 370
Prerequisite(s) with concurrency: MATH 112 or MATH 113 or MATH 115 or MATH 125 or MATH 126 or MATH 145 or MATH 146
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
C
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
C
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) and MATH 301
Computer Science
CS
202
C
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. Computing proficiency is required for a passing grade in this course.

Computer Science
CS
223
C
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
285
C
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
300
Hours
3
Operating Systems

Study of basic operating system concepts with an emphasis on memory, processor, device, and information management.

Prerequisite(s): CS 200, CS 201
CS
301
W
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
C
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
C
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
C
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
C
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
Web 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
340
C
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
C
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
347
HU
Hours
3
Cyber Law and Ethics

We will analyze advanced legal and ethical issues confronting the usage of new technologies and how these issues impact society. We 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 we will study the intersection of human values, law and professional ethics.

Prerequisite(s): CS 100 or CS 110 or CS 223
Humanities
CS
385
C
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
SP
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, 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, 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, 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, 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, CS 301 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, CS 300, 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, 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, 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, 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, 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 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 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 300, CS 301, 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, 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, CS 301, and ECE 383 or permission of instructor for non-CS majors
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 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 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, 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, 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, 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 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 and ECE 383)) and (GES 255 or MATH 355)
CS
491
SP
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, CS 301 and ECE 383
Special Topics Course
CS
492
SP
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, CS 301 and ECE 383
Special Topics Course
CS
493
SP
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, 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
W
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
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 or CS 475) Minimum Grade of C- AND three additional hours of 400-level CS classes