Department of Computer Science

The Department of Computer Science at The University of Alabama is a part of the College of Engineering and offers a series of degrees that encompass the study of computers and algorithmic processes, including their foundational principles, their software designs, their various applications, and their impact on society. We cover the full range of foundational ideas of computer science in our curriculum, with areas of strength concentrated in software engineering, wireless networks, and robotics. Several recent grants from the National Science Foundation have supported development of a new curriculum that addresses computer science education in a way that promotes fresh and innovative pedagogy. We strongly encourage our undergraduate students to participate in research experiences, and we provide multiple opportunities that match student interests to ongoing research projects. Our faculty consists of practitioners who regularly interact with industry partners and bring that experience to the classroom.

Visit Department Website


Computer science is a multifaceted discipline that encompasses a broad range of topics. At one end of the spectrum, computer science focuses on the theoretical capabilities of computers and on the properties of various general problems and algorithms. At the other applications-oriented end of the spectrum, computer science deals with techniques for the design and construction of machines and with advanced applications of computers in all aspects of our society. Graduates of the program will be prepared for admission to graduate study or for immediate employment in business, industry, or government positions involving computer systems and techniques.


Interim Department Head
  • Susan V. Vrbsky
  • David Brown
  • Jeffrey Carver
  • David Cordes
  • Jeff Gray
  • Yang Xiao
Associate Professors
  • Monica Anderson
  • Richard Borie
  • Brandon Dixon
  • Xiaoyan Hong
  • John Lusth
  • Randy Smith
  • Jingyuan Zhang
Assistant Professors
  • Travis Atkison
  • Chris Crawford
  • Zhe Jiang
  • Aibek Musaev
  • Dingwen Tao
  • Leslie Dixon
  • Brandi Freeman
  • Kathleen Morris
  • Rebecca Odom-Bartel
  • Marc Skipwith
  • Maegan Slaten Biehn
  • Jennifer Watson
  • Kim Wright
Professor Emeritus
  • Allen Parrish


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): (MATH 112 and MATH 113) or MATH 115 or UA ACT Subject Math Placement 565 or UA Placement Mathematics 440
Prerequisite(s) with concurrency: MATH 125 or MATH 126 or MATH 145 or MATH 146
CS II for Majors

A second course in programming for students majoring in computer science. Using a high-level language, student 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 100 or CS 110 or RRS 102) and (MATH 125 or MATH 145)
Computer Science

View All Courses