Computer Science Degree

Computer Science degree with a Mathematics minor from the University of Alabama. Roll TIde 🐘

Computer Science Courses

CS I for Majors

CS 100

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.

CS II for Majors

CS 101

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.

The Discipline of Computing

CS 121

An introduction to the discipline of computing designed for students who are considering a major or minor in computer science.

Software Design and Engineering

CS 200

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.

Data Structures and Algorithms

CS 201

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.

Web Foundations

CS 202

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.

Operating Systems

CS 300

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

Database Management Systems

CS 301

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.

Special Topics

CS 391

Special topics in computing.

Programming Languages

CS 403

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.

Data Science

CS 451

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.

Computer Algorithms

CS 470

Construction of efficient algorithms for computer implementation.

High Performance Computing

CS 481

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.

Capstone Computing

CS 495

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.

Electrical Engineering

Digital Logic

ECE 380

Number systems, Boolean algebra, logic functions and gates, design of combinational logic systems, flip-flops, design of synchronous sequential systems, and iterative networks. Includes laboratory experiments.

Microcomputers

ECE 383

Microprocessors, microcontrollers, assembly-language programming, interrupts, polling and hardware interfaces. Computing proficiency is required for a passing grade in this course. Includes laboratory experiments.

Mathematics

Calculus II

MATH 126

This is the second of three courses in the basic calculus sequence. Topics include vectors and the geometry of space, applications of integration, integration techniques, L'Hopital's Rule, improper integrals, parametric equations, polar coordinates, conic sections and infinite series.

Calculus III

MATH 227

This is the third of three courses in the basic calculus sequence. Topics include: vector functions and motion in space; functions of two or more variables and their partial derivatives; and applications of partial derivatives (including Lagrange multipliers), quadric surfaces, multiple integration (including Jacobian), line integrals, Green's Theorem, vector analysis, surface integrals and Stokes' Theorem.

Introduction to Linear Algebra

MATH 237

Fundamentals of linear algebra and matrix theory are covered. Topics include vectors in Euclidean spaces, solving systems of linear equations, matrix algebra, inverses, determinants, eigenvalues, and eigenvectors. Also vector spaces and the basic notions of span, subspace, linear independence, basis, dimension, linear transformation, kernel and range are considered. Computing proficiency is required for a passing grade in this course.

Dicrete Mathematics

MATH 301

An introduction to mathematical logic and proof within the context of discrete structures. Topics include basic mathematical logic, elementary number theory, basic set theory, functions, and relations. 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.

Topics in Discrete Mathematics

MATH 302

A supplemental course in discrete mathematics covering select topics of interest in computer science. Topics include graphs and trees, finite state automata and regular expressions, efficiency of algorithms.

Theory of Probability

MATH 355

The foundations of the theory of probability, laws governing random phenomena and their practical applications in other fields. Topics include: probability spaces; properties of probability set functions; conditional probability; and an introduction to combinatorics, discrete random variables, expectation of discrete random variables, Chebyshev's Inequality, continuous variables and their distribution functions, and special densities.

Engineering

Engineering Foundations

ENGR 103

Introductory course for students in all engineering disciplines that provides the basic skills required for engineering with an emphasis on problem solving, sketching, teaming, oral and written technical communication, and the design process.

Small-Scale Engineering Graphics

ENGR 161

Two-dimensional representations of multiviews, sections, and auxiliaries will be generated.