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

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

CS 121

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

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.

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.

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.

CS 300

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

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.

CS 391

Special topics in computing.

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.

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.

CS 470

Construction of efficient algorithms for computer implementation.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

ENGR 161

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